МикроWeb

Похоже, что тема ставшего уже соревновательным уменьшения габаритов специализированных компьютеров-серверов несколько "приелась" и не занимает ведущих мест в хит-парадах новостей. Очередной взятый рубеж миниатюризации иногда не заинтересовывает даже специалистов…

И все же не следует заблуждаться, считая, что такая ситуация свидетельствует о спаде популярности микросерверных технологий. Вероятнее всего, главным виновником "испорченного торжества" является… сама гонка размеров, сконцентрировавшая внимание на факте микроминиатюризации и отодвинувшая на второй план как высокие праксеологические (есть такая наука — теория полезности технических решений) показатели, так и специфические недостатки микроWeb.

Впереди паровоза?

Действительно, не отрывают ли нас попытки рассмотрения микроWeb-технологии от реалий сегодняшнего дня? Насколько актуальны вообще устройства "малой интернетизации"? Однозначные ответы на эти вопросы дать трудно — ведь каждое конкретное применение той или иной технологии обладает своими перспективами. Но все же…

Третье поколение микроWeb на основе контроллера PPP/IP/TCP Seiko S-7600A

По скорректированным прогнозам Motorola, в 2010 г. число микроконтроллеров в среднем жилом помещении достигнет… 225 (естественно, что речь идет о высокоразвитых странах). К этому количеству "жучков" необходимо прибавить неизбежные 20—50 их собратьев, упрятанных в кузов современного автомобиля, до 10 "интеллектуальных" чипов в персональном средстве мобильной связи. Простая арифметика приводит нас к диапазонной оценке 255—285 микроконтроллеров, приходящихся на абстрактную семью, владеющую небольшой квартирой и одним автомобилем, — даже если эта семья состоит из четырех человек, на каждого из них придется от 63 до 71 микрокомпьютера… Ощутить значимость этой цифры поможет сравнение ее с показателями оснащения универсальными компьютерами в сфере производства — в США на 100 работающих приходится около 50 ПК, в Западной Европе — 22, Японии — 12, Китае — 1 ПК на 1000, Индии — менее 1 ПК на 5000…

Естественно, что такая концентрация вычислительных ресурсов (пусть даже специализированных и сравнительно "слабых") уже подсказывает возможность создания некоторого единого целого. Целесообразность этого "целого" можно оспаривать, ее можно бояться или, наоборот, с воодушевлением отстаивать. В технократическом мире все это неважно — главное, что есть подходящий для технологии объект.

С другой стороны, не следует забывать и об обеспечивающих все эти блага цивилизации промышленности и науке. Здесь потребность в микровычислениях также огромна и в абсолютных цифрах (например, по числу процессоров) намного превышает потребность в универсальных ЭВМ. И вопрос "единого целого" стоит еще более остро — ее величество производительность труда умеет четко и определенно ставить задачи.

Сегодняшнее состояние дел в области микроинтернетизации можно охарактеризовать рядом обыденных примеров. Так, с помощью микроWeb-технологии разработчики ПО для встраиваемых производственных контроллеров, находящиеся в Великобритании, регулярно обновляют версии управляющих программ в сотнях микровычислителей на заводах своих заказчиков в Гонконге; тысячи микроWeb-контроллеров, оснащенных датчиками давления и скорости потока воздуха, обеспечивают сбор данных в аэродинамических испытаниях; оборудованные системами беспроводной связи микроWeb-зонды контролируют состояние почвы на полях фермеров в Канаде…

Нюансы простоты

Прелесть (и во многом — причины успеха) Internet заключается в простоте основных механизмов и удачно выбранной модели развития — открытых спецификаций. Свобода реализации, доступная при таком подходе любому производителю, независимо от его положения на рынке, маркетинговых успехов и т. п., — одна из главных причин и бурного роста микроWeb. А вот простота… Привычка употреблять это слово в отношении Web связана скорее с простотой идей, чем программ. Поэтому давайте попытаемся разобраться, с чем же мы имеем дело, а точнее, с анатомией встраиваемых (в контексте статьи — микроWeb) приложений.

