Всем привет, на этот раз мы будем писать статью про ARM
Arm используют в ряде технологий интегрированных в устройства SoC (System-on-Chip), простым языком для смартфонов, микрокомпьютеры и даже суперкомпьютеры. Как говорят Arm: «Мы обозначают эту архитектуру как функциональную спецификацию». Далее Arm мы будем рассматривать как функциональную спецификацию процессора. Arm архитектура включает в себя не только ядро, а также предоставляет спецификации для описания требований к системе содержащей процессор.
Думаю стоит начать с BSA (Base System Architecture)-это описание аппаратной части архитектуры, на которую полагается программное обеспечение. BSA охватывает многое, например:контроллер прерываний, таймеры и другие распространенные устройства, необходимые операционной системе. BBR (Base Boot Requirements)-охватывает требования основанным на архитектуре Arm и на которые могут полагаться операционные системы и гипервизоры. Эта спецификация устанавливает требования к интерфейсу микропрограммного обеспечения, такие как PSCI, SMCCC, UEFI, ACPI и SMBIOS. BBR также предоставляет рецепты для конкретных сценариев использования, например SBBR: Определение требований UEFI, ACPI и SMBIOS для загрузки универсальных готовых операционных систем и гипервизоров, таких как Windows, VMware, RHEL, Oracle Linux и Amazon Linux. SBBR также поддерживает другие операционные системы, такие как Debian, Fedora, CentOS, SLES, Ubuntu, openSUSE, FreeBSD и NetBSD. EBBR: Определение, наряду со спецификацией EBBR, требований UEFI для загрузки универсальных, готовых операционных систем, таких как Debian, Fedora, Ubuntu, openSUSE, и предоставление преимуществ для вертикально интегрированных платформ ОС. LBBR: Определение потенциальных требований к прошивке LinuxBoot для загрузки операционных систем, используемых некоторыми гиперскалерами.
Сама архитектура Arm не скажет нам как работает или как построен процессор, такими вещами занимается микроархитектура. Если ARM является архитектурой, то вот ядра Cortex A53 или A72 уже микроархитектурная составляющая основанная на ARM V8-A, но микроархитктурная часть сильно различается.Программы на них будут работать одинаково, не нужно будет её переписывать под каждое ядро.
ARM развивается каждый год, но основа остаётся такой же какой была и в истоке. В серии статей мы будем рассматривать A профиль, то есть архитектуры ARM-A профиля. Сейчас последняя версия A профиля это ARM V9-A. Отличия от ARM V8-A:
Масштабируемое векторное расширение (SVE2, 2 означает 2 версию этой технологии)
TME обеспечивает поддержку аппаратной транзакционной памяти (HTM)
Расширение буфера BRBE-предоставляющие информацию профилирования, такую как анализ горячих точек и Auto FDO, для отладки, Embedded Trace Extension (ETE) и Trace Buffer Extension (TRBE) для улучшенных возможностей трассировки для Arm V9-A.
Arm самая известная спецификация , но не единственная. Arm имеет аналогичные спецификации для многих компонентов, составляющих современную систему на кристалле (SoC).
Generic Interrupt Controller: Спецификация Generic Interrupt Controller (GIC) представляет собой стандартизированный контроллер прерываний для использования с Armv7-A/R и Armv8-A/R. Блок управления системной памятью: Блок управления системной памятью (SMMU или иногда IOMMU) предоставляет услуги перевода мастерам, не являющимся процессорами. Универсальный таймер: Универсальный таймер обеспечивает общее количество эталонной системы для всех процессоров в системе. Эти таймеры обеспечивают функциональность, которая используется для таких вещей, как тик планировщика операционной системы. Универсальный таймер является частью архитектуры Arm, но системный счетчик является системным компонентом. Архитектура базовой системы сервера и Архитектура доверенной базовой системы: Архитектура базовой системы сервера (SBSA) и Архитектура доверенной базовой системы (TBSA) предоставляют рекомендации по проектированию системы для разработчиков SoC.
Расширенная архитектура шины микроконтроллера: Семейство шинных протоколов Advanced Microcontroller Bus Architecture (AMBA) управляет тем, как подключаются компоненты системы на базе Arm, а также протоколами этих соединений. Processing Element (PE) - это общий термин для реализации архитектуры Arm. Вы можете думать о PE как о чем-то, что имеет свой собственный счетчик программ и может выполнять программу. Например, в Справочном руководстве по архитектуре Arm говорится:
Состояния, определяющие, как работает PE, включая текущий уровень исключения и состояние безопасности, а в состоянии AArch32-режим PE.
Функция, которая ОПРЕДЕЛЯЕТСЯ РЕАЛИЗАЦИЕЙ (IMP DEF для краткости), определяется конкретной микроархитектурой. Реализация должна представлять последовательное поведение или значение. Например, размер кэшей-IMP DEF. Архитектура предоставляет программному обеспечению определенный механизм для запроса размеров кэша, но размер кэша зависит от разработчика процессора. Аналогично, поддержка инструкций криптографии является IMP DEF. Опять же, существуют регистры, позволяющие программному обеспечению определять, присутствуют ли инструкции или нет. В обоих примерах выбор статичен. То есть данный процессор либо будет, либо не будет поддерживать функции и инструкции. Наличие функции не может измениться во время выполнения. Для процессоров Cortex-A некоторые варианты IMP DEF будут фиксированы, а некоторые будут вариантами синтеза. Например, на Cortex-A57 размер кэша L1 фиксирован, а размер кэша L2 является опцией синтеза. Однако решение о размере кэша L2 принимается во время разработки. Он все еще статичен во время выполнения.
Спасибо за внимание! Ждите следующих статей в скором времени;)
Автор: Technoad.
Редактор: QRzepper
При поддержке: https://www.youtube.com/channel/UCOpm7EqPBtznEwYNNZrz1FQ
Наш канал в телеграмме: https://t.me/joinchat/RnSn4WdPpXOXkf0x