Как стать автором
Обновить

Biostar Racing P1: холодный выхлоп

Время на прочтение6 мин
Количество просмотров8.8K

Не мы первые заметили, что компактные компьютеры типа Intel Compute Stick недостаточно хороши в плане производительности. Знакомясь с аналогичным устройством от Biostar, ожидания были не самые оптимистические. Как и младшие модели стик-компьютеров, Racing P1 работает на одном из самых сла­бень­ких процессоров семейства Atom Z8000. Впрочем, выбранный компанией Biostar чип x5-Z8350 пусть на одну ступеньку, но продуктивнее своего младшего собрата. Попробуем оценить про­из­во­ди­тель­ность данной платформы, которая стараниями Biostar уже не стик, но, правда, еще и не ноутбук.


Рис 1. Разъемы USB 3.0/2.0, слот для SD-карты, контакты подсветки, гнездо для наушников и кнопка включения поместились на лицевой панели

Используемые инструменты — банчмарк NCRB (NUMA CPU and RAM Benchmarks) для Win64 и кроссплатформенная утилита для идентификации процессора JavaCPUID.


Процессор


Инструкция CPUID подтверждает, что на платформе Biostar Racing P1 установлен процессор Intel Atom x5-Z8350. Его штатная частота равна 1.44 ГГц, что, однако, не мешает ему при необходимости законно разгоняться до 1,92 ГГц. Даже при непродолжительном знакомстве с этой платформой очевиден па­ра­докс: ее работа в диапазоне от 1,44 до 1,92 — скорее правило, чем исключение из него.


Рис 2. Заводские характеристики процессора Intel Atom x5-Z8350

Принятие решения процессором x5-Z8350 о выборе минимальной или штатной тактовой частоты и запуске режима Turbo выполняется на основании анализа нагрузки и рабочей температуры. Рамки SDP (Scenario Dissipated Power) определяют типичное энергопотребление устройства. Механизмы уп­рав­ле­ния самостоятельно оценивают ситуацию, и в случае «легкой» нагрузки снижают энергопотребление чипа. Возможность включить режим Turbo является функцией температуры, поэтому результаты летних и зимних тестов могут отличаться. В общем, Racing P1 тоже «переобувается» к сезону.


Выходя за рамки исследования отметим, что форсаж приводит к потреблению до 7 Ватт на силовых линиях ~220 В. Крейсерский режим Racing P1 уменьшает это значение приблизительно вполовину, режим сна требует чуть более 2 Вт от сети переменного тока (мониторинг потребления выполнялся обычным бытовым ваттметром).


Рис 3. CPUID о функциональных возможностях Intel Atom x5-Z8350

Intel Atom x5-Z8350 работает с данными, максимальная разрядность которых составляет 128 бит. Современные функциональные расширения AVX 256/512 не поддерживаются. Это значит, что нашим измерительным инструментом будет набор векторных инструкций SSE 128, а объектом измерений — кэш-память и динамическое ОЗУ.


Рис 4. Окно системной информации и выбора режима тестирования утилиты NCRB: меню слева отображает наборы инструкций, включая функциональные расширения, поддерживаемые процессором

Здесь уместно важное отступление: в общем случае максимальная разрядность операндов не оз­на­ча­ет максимальную производительность. Так, ряд процессоров AMD в конструктиве до AM2 вклю­чи­тель­но обрабатывают две 64-битных загрузки классическими инструкциями MOV быстрее, чем одну 128-бит­ную SSE-загрузку инструкцией MOVAPD. Вспомнив об этом, мы до начала измерений экс­пе­ри­мен­таль­но убедились — использование SSE для Atom x5-Z8350 действительно является наиболее про­из­во­ди­тель­ным сценарием.


Кэш-память L1


Обычно, объем кэш-памяти — величина, кратная степени двойки. На первом уровне производитель старается равномерно распределить ее между инструкциями и данными. Все эти каноны не со­блю­да­ют­ся архитектурой процессора x5-Z8350. У каждого из четырех его ядер 32 килобайта кэш-па­мя­ти для инструкций и 24 килобайта — для данных.


Рис 5. Классификация уровней кэш-памяти

В ряде источников приводится произведение размера кэш-памяти одного ядра на их количество, что дает более впечатляющее представление: 128KB кэш инструкций и 96KB кэш данных. Официальная страничка по традиции умалчивает о кэш-памяти L1, во всяком случае, на момент написания этой статьи.


Отметим, кэш-память нулевого уровня (подобная L1 Trace Cache), хранящая декодированные команды и повышающая эффективность коротких циклов, не декларируется инструкцией CPUID. Проверка ее наличия и анализ функционирования достойны отдельной публикации.


Теории и практика: производительность кэш-памяти


