cpuinfo

Библиотека для программного определения характеристик процессора во время выполнения. Она предоставляет API для получения детальной информации о CPU: производителе, модели, микроархитектуре, количестве ядер, размерах кэша, поддержке наборов инструкций (SIMD, виртуализация) и топологии процессорной системы. Библиотека использует низкоуровневые методы доступа к регистрам процессора, системным таблицам (ACPI, SMBIOS) и операционной системе для сбора максимально точных данных о процессорной архитектуре.

Особенности

  • кроссплатформенность (Linux, Windows, macOS, Android, iOS, BSD);
  • определение производителя (Intel, AMD, ARM, Apple Silicon) и микроархитектуры;
  • обнаружение поддержки расширений инструкций (SSE, AVX, NEON, SVE и др.);
  • анализ топологии процессора (ядра, потоки, NUMA-узлы, кэш-память);
  • минимальные зависимости и высокая производительность работы.

Основные компоненты

Библиотека предоставляет набор функций и структур данных для доступа к информации о процессоре (подробнее с документацией можно ознакомиться здесь):

Инициализация и базовые функции

API для первичной настройки библиотеки, включающий функции сбора процессорной информации через низкоуровневые интерфейсы (CPUID, системные вызовы, таблицы ACPI/SMBIOS). Обеспечивает базовые операции: инициализацию внутренних структур, освобождение ресурсов, получение количества логических процессоров и физических ядер системы:

  • cpuinfo_initialize() — инициализация библиотеки и сбор информации о процессоре;
  • cpuinfo_deinitialize() — освобождение ресурсов библиотеки;
  • cpuinfo_processors_count() — получение общего количества логических процессоров;
  • cpuinfo_cores_count() — получение количества физических ядер.

Информация о процессорах и ядрах

Интерфейс доступа к структурированным данным о процессорных элементах, включая массивы структур cpuinfo_processor (логические процессоры) и cpuinfo_core (физические ядра). Предоставляет детальную информацию о производителе, микроархитектуре, частотах и взаимосвязях между компонентами системы:

  • cpuinfo_get_processors() — получение массива структур cpuinfo_processor для всех логических процессоров;
  • cpuinfo_get_cores() — получение массива структур cpuinfo_core для физических ядер;
  • cpuinfo_get_packages() — получение информации о физических процессорных пакетах (сокетах).

Характеристики процессора

Функции идентификации специфических параметров CPU: определение вендора и микроархитектуры, получение размеров и ассоциативности кэш-памяти всех уровней (L1-L4), частотных диапазонов работы процессора и поддержки технологий виртуализации:

  • cpuinfo_get_vendor() — определение производителя процессора (Intel, AMD, ARM и др.);
  • cpuinfo_get_uarch() — получение микроархитектуры процессора;
  • cpuinfo_get_cache() — информация об уровнях кэш-памяти (L1, L2, L3);
  • cpuinfo_get_max_frequency() и cpuinfo_get_min_frequency() — максимальная и минимальная частоты процессора.

Поддержка инструкций

API детекции расширений наборов инструкций через проверку флагов CPUID и системных регистров. Включает проверки для векторных (SSE/AVX/NEON/SVE), криптографических (AES-NI/SHA), битовых (BMI) расширений и технологий безопасности (SGX/TrustZone):

  • cpuinfo_has_x86_*() — семейство функций для проверки поддержки x86-инструкций (SSE, AVX, AESNI, BMI и др.);
  • cpuinfo_has_arm_*() — семейство функций для проверки поддержки ARM-инструкций (NEON, SVE, Cryptography Extensions);
  • cpuinfo_has_riscv_*() — функции для проверки RISC-V расширений.

Топология системы

Интерфейс анализа иерархической организации процессора: определение кластеров ядер, топологии кэш-памяти (разделяемые/эксклюзивные кэши), распределения по NUMA-узлам и связей между физическими ядрами и кэш-памятью разных уровней:

  • cpuinfo_get_clusters_count() — количество кластеров (групп ядер с одинаковой микроархитектурой);
  • cpuinfo_get_l1i_cache(), cpuinfo_get_l1d_cache(), cpuinfo_get_l2_cache(), cpuinfo_get_l3_cache() — информация о кэш-памяти разных уровней;
  • cpuinfo_get_max_cache_size() — максимальный размер совместно используемого кэша.

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "cpuinfo/cci.20231129@aurora",
    )    

Процесс локальной сборки описан в документации.

cpuinfo

cpuinfo is a library to detect essential for performance
Лицензия
BSD-2-Clause
Версия
Домашняя страница
Скачать
armv8
36.39 Kb
MD5: 49e5aa1301424afa105c09f201e3bd1e
Updated: 04.09.2025, 09:37:56
armv7
36.84 Kb
MD5: 236df3a2151446abe54f89e2675fd4a1
Updated: 04.09.2025, 09:38:07
x86_64
31.59 Kb
MD5: 93b5d0265cd5c36d542e85371c6e1b11
Updated: 04.09.2025, 09:38:09
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.