Настолько яркое и разное, что «не могу молчать»

27 ноябрь, 2014 - 15:03Андрей Зубинский

Трудно было удержаться и об этом хоть немного не написать. Много не получится, и это вообще «просто интересно», потому без всяких преамбул, сразу к делу.

Вчера до меня добрался очередной анонс «королевы мира embedded» корпорации Renesas. Титул не придуманный, Renesas годами удерживает первенство, и, скорее всего, в ваших японских и корейских автомобилях продукция Renesas обеспечивает те качества, которые вы в них цените (да и произведены эти автомобили тоже не без её участия, потому что в секторах промышленных роботов и автоматики позиции Renesas так же сильны, как и в автомобильном).

И раз всегда интересно попробовать понять чем и как добиваются превосходства, на совсем «свежем» примере покажу, потому что это действительно очень яркая разработка.

Буквально пара абзацев о семействе встраиваемых компьютеров (микроконтроллерами это уже называть язык поворачивается с трудом) RZ/T1. Но в нестандартном формате. Начнём с простых и очевидных проблем, от которых «болит голова» у разработчиков высоконадёжных систем реального времени.

Очевидная и прекрасно известная проблема – необходимость в кэш-памяти. Есть большие классы задач, в которых рост требований к производительности встраиваемых компьютеров вызывает несоответствие между тактовой частотой процессора и быстродействием флэш-памяти. Классическое решение – использование кэша, – порождает очень неприятное последствие: плохую предсказуемость точного времени исполнения фрагментов кода. А для многих приложений это требование исключительно важно, все временные характеристики всех исполняемых вычислителем программ должны быть строго детерминированы и недетерминированность «в некоторых случаях» должны быть принципиально исключена. В том же посадочном модуле Philae, который был упомянут в предыдущей записи, детерминированность гарантировалась процессорами, у которых вообще нет кэш-памяти, и, конечно, потактовым расчётом времени исполнения всех программ с верификацией и проверкой стендовыми испытаниями. Для контуров управления авионики, промышленных роботов или двигателей внутреннего сгорания требования точно такие же, и методы достижения те же самые, в том числе и соблюдение правила «кэш-памяти быть не должно».

Конструкторы Renesas использовали в машинах семейства RZ/T1 процессорное ядро ARM Cortex M4 с сопроцессором плавающей точки и два типа памяти – обычную (в смысле – кэшированную), для некритических данных, большого (по меркам встраиваемых вычислителей) объёма, и TCM – «тесносвязанную», проще говоря – доступ к которой процессорное ядро имеет напрямую, без всякого кэширования. Причём TCM предусмотрена для памяти программ и данных (они раздельные). Решение не принципиально новое, TCM используется и в системах на чипе Intel, позиционирующихся для IoT. Но я и не пытаюсь показать новизну в частностях, тут интереснее восстановить логику разработчиков – зачем и почему они что делали. Короче говоря, проблему кэш-памяти в RZ/T1 решили радикально, одной проблемой стало меньше, но это не значит, что проблем не осталось.

Вторая проблема – как ни странно, операционная система. Обычно речь идёт о RTOS, ОС реального времени. Это на бумаге RTOS «красивые», в реальности они вносят серьёзные временные затраты (в терминах машинного времени и даже в некоторых случаях во временных масштабах внешней системы). Семафоры (программные объекты, использующиеся для упорядочивания конкурентного доступа к разделяемым ресурсам), очереди, «почтовые ящики» (используются для обмена данными между процессами/потоками/«волокнами»-fibers), обработчики прерываний – всё это затраты времени, очень и очень существенные. Кроме того, это расход памяти программ и данных, иногда необходимость реализации динамического управления памятью (что в RTOS весьма условно позволительно), потребность в «волочении» разработчиком конечного продукта кода RTOS (причём во всём жизненном цикле продукта), вопрос выбора (да, есть и такой, RTOS очень много) etc.

В общем, проблема в том, что RTOS необходима, но такая, как будто её вовсе и нет.

Есть проблема – есть и решение. По-моему, RZ/T1 – первый вычислитель, в котором операционная система реализована аппаратно, ещё и видима процессору «железным» периферийным узлом. И уж точно это первая двухпроцессорная машина, в которой аппаратная RTOS управляет работой маломощного и малопотребляющего процессора (ARM Cortex M3), предназначенного для решения крайне требовательных ко всему, что можно придумать, задач исполнения целых коммуникационных стеков (среди которых стек промышленного Ethernet, например, его контроллеры обычно реализуются на программируемой логике аппаратно, именно из-за жёстких временных требований).

Но аппаратная реализация RTOS – это ещё не всё. Важно какая RTOS реализована. Ведь программистам с ней работать. В Renesas поступили опять радикально, и реализовали аппаратно механизмы ОС TRON (многие и не подозревают, но это до сих пор самая распространённая ОС в мире, просто её использование обычно конечному потребителю продукта не видно).

Заодно двухпроцессорная на одном кристалле архитектура, ассиметричная и даже гетерогенная, с чётким разделением на «мощный вычислитель для пользовательских задач с детерминированным временем исполнения» и на «лёгкий энергоэффективный вычислитель с аппаратной RTOS и потому с минимальными расходами времени на служебные функции ОС», позволяет добиться очень высокой энергетической эффективности всей системы в целом. Ведь мощный процессор может «спать» всегда, когда его ресурсы не нужны, и «будиться» только когда для его программ подготовлены данные.

Таких интересных и грамотных машин на моей памяти ещё не было. Блестящая работа.

 

Теперь о второй разработке, уже из области конечных продуктов, которые получаются из всего этого «мелкого» компонентного уровня.

Привожу её в качестве примера и ответа на вполне законный вопрос – «так для чего нужны все эти микровычислители и продукты MEMS-технологий?». А то иногда, если не присматриваться к большому миру, создаётся впечатление, что кроме как для встраивания в смартфоны оно никому особо не нужно. Ну и есть ещё гуманистический аспект, я уже для себе этот пример внёс в список «самых гуманных продуктов года».

В общем, знакомьтесь – «ложка 2.0»:

Настолько яркое и разное, что «не могу молчать»

Да, ложка. Гироскопически стабилизированная ложка, с MEMS-гироскопами, микроконтроллерами и всем, что должно быть в любой встраиваемой системе.

Такая ложка – огромное облегчение для страдающих болезнью Паркинсона.

Придумали её концепцию и начали реализацию в маленьком стартапе Lift Labs. За два года опробовали более ста (!) алгоритмов компенсации вибраций (задача действительно крайне непростая, как и проектирование механической подсистемы стабилизированной ложки).

С сентября этого года стартап приобретён Google за неназванную сумму и начинает полноценное производство своей разработки уже как продукции (и, кроме того, Сергей Брин лично выделил на поиски лекарств, облегчающих симптомы паркинсонизма $50 миллионов).

Хорошая история, светлая. Таких сейчас не хватает.

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