Первое поколение – микроПК на процессоре AMD Elan под управлением ОС Linux

Ключевые понятия, повторения которых не избежать, — все те же пресловутые клиент и сервер. Под клиентом далее будет пониматься логически целостная система, способная инициировать или запросы к информационным ресурсам сервера, или действия с этими ресурсами. Обратите особое внимание на то, что клиент в нашем случае фактически является только инициатором, основные действия выполняются сервером (серверцентрическая модель). Конкретным воплощением интересующего нас клиента (микроWeb), в соответствии с приведенным определением, может быть любое аппаратно-программное (или вообще сугубо аппаратное) устройство, способное формировать запросы к серверам с использованием основного протокола Сети — HTTP. С "высоты птичьего полета" совершенно не важно, что будет делать клиент с полученной информацией, — несмотря на кажущуюся парадоксальность этого утверждения, клиент-"бездельник" может оказаться очень полезным, например, для формирования запросов к группе серверов в определенные моменты времени (синхронизации).

Соответственно, под сервером будет пониматься логически завершенное нечто, способное обнаруживать и обслуживать запросы от клиентов. На реализацию этого "нечто" также не налагаются никакие ограничения, единственное строгое требование заключается в принципиальной обязательности "взаимопонимания" в диалогах клиент-сервер, т. е. в поддержании протокола HTTP.

Теперь о главном — о протоколах. Несмотря на успехи миниатюризации, сложность реализующего их ПО остается одной из самых серьезных причин вялого развития микроWeb-технологии. Здесь мы не в первый раз встречаемся с ярко выраженной зависимостью понятий от точки зрения. А именно, с точки зрения профессионального разработчика системного ПО для универсальных компьютеров, реализации необходимых для подключения к Сети подсистем сложны скорее в конкретных деталях исполнения (например, разнообразием сетевых адаптеров), чем в технике (и тем более — в архитектуре). Огромный рекомендательный, справочно-информационный материал и стандарты (2833 документа из категории RFC и 58 стандартов, доступных в HTML-формате по адресу www.faqs.org) являются лучшим подтверждением справедливости этого высказывания. С точки зрения разработчика ПО для "маленьких" процессоров и контроллеров, это изобилие кажется кошмаром, и дело даже не в ограниченных ресурсах подвластных ему "малышей". Один из главных героев "кошмара" — существенное различие аппаратных архитектур микровычислителей и универсальных ЭВМ (к которым, к слову, относятся и все современные ПК). Происхождение Web из мира именно этих универсальных ЭВМ — самый страшный Фредди Крюгер, до сих пор правящий бал в сегодняшнем тумане микроWeb.

Главное отличие

Для человека, привыкшего к "настольному" характеру компьютеров, различия между универсальной ЭВМ и микроконтроллером кажутся весьма туманными. Действительно, оба класса вычислителей включают в себя центральный процессор, постоянное запоминающее устройство, оперативную память, подсистемы ввода/вывода. Но… Поэтапная схема работы практически любой универсальной ЭВМ — аппаратное инициирование маленькой программы-загрузчика, создание с ее помощью копии операционной системы в памяти с быстрым произвольным доступом (ОЗУ), запуск приложений посредством подпрограмм (системных вызовов) ОС — в микроконтроллерных вычислителях практически не применяется. Здесь царствует другая идеология, и совершенно обыденным является исполнение, например, ядра ОС прямо из образа, записанного в ПЗУ. Программное обеспечение, соответствующее вытекающим из этой особенности весьма специфическим требованиям, называется ROMable (идиома, означающая "пригодное к выполнению из ПЗУ ПО"). Далеко не для всякой ОС существует ROMable-вариант, да и ограниченные ресурсы контроллеров обычно вообще не допускают использование какой-либо ОС. Соответственно, в роли самых главных управляющих программ должны выступать реализации сетевых протоколов в микроисполнении. Создание надежно работающего, функционально насыщенного, качественного и мобильного ПО такого класса — задача, требующая недюжинного искусства разработчика, заменить которое технологическими приемами или, тем более, инструментарием, практически невозможно.

Предпосылки и особенности

Четвертое поколение – микроWeb-шлюз IP/CAN

Обыденные воплощения малых вычислителей, давно ставшие доступными, например контроллер стиральной машины или микроволновой печи, дают наглядное представление об используемых в секторе embedded (встраиваемом) технических решениях. Во-первых, здесь среди разработчиков не особенно популярны графические дисплеи (сказываются и ценовые ограничения, диктуемые рынком, и соображения надежности), во-вторых, средства, затраченные на техническое исполнение интерфейса, могут ощутимо превышать стоимость самого контроллера, в-третьих, микроконтроллеры, выполняющие управляющие функции, могут вообще не иметь пользовательских интерфейсов. Не следует думать, что второе утверждение высказано "сгоряча" — качественная мембранная клавиатура, несколько высоконадежных кнопочных переключателей и электролюминесцентный индикатор действительно намного дороже микросхемы ценой $1—3. С точки зрения компании, специализирующейся на разработке крупнотиражной, ориентированной на массовый рынок продукции, возможная экономия "на пользователе" (точнее, на пользовательском интерфейсе) представляется весьма заманчивой. Третий пункт также очень важен — функциональность и потребительские качества многих бытовых и промышленных устройств часто определяются управляющей программой встроенного контроллера. Соответственно, существует принципиальная возможность расширения функциональности (фактически — модернизация) того или иного устройства в ходе его эксплуатации без внесения конструктивных изменений. С точки зрения потребителя, это означает дешевый и быстрый способ модернизации, иногда весьма ощутимой. Например, изменением программы бортового компьютера серийного автомобиля можно добиться или значительной экономии топлива, или ярко выраженного спортивного характера "обновленной" машины. Существование фирм, небезуспешно занимающихся "программным тюнингом" автомобилей, — лучшее тому подтверждение. Самое большое препятствие для "программных модернизаторов" — пока еще обычное отсутствие удобных (в некоторых случаях — вообще каких-либо) интерфейсов, упрощающих процедуру обновления встроенного ПО.

Современное воплощение идей первого поколения микроWeb – универсальный микрокомпьютер (процессор Motorola, ОС Linux)

Теперь предпосылки массовой микроинтернетизации становятся очевидными — управляющие контроллеры, оснащенные микроWeb-серверами, позволяют как добиться экономии на дорогостоящем функциональном пользовательском интерфейсе, так и фактически стандартизировать процедуру обновления ПО. Выражаясь техническим языком, "встраивание" HTTP-сервисов обеспечит доступ к управлению функциями различных устройств от единого интерфейса (например, специализированного компьютера с броузером), а FTP-сервисы превращают процедуру загрузки программ в тривиальную операцию.

Реализация такой радужной перспективы, к сожалению, далеко не тривиальна. Накопленная база программного кода сетевых протоколов и стандартных сервисов, как уже говорилось ранее, соответствует особенностям универсальных ЭВМ. По оценке компании Treck, специализирующейся на разработке embedded-реализаций всех необходимых для создания микроWeb-контроллеров программных модулей (PPP/IP/TCP/HTTP/FTP…), до 80% существующих на рынке встраиваемого ПО аналогичных программ представляют собой вариации кода, использующегося в ОС Unix. К сожалению, при всех достоинствах такой модели развития (с пользовательской точки зрения означающей во многих случаях ощутимое снижение стоимости и повышение надежности за счет повторного использования проверенного временем и не требующего лицензионных отчислений ПО) затраты на аппаратные средства весьма высоки. Даже сильно "урезанным" Unix-подобным системам необходимы 32-битовые (или 16-битовые) процессоры и значительные (по "встраиваемым" меркам) объемы оперативной памяти — все это слишком дорого и избыточно, чтобы говорить о массовом распространении новой технологии. Кроме того, ключевой элемент новой инфраструктуры — HTTP-сервер в embedded-исполнении — просто обязан обладать рядом специфических качеств. Во-первых, в него должны быть встроены механизмы динамического формирования HTML-страниц (в мире универсальных ЭВМ такие функции обычно выполняются отдельными программами — препроцессорами). Во-вторых, эти механизмы должны быть легковесными, чего об универсальных HTML-препроцессорах не скажешь. В-третьих, тесная взаимосвязь между ПО и аппаратными средствами встраиваемых систем требует развитой аппаратно-программной синхронизации, которая не нужна в универсальных ЭВМ.

Безопасность

Победное шествие "ILOVEYOU" и массированные SYNC-атаки убедительно показали, что главными уязвимыми элементами современной инфраструктуры являются… безграмотный и безответственный пользователь и его разновидность — непрофессиональный системный администратор.

Сегодняшние технические средства обеспечения безопасности можно считать адекватными очевидным требованиям к защищенности, например, того самого жилого помещения с двумя сотнями контроллеров из прогноза Motorola. Ведь в микроWeb-системах из-за ограниченной функциональности одновременно существенно снижается риск нанесения повреждений системе из-за неквалифицированных действий как пользователя, так и системного администратора (которого вообще может не быть).

Такая двухуровневая "защита от дурака", с другой стороны, предъявляет очень строгие требования к качеству и надежности ПО. Сбои, приводящие в обычных информационных системах максимум к потере прибыли, в управляющих микроконтроллерных сетях могут обернуться настоящей катастрофой. Как будет развиваться индустрия ПО при таких требованиях, пока непонятно. Очевидно одно: при наступлении массовой микроинтернетизации существующая модель ускоренного "вбрасывания" на рынок фактически бета-версий ПО с последующим "залатыванием дыр" — это тот самый дятел, способный уничтожить цивилизацию. Не исключено, что впервые в краткой, но бурной истории программной индустрии мы вплотную подходим к черте, отделяющей легально-лицензионную безответственность производителя от полной ответственности за возможные последствия применения его ПО или аппаратно-программных средств. Интересно, что по мнению многих авторитетных в embedded-мире специалистов, громадные программные суперкорпорации в условиях становления микроWeb являются единственным платежеспособным гарантом развития — при изменении условий лицензионной ответственности производителя коммерческого ПО небольшие компании просто не смогут обеспечивать возможные судебные иски… С другой стороны, пугающая неизбежность ответственности пока не способствует ускорению развития микроWeb.

Гонка

В технологической гонке "за уменьшение" можно выделить пять основных направлений. "Первые ласточки" Web-ориетированной миниатюризации создавались с помощью нетрадиционного исполнения традиционных на сегодняшний день архитектур. Так, один из самых нашумевших "малышей" недавнего прошлого представлял собой ну очень маленький, но все же ПК на процессоре AMD Elan. Созданный в Стэнфордском университете "спичечный коробок" отличала и совсем "неспичечная" стоимость при производстве в небольших партиях (до $900), и не соотносящаяся со сложностью потенциальных задач сложность исполнения. Работающий под управлением ОС Linux "Matchbox" обозначил направление, которое можно условно назвать "ПК во встраиваемом исполнении с ограниченной функциональностью". Так как при необходимости всегда можно быстро (и намного дешевле по сравнению с Matchbox) добиться более чем разумной миниатюризации Web-сервера с помощью традиционных для встраиваемых систем решений (например, ПК в индустриальном формате PC-104), "спичечно-коробочная" ветка оказалась в академической "изоляции" и трансформировалась в направление "микроминиатюрный почти универсальный не-ПК". "Не-ПК" в данном случае означает отказ от процессоров семейства x86 (в мире не-ПК царствуют чипы ARM и Motorola), а "почти универсальность" подразумевает наличие действительно универсальной ОС (обычно — клона Unix).

ЧTini – рекорд миниатюризации и функциональности:Ethernet, Java, микроWeb

Второе направление своим появлением обязано бурному всплеску интереса к достижениям предшественников — "спичечных коробок" — и не менее бурному его спаду после отрезвляющего анализа ценовой эффективности "микроПК". Создание заведомо усложненных устройств, предназначенных для выполнения простых задач, — занятие, возможно, увлекательное, но не слишком перспективное. Соответственно, представителей второй волны можно назвать микрофункциональными серверами. Их разработчики отказались фактически от всех традиций — операционных систем, языков высокого уровня, наработанных десятилетиями программных реализаций… Успехи "микрофункционалистов" основывались на высоких показателях производительности массовых дешевых микроконтроллеров, доступности исходных текстов прекрасно отработанных образцовых (reference) реализаций сетевых подсистем и сервисов ОС Unix и, наконец, на изобилии документации, специфицирующей чуть ли не все нюансы Internet. В результате как грибы после дождя начали возникать молодые компании, разработавшие программу "микроWeb-сервера" для чипа XXX, помещающуюся в 2000 ячеек ПЗУ, 1000 ячеек, … 256 ячеек. Теперь "спичечные коробки" сами стали казаться гигантами… Ведущие производители микроконтроллеров "новой волны" (Atmel, Microchip) и, с некоторым опозданием, более традиционные игроки на embedded-рынке (Zilog) срочно анонсировали "новые e-чипы, готовые к подключению к Internet" (объективности ради следует заметить, что ничего принципиально нового в 99% этих анонсов не содержалось, кроме косвенного объявления о заключении партнерского соглашения с той или иной компанией—разработчиком микроWeb-ПО). Все "e-рекорды" побила Scenix, позволяющая со своего сайта вообще загрузить исходные тексты и сопутствующую документацию реализаций TCP/IP-стека и микро-HTTP-сервера для кристаллов семейства SX.

Но… и вторая волна, похоже, "отхлынула" — благородное стремление к снижению стоимости реализаций несколько омрачилось, мягко говоря, невысокой функциональностью, сложностью интеграции разработанного устройства с "внешним миром" и богатым разнообразием архитектур микроконтроллеров (что при учете их ограниченных ресурсов вынуждает создавать множество реализаций уникального ПО).

Абсолютный микрочемпион: процессор Fairchild, "файловая система" 32 KB

Третье направление прекрасно соответствует основному инженерному принципу "разделяй и властвуй" — если все требуемые функции "не втискиваются" в маленький микроконтроллер, если контроллеров существует множество, следовательно, надо реализовать относительно независимое от возможностей процессора устройство, выполняющее ряд необходимых функций. Фундаментальный "микрофункционализм" уступил место структурному. Первый и остающийся пока в одиночестве игрок на этом направлении — компания Seiko, создавшая микросхему S-7600A, полноценную аппаратную реализацию практически всех "низкоуровневых" протоколов (PPP/IP/UDP/TCP), нужных для создания микроминиатюрного Web-ориентированного устройства. В ближайшее время, вероятнее всего, одиночество Seiko будет нарушено совместной венгерско-американской компанией FlatStack, еще только готовящей к производству чип, в функциональном отношении близкий к S-7600A. Структурный "микрофункционализм", похоже, обладает неоспоримыми преимуществами перед своими предшественниками: аппаратная реализация достаточно сложной сетевой программной подсистемы, предельно простые аппаратно-программные интерфейсы — все это существенно освобождает ресурсы даже самых "слабеньких" 8-битовых чипов и упрощает разработку ПО. Единственный сегодняшний недостаток представителей "третьей волны" — сравнительно высокая стоимость (S-7600A "добавляет" к себестоимости разрабатываемого устройства порядка $8), вероятнее всего, сойдет на "нет" после появления хоть какой-нибудь конкуренции в этом секторе. К представителям третьего направления можно отнести и ожидающиеся в ближайшем будущем Java-процессоры производства Fujitsu, и, по большому счету, уже производящиеся и достаточно недорогие ($50) микроJava-Web-… контроллеры семейства Tini (Dallas Semiconductor).

