Секреты архитектуры big.LITTLE


PDF версия

В статье рассказывается об архитектуре ARM big.LITTLE, сочетающей высокую производительность Cortex-A15 и низкое потребление Cortex-A7.

Диапазон производительности, который должен быть у современной мобильной платформы, сложно предугадать заранее. Пользователи рассчитывают на многофункциональные платформы, выполняющие сложные задачи (обработку видео или просмотр веб-страниц) и при этом способные долгое время работать от аккумулятора при выполнении простых задач (чтение текста, прослушивание аудио или просмотр почты).
В первой системе big.LITTLE от ARM используются два процессора: большой — Cortex-A15 и малый — Cortex-A7. Вместе они образуют оптимальное по расходу энергии решение, позволяющее выполнять как простые, так и сложные вычислительные задачи. Процессоры соединены когерентно системой CCI-400. Это позволяет реализовать практически любую модель в соответствии с объемом вычислений в приложении.

Процессоры

Основной принцип big.LITTLE заключается в том, что процессоры имеют идентичную архитектуру ARM v7A, в том числе идентичные блоки визуализации и поддержки длинных физических адресов. Соответственно, все инструкции выполняются одинаково с точки зрения архитектуры, но с разным быстродействием. Оба процессора имеют от одного до четырех ядер и кэш-память 2 уровня. Кроме того, предусмотрен когерентный интерфейс AMBA 4 для подключения к когерентным межсоединениям, таким как CCI-400.
Процессоры различаются на уровне микроархитектуры. Из рисунка 1 видно, что Cortex-А7 — упорядоченный несимметричный двойной процессор с глубиной конвейера 8–10 уровней. В Cortex-A15 (см. рис. 2) применяется внеочередное выполнение инструкций, а глубина конвейера составляет 15–24 уровня.

 

Рис. 1. Микроархитектура Cortex-A7

Потребление энергии при выполнении инструкции частично зависит от количества задействованных ступеней конвейера, отсюда возникает разница между потреблением Cortex-A15 и а7. Процессоры имеют различные приоритеты при оптимизации — в Cortex a15 достигается максимальная производительность за счет потребления, а в а7 наоборот во главу угла ставится энергоэффективность. Именно по этой причине каждый процессор имеет собственный кэш второго уровня, а не один объединенный, как это можно было сделать из соображений оптимизации площади кристалла.

 

Рис. 2. Микроархитектура Cortex-A15

Ключевые различия характеристик процессоров при выполнении некоторых типичных операций приведены в таблице 1. В первой колонке приводится выигрыш в производительности между Cortex-A7 и Cortex-A15, во второй — разница по производительности и потреблению (энергоэффективности). При сравнении использовался один и тот же набор библиотек. Код, выполняемый Сortex-A7, скомпилирован для Cortex-A15.

Таблица 1. Сравнение производительности и энерго­эффективности Cortex-A15 и Cortex-A7

 

A15 против A7

Производи­тель­ность, раз

A7 против A15

Энергоэф­фек­тив­ность, раз

Dhrystone

1,9

3,5

FDCT

2,3

3,8

IMDCT

3,0

3,0

MemCopy L1

1,9

2,3

MemCopy L2

1,9

3,4

Следует отметить, что несмотря на название «малый», Cortex-A7 имеет большой потенциал по производительности. За счет особой микроархитектуры он превосходит по производительности Cortex-A8. Соответственно, большая часть вычислительных операций может производиться без обращения к Cortex-A15.

Система big.LITTLE

Рассмотрим остальные блоки big.LITTLE. Одним из ключевых элементов является система межсоединений CCI-400 (см. рис. 3), которая обеспечивает полную согласованность между Cortex-A15 и Cortex-A7, а также устройствами ввода-вывода. Следующий элемент — контроллер прерываний (GIC-400, Generic Interrupt Controller). Он способен распределить до 480 прерываний, причем прерывания могут направляться в любое ядро в кластере Cortex-A15 или Cortex-A7. Трассировка и отладка big.LITTLE осуществляется с помощью СнК CoreSight. В то же время для Cortex-A15 или Cortex-A7 разработаны собственные решения, совместимые с архитектурой Debug v7.1.

 

Рис. 3. Структура big.LITTLE

Система big.LITTLE является оптимальной для любой модели использования, поэтому в ней нет конфигурируемых параметров, которые задаются исходя из конкретной модели. Однако для упрощения программной части, отвечающей за распределение задач, рекомендуется использовать одинаковое количество ядер в кластерах Cortex-A15 и Cortex-A7.

Планировщик задач

Планировщик на основе big.LITTLE распределяет задачи операционной системы (ОС) и приложений так, чтобы они выполнялись только на одном процессоре в каждый момент времени. Это своего рода расширение модели динамического масштабирования напряжения и частоты (DVFS — Dynamic Voltage and Frequency Scaling), в которой рабочие точки выбраны для существующих мобильных платформ с одним прикладным процессором так, чтобы быстродействие ОС удовлетворяло требования приложения.
На платформе big.LITTLE рабочие точки применяются к обоим процессорам. Когда обработка выполняется только на Cortex-A7, ОС назначает рабочие точки так же, как и для системы с одним процессором. В случае если производительности Cortex-A7 не хватает, планировщик переносит обработку на Cortex-A15 (см. рис. 4). Таким образом приложения с небольшим и средним объемом вычислений выполняются на малом процессоре с меньшим расходом энергии. Более сложные приложения, например, предназначенные для современных смартфонов, выполняются на большом процессоре.

 