Измерение скорости кэш-памяти состоит в циклических операциях чтения или записи блока, размер которого меньше размера исследуемого уровня кэш, а потому операции доступа к данным являются кэш-попаданиями (cache hits). Фактически, выбор целевого объекта (L1, L2 cache или DRAM) оп­ре­де­ля­ет­ся размером обрабатываемого блока данных.


Задав тестируемую сущность, переходим к рассмотрению операции на уровне машинных команд. В нашем эксперименте используется развернутый цикл из шестнадцати SSE2-инструкций MOVAPD, каждая из которых передает 128-битный операнд между памятью и одним из XMM-регистров. В итоге за одну итерацию цикла полностью загружаются 16 регистров XMM0…XMM15.


Для полноты изложения заметим, что инструкция MOVAPD может использоваться и для передачи данных между двумя XMM-регистрами, но в нашем случае регистровые операции не дадут пред­став­ле­ние о производительности объектов памяти. Максимальную производительность обес­пе­чи­ва­ет обязательное для инструкции MOVAPD требование выравнивания: адрес операнда должен быть кратным 16 байтам (128 битам).



Бенчмарки кэш-памяти L1


Пока читаемый или записываемый блок меньше размера кэш-памяти L1 (на графике это ось X), скорость обмена высокая. Как только блок выходит за пределы L1 — возникают кэш-промахи и скорость падает. Очевидно, что при оценке производительности, информативной является «верхняя ступенька», соответствующая левому участку графика.


Рис 6. График зависимости скорости чтения блока данных от его размера;
окрестность X = Размер L1

Максимальная скорость в мегабайтах в секунду (MBPS) соответствует минимальному количеству тактов на инструкцию (CPI, Clocks Per Instruction) и составляет около 30 GBPS.


Рис 7. График зависимости скорости записи блока данных от его размера;
окрестность X = Размер L1

Как видно из графиков, точка перегиба для чтения L1 соответствует теоретической величине в 24 килобайта. Для записи, примененную в данном процессоре политику кэширования характеризует «раннее падение» скорости, что станет темой отдельного исследования. Но уже сейчас можно отметить — эта политика не способствует рекордным показателям скорости записи, хотя в ряде случаев, возможно, и позволяет избежать засорения L1 ненужными данными.


В полученных результатах отображается скорость, развиваемая одним ядром процессора Atom x5-Z8350. Ряд тестов, в частности AIDA64, показывают суммарную производительность всех ядер.


Проведем небольшой теоретический расчет, смоделировав пиковую пропускную способность. Для ис­сле­ду­е­мо­го CPU тактовая частота в режиме Turbo составляет 1920 МГц. За один такт передается 128 бит или 16 байт:

  • 1920 * 16 = 30720 (около 30 Гигабайт в секунду)

В качестве источника образцовых интервалов времени используется счетчик TSC (Time Stamp Counter). Поскольку ядро процессора и TSC в общем случае тактируются асинхронно, значения тактов TSC на инструкцию являются дробными величинами.


Убедимся, что процессор работает в режиме Turbo, опираясь на значения частот, указанные в до­ку­мен­та­ции. Один такт форсированной частоты ядра 1920 МГц составляет примерно 0,521 наносекунды. Один такт номинальной частоты 1440 МГц, на которой работает регистр Time Stamp Counter составляет примерно 0,694 наносекунды. Для инструкций, выполняемых за один такт, теоретическое значение количества тактов TSC на инструкцию (CPI) должно составлять

  • 0,521 / 0,694 = 0,750

Отображаемые измеренные значения Minimum CPI в пределах 0,759…0,767 достаточно близки к этому значению.


Кэш-память L2


Четыре ядра исследуемого процессора разделены на две группы, по два ядра в каждой. Общий размер кэш-памяти L2 составляет 2 МБ и поровну разделен между ними. Вывод очевиден: каждому ядру до­сту­пен 1 мегабайт кэш-памяти L2, доступ к которому делится с соседом по группе.



Бенчмарки кэш-памяти L2


Скорость L2-кэш — это центральная «ступенька», возникающая при соблюдении двойного неравенства 24 КБ < X < 1 МБ, — когда обрабатываемый блок данных уже не помещается в L1, но еще помещается в L2.


Рис 8. График зависимости скорости чтения блока данных от его размера;
окрестность X = Размер L2

Как видно из графиков, снижение скорости, обусловленное исчерпанием L2, происходит при пре­вы­ше­нии лимита в 1 МБ. Возможность «одолжить» кэш у соседней группы, передвинув момент спада ско­рос­ти к точ­ке 2 МБ, не обнаружена.


Рис 9. График зависимости скорости записи блока данных от его размера;
окрестность X = Размер L2

Оценка производительности L2-кэш по записи близка к показателям чтения: 12 против 11,5 GBPS. Теоретические предпосылки такого результата рассмотрим в следующей публикации.

Теги:
Хабы:
+9
Комментарии15

Публикации

Изменить настройки темы

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн