Google представил Си-библиотеку для определения возможностей CPU

Компания Google опубликовала библиотеку cpu_features, предназначенную для определения возможностей, поддерживаемых текущим CPU, таких как тип микроархитектуры и расширенные наборы инструкций AES, FMA, BMI, SSE, AVX и NEON. Поддерживается работа с процессорами на базе архитектур x86, ARM/AArch64 и MIPS. Код поставляется под лицензией Apache 2.0.

Библиотека преподносится как удобный способ на лету определить возможность использования той или иной расширенной функциональности, или принять решение по применению запасных обработчиков для устаревших систем. Недостающая функциональность библиотеки, необходимая для поддержки новых архитектур и определения возможностей CPU, может наращиваться через подключение расширений. Код написан в соответствии со спецификацией С89, что позволяет охватить большинство современных и устаревших компиляторов.

Библиотека также включает минимальный набор зависимостей и поддерживает разные стратегии определения функциональности CPU, что позволяет использовать её на разных платформах, в изолированных sandbox-окружениях и даже в условиях без возможности выполнить инструкцию cpuid.
Более того, в библиотеке не выполняются операции выделения памяти и не генерируются исключения, что даёт возможность использовать её в реализациях таких функций, как malloc, memcpy и memcmp.
Среди поддерживаемых методов определения функциональности отмечается инструкция cpuid, glibc-функция getauxval, /proc/self/auxv и /proc/cpuinfo.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.