Шина AXI (интерфейс AXIM)
У младших Cortex-M всё висит на шинах AHB. Cortex-M7 добавляет к ним главный 64-битный интерфейс AXIM по стандарту AXI4: через него идут заполнение кэша, выборка кода из флеш-памяти и обращения к внешней памяти. В STM32H7 вокруг него построена целая шинная матрица AXI.
Обновлено Редакция GAW
AXI (Advanced eXtensible Interface) — протокол шины из семейства Arm AMBA для высокопроизводительной памяти. В микроконтроллерах он появился вместе с ядром Cortex-M7: по TRM Arm главный интерфейс ядра к памяти — AXIM, 64-битный ведущий порт по стандарту AXI4. Остальные интерфейсы ядра — TCM, AHB-Lite для периферии (AHBP) и ведомый AHB-Lite (AHBS) для DMA-доступа к TCM — к AXI не относятся.
Что идёт через AXIM
- выборка команд не из ITCM;
- заполнение строк кэша данных и вытеснение грязных строк;
- некэшируемые обращения к Normal-памяти;
- обращения к Device и Strongly-ordered памяти, обычно к периферии.
Все записи на стороне данных, кроме TCM и AHBP, сначала попадают в буфер записи. Интерфейс может работать на частоте ядра или на меньшей синхронной частоте; Arm добавляет к стандартным сигналам AXI4 расширения, передающие внутренние атрибуты памяти и источник запроса.
Отличие от AHB
В Cortex-M7 разделение ролей видно по TRM: быстрая память и кэш работают через 64-битный AXIM, а низколатентная периферия — через AHB-Lite порт AHBP. Обращения к AHBP, как и к TCM, идут мимо кэша и буфера записи. Шинная матрица микроконтроллера дальше связывает AXI-часть с AHB-шинами периферии и DMA через мосты.
В STM32F7 и STM32H7
У STM32F7, как показывает схема в AN4839, шина AXI ядра через мост подключена к 64-битной шинной матрице, а флеш-память по RM0385 видна по адресу 0x0800 0000 на AXIM и по 0x0020 0000 через ITCM. У STM32H7 на шине AXI находится и отдельный блок ОЗУ — AXI-SRAM. ST отмечает в AN4839, что кэш даёт наибольший выигрыш именно для памяти на AXI — внешней SDRAM на FMC и Quad-SPI-флеш. Подробнее об организации памяти — на страницах STM32F7 и STM32H7.
Частые вопросы
Чем AXI отличается от AHB в Cortex-M7?
Ролью. По TRM Arm главный интерфейс ядра к памяти — 64-битный AXIM по стандарту AXI4: через него идут выборка кода, заполнение кэша и обращения к внешней памяти. Периферия подключена через отдельный низколатентный порт AHB-Lite (AHBP), а ведомый AHB-Lite (AHBS) даёт DMA доступ к TCM. Подробности протокола AXI описывает спецификация Arm AMBA AXI and ACE.
Что такое AXI-SRAM в STM32H7?
Блок ОЗУ, подключённый к шинной матрице AXI. Ядро обращается к нему через AXIM и кэш, а не через TCM. Объёмы и адреса AXI-SRAM по линейкам STM32H7 собраны на странице семейства.
Почему флеш-память STM32F7 видна по двум адресам?
Потому что к ней ведут два пути от ядра. По RM0385 через интерфейс AXIM флеш-память начинается с 0x0800 0000 и может кэшироваться, через интерфейс ITCM — с 0x0020 0000, и такие обращения идут мимо кэша, как все доступы к TCM. Выбор адреса при компоновке определяет, каким путём ядро будет выбирать код.
Источники
- Arm. Cortex-M7 Processor Technical Reference Manual r1p2 (DDI 0489F), разд. «About the Cortex-M7 processor», «Memory System», «AXIM interface» — интерфейсы ядра: TCM, гарвардские кэши, ведущий AXI (AXIM), низколатентный AHB-Lite для периферии (AHBP), ведомый AHB-Lite (AHBS) для DMA-доступа к TCM; блок BIU с настраиваемым интерфейсом AMBA 4 AXI; AXIM — один 64-битный интерфейс к внешней памяти: выборка команд, заполнение и вытеснение строк кэша данных, некэшируемые доступы к Normal-памяти, доступы к Device и Strongly-ordered, обычно к периферии; соответствует AXI4 по спецификации Arm AMBA AXI and ACE Protocol Specification с расширениями для атрибутов и источника запроса; может работать на частоте ядра или на меньшей синхронной; в варианте без кэша данных — оптимизированный по площади AXIM
- STMicroelectronics. RM0385 Reference manual STM32F75xxx and STM32F74xxx, Rev 9, разд. 3.3.1, табл. 3 — сектора флеш-памяти: адрес на интерфейсе AXIM — с 0x0800 0000, на интерфейсе ITCM — с 0x0020 0000
- STMicroelectronics. AN4839 Level 1 cache on STM32F7 Series and STM32H7 Series, Rev 2 (March 2018) — рис. 1: у STM32F7 шина AXI ядра через мост AXI/AHB подключена к 64-битной шинной матрице; кэш L1 даёт наибольший выигрыш для памяти на шине AXI — FMC и Quad-SPI
Нашли ошибку?
Смотрите также
- Шины AHB и APBБыстрая шина ядра и шины периферии STM32
- Кэш L1 Cortex-M7 (I-cache, D-cache)Раздельные кэши команд и данных ядра Cortex-M7: строка 32 байта
- TCM (ITCM, DTCM)ОЗУ на прямых интерфейсах ядра Cortex-M7: предсказуемый доступ без кэша
- Буфер записи Cortex-M7 (store buffer)Очередь записей между ядром Cortex-M7 и памятью: слияние и опустошение
- STM32H7Cortex-M7 от 280 до 600 МГц, двухъядерные H745/H747 — линейки, память, загрузка и распиновки
- STM32F7Cortex-M7 до 216 МГц: F72x/F73x, F74x/F75x, F76x/F77x — линейки, память, загрузка и распиновки