- •Глава 32. Особенности структуры ядер процессоров для мобильных и встраиваемых систем
- •32.1. О процессорах Cortex a, Cortex m
- •32.2. Ядра процессоров Cortex-a Ядро процессора Cortex-a5
- •Ядро процессора Cortex-a9
- •Ядро процессора Cortex a7 Характеристики ядра:
- •32.3. Ядра процессоров Cortex-m
- •32.4. Ядра однокристальных систем фирмы Intel со структурой Silvermont
- •32.5. Контрольные вопросы
Ядро процессора Cortex a7 Характеристики ядра:
архитектура ARMv7;
размер ядра 0,5 мм2 при использовании 28-нм техпроцесса;
8-ступенчатый конвейер;
степень суперскалярности - 2. Это означает, что подсистема подготовки команд ежетактно может генерировать для выполнения 2 команды.
математический сопроцессор имеет полностью конвейерную организацию;
выполняет команды в заданной программистом последовательности (отсутствует внеочередное выполнение команд);
имеет модуль предсказания ветвлений и уменьшенный конвейер, сокращающий вероятность неправильного предсказания перехода;
реализованы улучшенные алгоритмы выборки команд;
более скоростная кеш-память второго уровня L2, что также позволило увеличить общую эффективность вычислений.
является на 100% совместимым по системе команд с ядром Cortex A15, то есть поддерживают команды виртуализации и 40-разрядную адресацию оперативной памяти. В результате любая программа, написанная для процессора Cortex A15, может выполняться на процессоре Cortex A7, только медленнее. Это очень важная характеристика, которая позволяет производителям проектировать системы на кристалле, оснащённые как ядрами Cortex A7, так и Cortex A15, переключаясь между ними в зависимости от задачи. Фирма ARM называет это конфигурацией big.LITTLE.
переключение между различными ядрами осуществляется за 20 миллисекунд.
Такая структура оказывается полностью прозрачной для операционной системы (ОС) и нет необходимости в программных оптимизациях для увеличения энергоэффективности. Впрочем, предусмотрена возможность ставить ОС в известность о реальном числе вычислительных ядер, если это необходимо.
На базе ядер Cortex A7 создавались процессоры, оснащённые от 1 до 4 таких ядер, как самостоятельных, так и в конфигурации с Cortex A15.
Микросхемы с ядрами Cortex A7 применяются как в одно-, так и в многоядерных устройствах.
Ядро процессора Cortex-A8
Характеристики ядра:
архитектура ARMv7;
двойной симметричный конвейер с упреждающей выборкой;
суперскалярное ядро;
13-ступенчатый конвейер;
кэш-память-память второго уровня, емкость кэш-памяти второго уровня - от 64К байт до 2М байт;
ряд фирменных подсистем (Jazelle, TrustZone и так далее);
ориентировано на задачи, требующие достаточно высокого быстродействия (на уровне 2000 MIPS Dhrystone) при невысоком энергопотреблении и тепловыделении.
ядро Cortex-A8 работало при частотах до 1 ГГц;
65-нм технологический процесс;
максимальное энергопотребление составляло 300 мВт.
Структура ядра Cortex-A8 приведена на рис. 32.3.
Рис. 32.3. Структура ядра Cortex-A8
В ядре реализована система команд Thumb 2 (обеспечивалась "упаковка" 32-разрядных команд в 16-разрядные, что уменьшало размер программ и важно при подготовке модулей, записываемых в постоянную память). Уменьшение размера программ при использовании режима Thumb 2 связано с внесением в систему команд ряда дополнительных команд (около 130 команд). Поскольку Thumb - 16-разрядная система команд, на которую отображается основное подмножество 32-разрядных команд ARM, но поскольку оставались "неэмулируемые" команды, приходилось писать дополнительные программы для реализации тех действий, которые решает единственная 32-разрядная команда.
Важнейшая особенность - отсутствие необходимости переключаться между режимами ARM и Thumb при обработке прерываний и доступ к полному набору регистров. В итоге сохраняется малый размер программ, свойственный режиму Thumb, и скорость, как правило, на уровне программ с 32-разрядными командами ARM.
Сопроцессор NEON предназначался для повышения быстродействия при обработке потоковых данных. У него была собственная система команд, с собственным набором регистров и конвейером. Она позволяла обрабатывать как целочисленную арифметику, так и с плавающей точкой, возможность загрузки структурированных данных (допускалась работа с данными, не выровненными по границам машинного слова, байта и т. д.).
Средства Jazelle RCT обеспечивали снижение размера Java-программ (до 70%) за счет динамического преобразования (JIT) байт-кода (что закономерно повышало скорость и снижало энергопотребление).
TrustZone - традиционная для ARM система реализации защиты. Фактически она позволяла динамически переключать процессор в "безопасный" режим и общий, причем в первом допускалось выполнение только "безопасных" программ (например, размещенных в заранее заданном блоке).
Улучшена подсистема вычислений с плавающей точкой (версия VFPv3). В частности, до 32 увеличено число регистров для вычислений с двойной точностью, реализованы команды для преобразования чисел с плавающей и фиксированной точкой.
С технической точки зрения одной из наиболее существенных особенностей была система "статического планирования" для суперскалярного конвейера.
Конвейер - 13-ступенчатый, на протяжении работы собиралась статистика, которая затем использовалась при предсказании ветвлений (размещалась в буфер меток перехода и глобальный буфер хронологии). Кроме ветвлений, прогнозировался и стек возвращения (для прогнозирования адресов возврата из подпрограмм).
Схема кэш-памяти была достаточно сложна, но главный эффект в росте производительности обеспечивало появление кэш-памяти второго уровня. Благодаря этой кэш-памяти удалось существенно снизить не только количество обращений к оперативной памяти и число циклов ожидания (с этим вполне справлялся и кэш-память первого уровня), но и число конфликтов на главной системной шине.
Обработка команд сопроцессора NEON начиналась в конце главного конвейера (соответственно, все предсказания ветвлений, результаты операции и прочее уже отработаны), и, что важнее, все необходимые данные уже находятся в кэш-памяти первого уровня.
Средства буферизации данных между блоками ядра и сопроцессором NEON также позволяли нивелировать влияние многоступенчатой буферизации при изменении содержимого кэш-памяти (для потоковых данных это могло быть критично). Сам модуль NEON не связан с главным целочисленным конвейером ядра.
Подсистема выполнения команд позволяла выбирать до двух правильных команд сопроцессора NEON за цикл, в сопроцессоре NEON имелась 128-разрядная шина и собственные средства работы с кэш-памятью, а также три целочисленных конвейера SIMD, конвейер загрузки, два конвейера для вычислений с плавающей точкой (с одинарной точностью) и модуль векторных вычислений. Вычисления велись скалярно, поскольку логика предсказания ветвлений и обработки неправильных предсказаний в этом случае привела бы к потере производительности.
Ядро процессора Cortex A9
Структура ядра процессора Cortex-A9 приведена на рис.32.4.
Рис. 32.4.Структура ядра процессора ARM Cortex-A9.
Ядро Cortex-A9 предназначалось для использования в высокопроизводительных смартфонах и планшетах.
Ядро процессора Cortex-A15
Характеристики ядра Cortex-A15:
13-стадийный конвейер;
поддерживает внеочередное выполнение команд и виртуализацию;
является развитием ядра Cortex-A9. Они имеют схожую структуру.
может работать на частоте 2.5 ГГц;
имеет кэш-память первого уровня;
имеет до 4 Мбайт распределенной кэш-памяти второго уровня с низким уровнем задержек;
блок обработки чисел с плавающей точкой (FPU);
сопроцессор NEON;
в теории может адресовать до 1 Тбайт оперативной памяти;
процессор имеет 128-разрядный когерентный интерфейс, который может быть использован для связи с другими блоками и периферией.
Ядро процессора Cortex-A15 из всех предыдущих ядер фирмы ARM наиболее близко к ядрам процессоров с архитектурой IA-32/64 по количеству и качеству блоков.
Характеристики некоторых структур ядер приведены в таблице 32.1.
Таблица 32.1.
Архитектура |
||||||
|
ARM11 |
ARM Cortex A7 |
ARM Cortex A8 |
ARM Cortex A9 |
Qualcomm Scorpion |
Qualcomm Krait |
Декодирова-ние |
1 команда |
1-2 команды |
2 команды |
2 команды |
2 команды |
3 команды |
Длина конвейера |
8 ступеней |
8 ступеней |
13 ступеней |
8 ступеней |
10 ступеней |
11 ступеней |
Внеочередное выполнение команд |
нет |
нет |
нет |
да |
да |
да |
Технология NEON |
- |
да |
нет |
да |
частично |
да |
Технологичес-кий процесс |
90 нм |
40 нм/ 28 нм |
65 нм/ 45 нм |
40 нм |
40 нм |
28 нм |
Частота |
412 МГц |
1.5 ГГц (28 нм) |
600 Гц/ 1 ГГц |
1.2 ГГц |
1 ГГц |
1.5 ГГц
|
