Pull to refresh
84.48
Rating

Вопросы использования Intel Atom для embedded realtime задач

Intel corporate blog
После того, как архитектура Atom проявила себя в нетбуках, некоторые компании стали использовать Atom для Embedded Realtime применений. Делают промышленные контроллеры, гоняют на них PLC код.

Те же чипы, что и в нетбуке обычно на заводах не используют. Есть специальный платформы. Сначала был Crown Beach, сейчас начинает использоваться в дизайнах Queens Bay. Для IVI (автомобильный компьютер) есть своя платформа.

Естественно, удовлетворение realtime требований — необходимое условие. Об этом подробнее под катом.

Что такое «realtime», применительно к x86? Есть много критериев. Чаще всего самое первое требование — чтобы между срабатыванием прерывания и началом исполнения кода его обработчика(ISR) должно проходить гарантированое время. Для кого-то это 2 микросекунды, для кого-то 10, некоторые готовы мириться даже с 20 микросекундной задержкой. Со 100 микросекундной задержкой, пусть и случающейся раз в неделю, мало кто готов работать.

Когда это главное требование удовлетворено, клиент, выбирая платформу, начинает учитывать остальные факторы: производительность, цену, сколько хочет кушать электричества, как греется, как поддерживается вендором, насколько легко под нее писать софт.

Процессоры семейства Atom работают достаточно шустро, есть SIMD. В отличие от обычных десктопных/нетбучных вариантов, чипы, включенные Intel в Embedded Roadmap поддерживаются и производятся долго (от 7 до 10 лет). На x86 разрабатывать софт или использовать готовый сравнительно просто — все-таки самая распространенная архитектура. Еще полезна VT — аппаратная поддержка виртуализации. Например, только на x86 можно достаточно шустро гонять одновременно RTOS для контроля оборудования и Windows XP для GUI. Кстати, в этой отрасли модно называть пользовательский интерфейс не GUI, а HMI (Human Machine Interface). А раньше было MMI. Типа, раньше со станками работали мужчины, а теперь — человеские существа.

Если уж я написал — «задержка прерывания», то надо определить — какого именно. legacy, MSI, local? Два самых важных случая — local APIC timer, и MSI-X прерывания от периферии.

Какие ОС используются? VxWorks, Integrity, QNX, Windows СЕ, сильно допиленный Linux. Бывает, используется Windows Embedded и даже обычная Windows XP SP3. В последних случаях realtime код исполняется исключительно в ISR.

Как измерять? Это зависит от ОС. На Windows можно использовать DPC analyzer от Microsoft. Если есть проблема с задержкой ISR, то задержки DPC тоже будут. Но не наоборот. Поэтому это неплохой индикатор, но не на 100% точный. Я иногда пользуюсь Beckhoff Twincat. (Кстати, Beckhoff как раз умеют делать hard realtime промышленные контроллеры на обычной Windows XP) С сайта можно скачать ознакомительную версию, запустить пустой проект, и смотреть задержки прерывания от local APIC timer. Самый простой и точный способ под Windows. Так не сложно проверить, подойдет ли ваш нетбук в роли контроллера для современного фрезеровочного станка или промышленного робота. Если подойдет, то есть шанс, что даже дополнительного железа не понадобится — если вдруг у станка есть дырка для управления через EtherCAT.

Аналогичный драйвер, измеряющий время до обработчика прерывания для Linux из 100 строчек пишется за полдня, или можно просто попатчить 20 строчек в drivers/rtc/rtc-cmos.c, чтобы выводил среднюю задержку.

Почему на Atom вообще возможна задержка прерывания более чем на 5 микросекунд? Например, на всех X86 процессорах есть SMI — очень большое зло с точки зрения промышленного контроллера. Также есть полезная инструкция — WBINV. Выполнит ее какой-нибудь драйвер — и придется обработчику прерывания сначала долго тащить данные из памяти. Есть еще несколько возможных причин. Со всем этим можно бороться.

Кроме предсказуемости времени запуска обработчика прерывания, код в ISR тоже должен работать с постоянной производительностью. Два основных фактора, которые могут уменьшать предсказуемость — общий кэш и гипертрединг. К сожалению, наиболее энергоэффективные процессоры Atom — одноядерные. Гипертрединг помогает получить несколько лучшую производительность, но сказывается на предсказуемости исполнения кода в RTOS, если на hyperthread одновременно работает GPOS. Об этом можно написать отдельную статью, если это было бы кому-нибудь интересно.
Tags:
Hubs:
Total votes 38: ↑30 and ↓8 +22
Views 10K
Comments Comments 18

Information

Founded
Location
США
Website
www.intel.ru
Employees
5,001–10,000 employees
Registered
Representative
Анастасия Казантаева