Кроссплатформенная Оценка Графических Возможностей В Контексте Uefi

В отличие от систем x86, использующих UEFI ( Унифицированный расширяемый интерфейс встроенного ПО ) на платформах ARM не попал в топ IT-новостей.

Это не означает, что расширяемый интерфейс проприетарного программного обеспечения — идея только для рынка персональных компьютеров.

Спецификация UEFI декларирует универсальные подходы к инициализации любого оборудования и его взаимодействия с операционной системой.

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

до запуска поддержки драйверов.

Особенно интересно посмотреть, как работает графика на конкурирующих процессорных платформах.

Так ли он хорош, как говорят его производители? Примеров для сравнения можно сколько угодно — NVidia, например, производит Tegra для работы с ARM, а GeForce для персональных систем.

Чтобы ответить на поставленный вопрос, мы решили Утилита UEFImark , измеряющий скорость записи в видеопамять и отображающий информацию о графических возможностях системы, доставляет на рельсах Байт-код EFI .

Как вы знаете, байт-код EFI (EBC) довольно элегантен.

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



Работа с графикой

Для визуализации графической информации в среде UEFI, а также в качестве объекта для тестов используется Республиканская партия ( Протокол вывода графики ).

В этом протоколе UEFI используется функция БЛТ ( Блок трансфер ).

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

В отличие от UEFImark x64 Edition, UEFImark EBC Edition не использует прямой доступ к видеопамяти, поскольку системы, отличные от ПК, могут не поддерживать этот метод рендеринга.

Для объявления такой ситуации предусмотрен специальный атрибут BltOnly. Точнее, планируется использовать прямой доступ к видеопамяти, но только при обнаружении x86-совместимой платформы и наличии видеопамяти в адресном пространстве.



Тесты

Обратимся к последней строке экрана системной информации – GOP.BLT, FPS. Он содержит два параметра:
  • Параметр Fill является результатом измерения производительности процедуры GOP.BLT.Fill, которая строит монотонный прямоугольник на экране, заполняя заданные области видеопамяти заданной константой.

  • Параметр Copy является результатом измерения производительности процедуры GOP.BLT.Copy, которая конструирует на экране прямоугольник, содержимое пикселей которого предоставляется этой процедуре в буфере, расположенном в оперативной памяти.

    Содержимое этого буфера копируется в указанные области видеопамяти.



Кроссплатформенная оценка графических возможностей в контексте UEFI

Результат запуска утилиты UEFImark EBC Edition на платформе ASUS T100T, оснащенной 64-битным процессором Intel Atom Z3740, с 32-битной прошивкой UEFI. В этих тестах размер прямоугольника устанавливается равным размеру экрана.

Для измерения времени используется таймер, реализованный в рамках CPU Architectural Protocol (CAP), способ доступа к которому не зависит от аппаратных особенностей платформы.

Объем видеопамяти, используемый для представления экрана, зависит от разрешения по горизонтали и вертикали, а также от количества бит на пиксель.

Соответственно, чем выше разрешение и количество бит на пиксель, тем больший объем необходимо обработать.

Поэтому количество кадров в секунду или FPS (кадров в секунду) будет разным для разных режимов видео.

При сравнении производительности двух систем им требуются одинаковые видеорежимы.



Кадры или мегабайты в секунду

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

При использовании технологий GOP.BLT и UEFI API это условие не может быть выполнено, поскольку вызываемая процедура API выполняет не только саму передачу блока, но и ряд вспомогательных операций.

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

Отладка функций

Предстоящая версия 0.13 поддерживает выдачу 8-битных отладочных кодов на 8-битный порт с адресом 80h. При отладке используется устройство IC80v5.0 произведено IC Book Labs. В целях обеспечения работоспособности программы на платформах с архитектурой, отличной от x86, коды выдаются на порт 80h только в случае успешного определения платформы x86 в сочетании с прошивкой IA32 EFI или x64 UEFI. Для обеспечения работоспособности в эмулируемой среде коды выдаются на порт 80h только в том случае, если программа работает в режиме супервизора, а именно текущий уровень привилегий (CPL), определяемый битами [1,0] регистра сегмента кода (CS), равно нулю, что означает отсутствие эмулятора или отсутствие режима перехвата обращений к портам ввода-вывода.

Опыт показал, что вывод на порт 80h может привести к сбою эмулятора.



Краткое содержание

Поддержка EBC реализована сегодня в рамках прошивок UEFI следующих четырех типов платформ: IA32, x64, IPF (семейство процессоров Itanium) и ARM, поэтому наша программа-максимум такова: функционал информационной утилиты UEFImark v0.96, реализованный сегодня исключительно для среды UEFI x64, предоставляет UEFImark EBC Edition в одной утилите для четырех типов платформ, перечисленных выше.

Теги: #UEFI #EBC #Байт-код EFI #UEFImark #Ненормальное программирование #UEFI

Вместе с данным постом часто просматривают: