Урок IoT-кооперации - ARM, STMicrorlectronics и IAR Systems одновременно

25 сентябрь, 2014 - 15:47Андрей Зубинский

Есть, наверное, одно важное отличие hypes от реальных событий в индустрии. О нём обычно не говорят, и дело даже не в том, что hypes обычно состоят на 99% из медиа-потоков и всего на 1% из реальных действий, ни один наблюдаемый мной приступ hypes не порождал действующей кооперации серьёзных, больших игроков. Даже на уровне анонсов обещаний (есть и такой уровень).

И вот события прошедших пары дней показывают новый уровень «игры в IoT» - за два дня практически одновременно прозвучали: анонс новой архитектуры ARM, анонс реализации этой архитектуры «в железе» и анонс инструментальной поддержки только анонсированного «железа», и всё это – от трёх независимых производителей. Такой синхронности на моей памяти ещё не было (максимум два участника наблюдалось), потому и решил уделить событию внимание.

Итак, ARM анонсировала пока наивысшую ступень развития своих архитектур для встраиваемых систем – Cortex-M7. Теперь пригодный для синтеза реальных устройств модельный ряд ARM включает следующий набор:

  • Cortex-M0 – микробюджетное 32-битовое ядро, «убийца» восьми- и шестнадцати-битовых микропроцессоров и микроконтроллеров;
  • Cortex-M0+ – 32-битовое ядро, оптимизированное для устройств с батарейным питанием, в реализациях обещающее многолетнюю работу от одной литиевой батарейки;
  • Cortex-M3 – 32-битовое ядро универсального назначения, результат оптимизации по критерию «потребляемая энергия – производительность»;
  • Cortex-M4 – гибрид ядра общего назначения и DSP (процессора цифровой обработки сигналов);
  • Cortex-M7 – ядро для высокопроизводительных встраиваемых систем.

По сути, Cortex-M7 – вполне очевидное развитие всей линейки, основные архитектурные решения этого ядра не являются чем-то особенным ни для индустрии (несколько параллельных трёхступенчатых конвейеров с возможностью одновременного исполнения двух команд, что в совокупности с тремя ступенями общего конвейера, - выборки, декодирования и формирования потоков исполнения, issue, – позволяет называть основу Cortex-M7 «six-stage, dual-issue superscalar pipeline»), ни для ARM (в первую очередь речь идёт о фирменных решениях, например, о 64-битовой системной шине AMBA 3-го поколения, называемой AXI, и, конечно, о мощных средствах конфигурирования ядра CPU, позволяющих разработчику конечного продукта по сути формировать необходимый конкретный процессор). Но есть в Cortex-M7 нечто интересное, радикально отличающее его, например, от предшественника, Cortex-M4. Во-первых, это контроллер (порт) «сильносвязанной памяти» (tightly coupled memory, TCM), о которой обычно говорят что-то не совсем внятное. Наличие TCM – хороший индикатор «целенаправленности» процессорного ядра, потому что TCM – это отдельная очень дорогая память с быстродействием кэш-памяти, полностью отданная в распоряжение программисту. Естественно, TCM, как и кэш-память, работает с тактовой частотой ядра процессора, и отличается от кэш-памяти разве что собственным адресным пространством и полным отсутствием всякой «автоматизации». Такое архитектурное решение всегда является следствием нацеленности процессора на вычисления реального времени, в первую очередь – на очень быструю обработку аппаратных прерываний и на обмен данными между потоками исполнения. Второе следствие наличия TCM и принятого за основу в архитектуре Cortex-M7 принципиально последовательного исполнения высокоуровневых команд (in-order) отражают стремление разработчиков ARM обеспечить высокую предсказуемость и повторяемость времени исполнения, в первую очередь, критических фрагментов кода. И, во-вторых, Cortex-M7 предусматривает возможность включения в реальные «в кремнии» ядра подсистем обнаружения сбоев и обеспечения безопасности исполнения, соответствующих самым строгим требованиям отраслевых стандартов SIL и ASIL. Так что и без заявлений ARM позиционирование Cortex-M7 очевидно – требующие одновременно высокой производительности (порядка 5 Coremark на мегагерц тактовой частоты, это очень приличный показатель) и предсказуемости и безопасности встраиваемые системы.

Буквально в день анонса новой архитектуры ST Microelectronics анонсировала и первое её «овеществление» - семейство микроконтроллеров STM32F7 с пока единственным представителем. Очень «напичканная» всем чем можно микросхема, с двумя областями TCM – для критических данных и подпрограмм реального времени.

И, опять же, день в день один из лидеров разработки инструментальных средств для embedded мира, IAR Systems, объявила о поддержке своей средой разработки и кросс-компиляторами C/C++ архитектуры Cortex-M7 и семейства STM32F7 от ST Microelectronics.

В общем, из-за этих фактов следует признать, что ARM удалось и создать и работающую «как часы» сверхсистему из независимых производителей, и своим «модельным рядом» удовлетворить где-то 99% производителей, ориентирующихся на IoT. Первое – очень важное и даже феноменальное. Если когда-то ARM разрабатывала IP (Intellectual Property, синтезируемые модели) своих процессоров, потом сражалась за лицензиатов, и это были очень небыстрые процессы, то, начиная где-то с ядра ARM Cortex-M0, которое было анонсировано в феврале 2009 года, и примерно тогда же (с запаздыванием на несколько дней) NXP был объявлен анонс ставшей популярной линейки контроллеров LCP1100, всё происходит «день в день». Причём инициатором и «первой скрипкой» скрытых за таким тройным анонсом процессов может быть только сама ARM. Феноменально для крохотной компании.

Откланиваюсь