Четвертое направление, казалось бы, не имеет отношения к микроминиатюризации Web-серверов, но… Оно обеспечивает "глобальную миниатюризацию" — устройств, расходов, времени на проектирование и развертывание систем… Поразительно, что вокруг технологии "глобальной миниатюризации" не только не наблюдается маркетинговой, но и (по причине ее очевидности?) инженерной активности. А ведь основная идея "глобальной миниатюризации" лежит на поверхности — если ликвидировать дублирующуюся во множестве устройств сложную функциональность, то высвободившиеся средства можно направить на создание одного дополнительного устройства, реализующего необходимые всей системе свойства. В нашем конкретном случае достаточно "убрать" из маленьких и дешевых микроконтроллеров все "сетевые игрушки" (в конце концов, большинство чипов из ценового диапазона $1—5 оснащены встроенными контроллерами последовательных интерфейсов), а высокоуровневые задачи решать с помощью высокоуровневых средств (например, обычного ПК на котором выполняются Web-сервер и специально разработанные cgi-программы, способные "общаться" с микроконтроллерами с помощью RS232/RS485). Даже в случае применения в роли "интегратора" сравнительно дорогостоящего ПК экономия на упрощении нескольких десятков или сотен контроллеров может уже дать заметную "миниатюризацию" расходов. Глобальной же она становится при использовании специализированного "интегрирующего" компьютера, например представителя трансформировавшегося первого направления. Рачительные немцы производят серийно подобные устройства, глобальная миниатюрность которых убедительно доказывается как невысокой ценой (около 400 DM), так и массой (200 г).

Последнее, пятое, направление автор еще недавно считал курьезом. Но после успешной реинкарнации Sinclair в карманном варианте GameBoy… короче говоря, "новое — это хорошо забытое старое". Сегодня в Сети можно найти десятки работающих Web-серверов, выполняющихся на самом неожиданном "железе" — здесь есть и те же Sinclair, и древние Atari, Yamaha, Commodore. Восьмибитовые игрушки в очередной раз доказали свой неигрушечный характер. Если учесть, что для них разработано море ПО, в том числе и инструментального, а их микропроцессоры до сих пор производятся (и, похоже, будут еще долго производиться), — кто знает, может, и для их реинкарнаций найдется очень интересное Web-будущее. По крайней мере, нельзя забывать о такой возможности.

Перспективы

Несмотря на сокращение количества публикаций, микроWeb остается сверхпопулярной технологией. В ней заинтересованы как потребители, так и производители. К "микроWeb-играм" подключаются все новые участники, которых нельзя игнорировать. Так, Hewlett-Packard открыла подразделение Agilent, специализирующееся на выпуске встраиваемых 32-битовых микрокомпьютеров, специально для микроWeb-систем промышленного назначения. Достаточно высокая стоимость изделий WebPlug от Agilent и их высокая популярность, по-видимому, приведут к ожесточенной конкуренции в растущем сегменте рынка. Особый интерес представляют и будут представлять разработки структурных микрофункционалистов — чипам, подобным Seiko S-7600A, принадлежит большое будущее. Полностью аппаратные микроWeb-серверы, позволяющие управлять группой микроконтроллеров, также должны появиться в ближайшее время: их экспериментальные реализации уже существуют. Поскольку степень интеграции таких устройств невысока и им не требуется больших тактовых частот, стоимость их будет снижаться (сегодняшний ее уровень иначе как спекулятивным назвать нельзя). В рамках модели, условно названной "глобальной миниатюризацией", могут появиться неожиданные альянсы — компании, безуспешно пытавшиеся освоить нишу "тонких Internet-клиентов", скорее всего, станут первыми серьезными игроками на микроWeb-поле. По крайней мере, для этого у них есть почти все. Наиболее вероятными лидерами уже называют QNX, Motorola, emWare и Hewlett-Packard.