Что такое big.LITTLE
Глоссарий

Посмотрите на свой смартфон — что он делает? Он не проявляет никаких признаков жизни, его экран не горит. Лежит спокойно и никого не трогает. Всё внутри. Сейчас он занимается миллионом вещей: опрашивает датчики, сенсоры и мобильную сеть, обновляет приложения, отправляет в интернет и получает обратно мегабайты информации.

Это все небольшие операции, но у них есть особенность — их очень много!

Прежде, чем приступить к объяснению архитектуры big.LITTLE, освежим наши знания: как современный процессор распараллеливает задачи на 1 ядре?

Вся работа ядра квантуется по времени. Квант — временной промежуток, на протяжении которого ядро выполняет однородную работу. Благодаря этому существуют многопоточные приложения: каждый из потоков делится на кванты и выполняется по очереди — сначала 1-й квант первого потока, потом 1-й квант второго потока, и так далее.

Проблема увеличения производительности

Из-за обилия процессов система создает очень много потоков. Тут и возникает первая проблема: задержки. Кому нравится тормозной смартфон?

Пример: отклик должен занимать максимум 300 единиц времени, а наш квант равен 10 единицам. Значит, мы не можем создать более 30 потоков на ядро. А если учесть еще то, что минимальная работа может занимать более 1 кванта процессора… Незавидная участь.

Пути решения проблемы

Есть 3 пути решения проблемы: уменьшение кванта времени, увеличение частоты ядра процессора, увеличение количества ядер.

Рассмотрим их по очереди.

Уменьшение кванта времени

К сожалению, примитивные операции занимают определенное фиксированное время, и делать квант времени меньше длительности этой операции — нет смысла. В любом случае мы упрёмся в предел.

Увеличение частоты ядра

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

Мощность процессора можно описать следующим законом: P ≈ C×V²×f, где C — динамическая емкость, V — напряжение, f — частота процессора. Совершенно не важно, что такое динамическая ёмкость — ужас в том, что напряжение в квадрате!

Напряжение нужно для работы транзисторов. Что такое транзистор? Это переключатель, который для работы накапливает заряд. Время накопления заряда пропорционально силе тока — чем сила тока больше, тем быстрее накапливается заряд.

По закону Ома сила тока пропорциональна напряжению — в итоге мы получаем P ≈ C×V³

А тактовая частота ядра зависит от скорости срабатывания процессора — при увеличении частоты в 2 раза энергопотребление вырастет в 8 раз! Значит, и отвод тепла должен быть эффективнее в 8 раз. Иначе процессор расплавится.

Поэтому тактовую частоту лучше не увеличивать.

Увеличение количества ядер

Такая схема позволяет генерировать большее количество потоков. Затраты энергии же увеличиваются приблизительно в 2 раза.

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

Преимущества архитектуры big.LITTLE

Мы выяснили: ядро не может работать только частично, а с ростом частоты космическими темпами увеличиваются энергопотребление и тепловыделение.

Решение — архитектура big.LITTLE: нескольких слабых ядер (для фоновых задач) и нескольких мощных ядер (запуск и выполнение приложений).

Благодаря «слабым» ядрам смартфон тратит меньше энергии на обеспечение своих базовых потребностей — тех самых многочисленных фоновых активностей, о которых вы даже не подозреваете. Благодаря «мощным» — выполняет все остальное.

Такая вот архитектура. Все-таки можно и рыбку съесть, и на стул сесть. Спасибо, что прочли этот текст.