Чем отличаются архитектуры Cortex-M0, M3, M4, M7, M33, M23 и зачем их так много
Что проверяют
На позиции тестировщика встроенного ПО этим вопросом проверяют не память на документацию, а понимание, чем стенд под одно ядро отличается от стенда под другое и какие дефекты специфичны для каждого. Ждут, что свойства ядра вы свяжете с планом проверок.
Как отвечать
Дайте карту семейства по поколениям, а не список характеристик:
- M0 и M0+ это минимальное ядро: урезанный набор инструкций, без аппаратного деления, обычно без блока защиты памяти. Дешёвые датчики и простая периферия.
- M3 добавляет полный набор Thumb-2, аппаратное деление и развитый контроллер вложенных прерываний.
- M4 это M3 плюс инструкции цифровой обработки сигналов и опциональный блок плавающей точки одинарной точности.
- M7 самое быстрое ядро линейки: длинный конвейер с двойной выдачей, кэши инструкций и данных, опционально двойная точность.
- M23 и M33 это следующее поколение архитектуры с TrustZone, то есть с разделением на защищённый и обычный мир. M23 упрощённый, M33 полный.
Главное для тестировщика идёт следом: ядро меняет набор проверок. На M7 появляются кэши, а с ними когерентность при обмене через прямой доступ к памяти, классический источник плавающих дефектов. Там, где блока плавающей точки нет, арифметика уходит в программную эмуляцию, и тесты на время выполнения начинают вести себя иначе. TrustZone добавляет отдельный сценарий: что видно из обычного мира и как проходит переход между мирами.
А много их потому, что выбор ядра это компромисс между ценой, потреблением и производительностью.
Где спотыкаются
Пересказывают характеристики, не связывая их с задачей. Интервьюер ждёт фразу вида «поэтому на этом ядре я проверяю вот это», а получает справочник.
Второе: считают, что блок плавающей точки есть в любом M4 и M7. Он опционален, и прошивка, собранная под программную эмуляцию, даст другие тайминги и другую точность. Результаты таких тестов нельзя переносить с одной сборки на другую.
Третье: проверяют на отладочной плате со старшим ядром, а в серию идёт младшее. Переполнение стека и нехватка памяти проявятся только на целевом устройстве, где и памяти меньше, и частота ниже.