Протокол аппаратной когерентности памяти расширяет возможности шины ARM для использования в серверах и виртуализованных встраиваемых системах.
Возможно, наилучшим свидетельством эволюции архитектуры ARM является шина AMBA. Поначалу это была микропроцессорная шина, с успехом применявшаяся для подключения дискретного МК к памяти. Затем компания ARM стала уделять больше внимания IP-ядрам, а не кристаллам, и микропроцессорная шина превратилась в набор выводов у ядра. Как только СнК стали одноплатными микрокомпьютерами, эти контакты определили шинное соединение между ядром ЦП, встроенными блоками контроллера и встроенными устройствами памяти. Физически это были мультиплексоры, но на логическом уровне остались адрес, данные и шины управления.
По мере усложнения архитектур СнК усложнялась и AMBA, становясь широкополосной и дружественной шиной с равноправными узлами (multi-master nodes) по отношению к DMA-периферии и ведомым процессорам. Постепенно акцент сместился с поддержки связи между ядром ЦП и его периферией на поддержку трафика между рядом вычислительных или высокоскоростных блоков ввода-вывода контроллера и их памятью. К прошлогоднему анонсу AMBA 4 то, что когда-то было шиной, стало шиной AXI4 – многоканальной коммутируемой сетью, поддерживающей монопольный и потоковый режимы, а также исполнение с изменением последовательности команд.
Теперь наступает следующий этап: три фактора вынуждают AMBA 4 перейти на новый уровень – т.н. AXI Coherency Extensions (ACE).
Первым из этих факторов стало использование шины в серверах с симметричной многопроцессорной обработкой на базе Cortex-A15. Второй фактор – увеличение числа процессоров серии Cortex A в многоядерных конфигурациях. Третий фактор – острая необходимость в обеспечении энергоэффективных решений в основном сегменте ARM – мобильных телефонов.
В каждом из этих случаев имеется необходимость в обеспечении когерентности аппаратной памяти. Эта потребность наиболее очевидна в первом случае, когда программное обеспечение сервера предполагает наличие единой когерентной виртуальной памяти. В то же время эта потребность существует и во встраиваемых многоядерных приложениях. Мы уже воспользовались доступными плодами многоядерного разделения, когда установили ОСРВ на одном ядре, критически важное приложение – на другом, а фоновое приложение – на третьем. Все в большей мере выполняемые задачи совместно используют структуры данных с помощью ядер ЦП. В той же мере системные архитекторы стремятся к тому, чтобы этим совместным использованием управляло аппаратное обеспечение, а не менеджер памяти. Виртуализация, которая получает все большее распространение во встраиваемых системах вычислительной обработки, только увеличивает необходимость в использовании аппаратной поддержки.
Третий фактор, возможно, менее очевидный. Майкл Даймлоу (Michael Dimelow), директор отдела маркетинга ARM, указывает на тесную взаимосвязь между потреблением энергии и когерентностью памяти: «На цикл обращения к внешней DRAM может потребоваться в 10 раз больше энергии, чем на мониторинг кэша. Если имеется возможность избежать обращения к DRAM путем передачи данных в другую кэш-память на кристалле, экономится большое количество потребляемой мощности». В системах, где несколько процессоров, ускорителей и контроллеров периферийных устройств имеют прямой доступ к памяти, аппаратная когерентность позволяет избежать множества циклов обращения к DRAM.
Шина ACE позволяет решить все перечисленные задачи с помощью двух новых IP-блоков, предназначенных для совместного использования с процессором Cortex A15, и соответствующего протокола. Первый IP-блок представляет собой новую матрицу межсоединений – CoreLink CCI-400 Cache Coherent Interconnect. Как и шина AXI4, технология CCI-400 обеспечивает 128-бит тракт на половине рабочей частоты ядра А15. Однако в CCI-400 добавлены когерентные порты для кластеров кэша процессора А15, сопроцессоров и периферийных концентраторов.
CCI-400 обеспечивает два типа портов: ACE и ACE-Lite. Порт ACE присоединяет кластеры процессора А15 и полностью когерентен. Это значит, что через этот порт кэш А15 может обмениваться данными и отслеживать другие кэши А15. Чтобы поддержать такие операции, не занимая полосу главного канала, порт АСЕ оснащен тремя новыми каналами: когерентного адреса в А15, когерентного отклика и возврата данных в схему межсоединений.
ACE-Lite, второй тип порта, не имеет трех новых каналов. Такие устройства как графический процессор Mali-T604, DRAM-контроллер DMC-400 или периферийный концентратор NIC-400 могут инициировать запрос к памяти для отслеживания кэшей А15. Однако другое устройство не имеет возможности выполнять мониторинг памяти, которая является локальной по отношению к устройству ACE-Lite. Точнее говоря, текущая архитектура ACE лишь наполовину когерентна, т.к. она поддерживает полную когерентность между кластерами ЦП А15 и позволяет другим типам устройств получать доступ к данным кэшей А15. Кроме того, ACE-Lite обеспечивает дополнительные возможности для полукогерентной работы кэшей Cortex A5 и A9.
Второй важной частью IP является блок MMU-400, выполняющий аппаратно ускоренную трансляцию обращений к памяти. Поскольку виртуализация получает все большее распространение в серверах и во встраиваемых системах, растет необходимость в аппаратных блоках управления памятью (MMU) для поддержки виртуальной адресации. В AMBA 4 компания ARM использует распределенную архитектуру DVM (Distributed Virtual Memory), в которой когерентные устройства работают в собственных виртуальных адресных пространствах. Каждое из этих устройств соединяется с матрицей CCI-400 через собственный блок MMU-400, причем каждый последующий блок обеспечивает адресную трансляцию, буферы быстрого преобразования адреса и возможность обновить все эти буферы в системе при широковещании, если какой-либо гипервизор решит перераспределить виртуальные адреса. Протокол DVM многократно использует сигналы для когерентной поддержки, что снижает дополнительные расходы на коммутацию.
IP-блоки, обеспечивающие когерентность и виртуализацию, свидетельствуют о развитии ARM-архитектуры в направлении серверов, а также в сторону создания встраиваемых систем на виртуальных многопроцессорных платформах. В то же время появление этих архитектур влечет за собой радикальное изменение требований к разработке: протоколы аппаратной когерентности сложны и охватывают непомерно большое пространство состояний. Их верификация является одной из самых сложных задач проектирования.
Для создания средств верификации ARM стала сотрудничать с компаниями Jasper Design Automation и Cadence. Компания Jasper разработала инструмент Proof Kit для верификации IP по протоколу АСЕ. Созданный набор правил должен обеспечить возможность правильной реализации протокола АСЕ.
В целом положение дел с верификацией достаточно сложное. Даймлоу предупреждает, что принятые ARM меры не в состоянии решить всех проблем. По сути, эти шаги – лишь основа для более глубоких перемен, цель которых заключается в создании коммуникационной архитектуры.
Предстоит определить передачу данных на системном уровне и то, какие процессоры будут совместно пользоваться структурами данных. Далее разработчики установят, какие блоки должны быть когерентными, после чего займутся вопросами производительности процессора, параметрами памяти и полосой пропускания шин.

22 января, 2018