Рис. 4. Сравнение Cortex-A15 и Cortex-A7

Важным параметром является интервал времени, который требуется для пересылки задачи из одного кластера в другой. Если он будет слишком большим, то весь выигрыш может быть потерян. Процедура не должна превышать 20 тыс. циклов, или 20 мкс при частоте процессора 1 ГГц. Чтобы перенос задачи занимал мало времени, необходимо свести к минимуму ресурсы процессора, которые задействуются при переносе. Конфигурация регистров CP15 и значения целочисленных и расширенных регистров SIMD процессора, с которого переносится задача, должны быть сохранены. Эти данные будут использованы в принимающем процессоре. Переносятся все активные прерывания, которые находятся в обработке GIC-400. На процедуры сохранения и восстановления требуется менее 2000 инструкций. Поскольку процессоры имеют одинаковую архитектуру, между регистрами состояния существует взаимно однозначное соответствие.
Процесс переноса задачи в другой кластер схематично изображен на рисунке 5. Связность кластеров — ключевой фактор для обеспечения быстрого переноса задачи. Данные, сохраненные на передающем процессоре, отслеживаются и восстанавливаются на принимающем, минуя основной блок памяти. Поскольку кэш второго уровня является когерентным, он остается включенным после переноса задачи, чтобы за счет отслеживания значений уменьшить время прогрева кэша принимающего процессора. Однако в целях уменьшения тока утечки его через некоторое время следует очистить и выключить.
Отметим, что в процессе переноса задачи сохраняется нормальный ход выполнения потока. Единственное исключение — момент переноса прерываний.

 

Рис. 5. Процесс переноса задач между процессорами

 

Параллельная обработка

Вторая типичная модель использования big.LITTLE — одновременное включение обоих процессоров для параллельного выполнения кода. Она получила обозначение МР и, по сути, осуществляет многопроцессорную обработку. При этом Cortex-A15 включается только в том случае, если имеется поток, для которого необходима высокая производительность. Иначе работает только процессор Cortex-А7.
Система big.LITTLE — самая оптимальная платформа для обработки потоков, использующая наиболее подходящий набор ресурсов. Потоки с большим объемом вычислений выполняются на Cortex-A15. Задачи, предполагающие большое количество операций ввода-вывода, или не критичные ко времени вычисления, могут выполняться на Cortex-A7.
Простым примером не критичного ко времени потока служит проверка почты. Во время просмотра страниц информация о наличии новых сообщений должна обновляться. При этом нет разницы, на каком из процессоров это выполняется. Cortex-A7 более экономичен, поэтому лучше подходит для данной задачи, хотя на ее выполнение уйдет немного больше времени.
Наконец, поскольку в полностью связанной системе может образоваться значительный объем когерентных операций, в big.LITTLE предусмотрен вариант поведения при самом худшем сценарии. В частности предусмотрен случай, когда графический процессор Mali-T604 подключен к одному из связанных портов ввода-вывода CCI-400, и при каждой операции производится слежение за Cortex-A15 и Cortex-A7, которые одновременно отслеживают состояния друг друга.

Программное обеспечение

Для big.LITTLE разработан программный коммутатор Cortex-A15, Cortex-A7, CCI-400 и GIC-400. Он предоставляет все механизмы для переноса задач между Cortex-A15 и Cortex-A7. Помимо сохранения и восстановления состояния процессора с помощью коммутатора осуществляется настройка процессора на когерентную работу или выход из этого режима, а также управление слежением и перенос прерываний. Программный код коммутатора может быть использован в качестве основы для встраивания в ОС.
Коммутатор обеспечивает сокрытие различий между Cortex-A15 и Cortex-A7 от ОС. Хотя Cortex-A15 и Cortex-A7 архитектурно идентичны, и все регистры считываются и записываются сходным образом, содержимое регистров не всегда одинаково. Например, содержимое главного регистра ID, который идентифицирует процессор, всегда различается. Такая же ситуация с регистрами CP15, в которых содержатся настройки кэша первого и второго уровней. Процессоры Cortex-A15 и Cortex-A7 поддерживают виртуальный доступ ОС к этим регист­рам, поэтому эти различия могут быть перенесены на уровень гипервизора. Программный коммутатор позволяет использовать на big.LITTLE существующие ОС.

Заключение

Мы рассмотрели первую систему big.LITTLE от ARM. Сочетание пол­ностью согласованных процессоров Cortex-A15 и Cortex-A7 открывает новые возможности обработки, недоступные в современных высокопроизводительных мобильных платформах. В отличие от однопроцессорных систем, в которых сложно найти компромисс при выполнении задач с высокой и низкой интенсивностью, система big.LITTLE сочетает очень высокую производительность Cortex-A15 и высокую эффективность расхода энергии Cortex-A7. Благодаря конструктивным особенностям и многообразию моделей использования система big.LITTLE позволяет повысить производительность и увеличить время работы элементов питания в мобильных платформах следующего поколения.

Литература
1. Greenhalgh Р. Big.LITTLE processing with ARM Cortex-A15 & Cortex-A7//www.eetimes.com.

Оставьте отзыв

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