Новости

30.08.2017

Российская компания Positive Technologies анонсировала ...

  • Все новости (36)
  • Разделы новостей

    Публикации

    Майнеру на заметку

    Утилиты

    Реклама

    Обзоры компьютерных гаджетов, которые должны быть всегда под рукой

        Яндекс.Метрика
    Главная » Программы » Идентификация SMP-возможностей

    Идентификация SMP-возможностей

    Для получения информации о мультипроцессорной топологии платформы, а также запуска заданных процедур с целью их выполнения на процессорах AP (Application Processors) в составе низкоуровневого программного обеспечения UEFI опционально поддерживается набор функций EFI_MP_SERVICES_PROTOCOL. Утилита SmpDetect.efi детектирует наличие данного протокола и обеспечивает получение информации о количестве логических процессоров вычислительной платформы. Утилита предназначена для выполнения в среде x64 UEFI.

    Контекст UEFI firmware ориентирован на однопотоковое выполнение программного кода, функции UEFI API не являются реентерабельными и не поддерживают многозадачность. Вместе с тем, параллельное выполнение процедур, не использующих UEFI API, допускается. В отличие от Legacy BIOS, UEFI firmware предоставляет ряд сервисных функций, обеспечивающих инициализацию мультипроцессорной платформы и избавляющих системного программиста от необходимости непосредственного взаимодействия с регистрами контроллеров прерываний Local APIC, а также переключения процессоров AP в режим Protected Mode. Заметим, что после инициализации, процессоры AP функционируют в 16-битном режиме Real Mode и обеспечение их взаимодействия с процессором BSP, работающим в Protected Mode 64, является нетривиальной задачей.

    Структура интерфейсного блока EFI_MP_SERVICES_PROTOCOL

    Рис 1. Структура интерфейсного блока EFI_MP_SERVICES_PROTOCOL

    Проверка на ноутбуке ASUS N750JK показала наличие рассматриваемой функциональности. Используемый процессор i7-4700HQ 2400MHz содержит 4 ядра, каждое из которых обеспечивает 2 логических процессора за счет технологии Hyper-Threading. Получаем такой результат:

    UEFI multiprocessing features detect utility.
    (C) IC Book Labs. 15.04.2015
    Protocol detection status = 0000000000000000h
    Protocol structure pointer = 00000000CAFB91D0h
    Processors detection status = 0000000000000000h
    Number of processors = 8
    Number of enabled processors = 8

    Нулевое значение UEFI Status указывает на отсутствие ошибок. Параметр Protocol structure pointer определяет адрес интерфейсного блока, сформированного UEFI firmware для обеспечения доступа к функциям протокола. Интерфейсный блок состоит из 64-битных указателей для вызова процедур поддержки функций.

    Параметры Number of processors и Number of enabled processors содержат соответственно общее количество логических процессоров платформы и количество логических процессоров, разрешенных для использования по результатам выполнения процедуры BIOS POST. Заметим, что часть процессоров могут быть недоступны в силу установки опций CMOS Setup или вследствие возможных ошибок, обнаруженных при тестировании.

    Запуск утилиты на виртуальной машине Oracle VMbox выявил отсутствие поддержки данного протокола в firmware виртуальной машины. Конфигурация рассматриваемой виртуальной машины использует один логический процессор, хотя теоретически это и не исключает поддержку функций управления мультипроцессорной системой, которые в этом случае должны возвращать количество процессоров, равное 1.



    24.09.2017