Регистрация на РИФ.Иннополис и OS DAY
Зарегистрироваться
Антон Бондарев, Генеральный директор компании Embox, а также один из основателей одноименного проекта с открытым кодом по созданию ОСРВ для встраиваемых систем.
После окончания СПбГЭТУ “ЛЭТИ” занимался встраиваемыми системами в медицине и измерительной технике. Более десяти лет проработал в компании “Ланит-Терком”, где занимался ПО для средств связи и специализированных вычислителей.
Увлечению системным программированием способствовала тесная связь компании и кафедры системного программирования СПбГУ. Как и любой программист, мечтал написать свою операционную систему, что в итоге и было реализовано в проекте Embox.
В докладе рассматриваются вопросы создания конкурентоспособной микроэлектроники — прежде всего, процессоров и микроконтроллеров. Затрагиваются как административные вопросы, например, о том, считать ли российской сборку на базе ядра Linux, так и технические, например, о необходимой программной экосистеме для процессора.
Технические аспекты рассматриваются исходя из опыта переноса ОС Embox на оригинальные архитектуры, в том числе — на процессор Мультиклет.
Сегодня часто слышны различные, порой противоположные, мнения, о том существуют или нет отечественные процессоры и операционные системы, а так же целесообразность и методы их создания.
Причинами, по которым из всего множества элементов, необходимых для создания информационных систем, выбираются именно эти два компонента, на первый взгляд, можно считать, во-первых, тот факт, что они занимают ключевую роль в создании систем, а во-вторых, это, пожалуй, самые технолигически сложные, а следовательно и трудозатратные (наукоемкие) компонетны. Но если заглянуть глубже, то без компиляторов (трансляторов), которые по своей сложности не уступают процессорам и ОС, также не может существовать вычислительной системы. А значит причина, по крайней мере основная, в другом. Скорее всего, эти компоненты были широко разрекламированны компаниями Интел и Майкрософт, ведь именно с продуктами этих двух компаний у большинства людей ассоциируется термины “процессор” и “операционная система”.
С другой стороны, когда говорят о процессоре и операционной системе, в применении к компаниям Интел и Майкрософт, забывают, что они были основой инновационной для своего времени идеи персонального компьютера. То есть, они не создавались как “процессор” и “операционная система”, а обеспечивали какие-то запросы рынка.
На данный момент можно выделить два подхода, которые предлагают для создания “отечественного” процессора или операционной системы. Первый — это скопировать, купить или ещё каким-либо путем получить уже существующие технологии; к такому подходу следует отнести покупку процессорных ядер и создание дистрибутивов Linux. Второй подход — не копировать существующее, а создать свою технологию. Примерами могут послужить процессоры Мультиклет или Эльбрус, которые имеют оригинальную архитектуру.
Оба предлагаемых подхода имеют своих сторонников и противников. Например, многие считают, что дистрибутив Linux не может считаться отечественным. С процессорами ситуация ещё серьезнее, ведь в России нет фабрик с современными технологическим процессом, а также не ясно, является ли купленные ядра ARM, MIPS и другие отечественными. Сторонники заимствования технологий, обычно ссылаются на то что, за сборку Linux, так же, как и при покупке процессорного ядра, не нужно делать лицензионных и других отчислений. К тому же, они справедливо ссылаются на отсутствие аналогичных российских технологий. Но фактически, во всех этих случаях речь идёт только о том, как получить данные технологии, и не говорится о тех системах, для которых эти базовые технологии предназначены. То есть, если целью является создание собственного персонального компьютера, то требования к технологиям одни, если нужно создать платформу для интернета вещей, они другие, а если серверные (облачные) платформы — третьи. Причём все они кардинально различаются, и создание единой платформы для всех этих сегментов не только будет крайне дорогой, но и приведёт к неэффективности системы в каждом из отдельно взятых сегментов.
Создание же ряда специализированных платформ для всех сегментов также будет неоправданно дорогим, и вряд ли данное решение будет конкурентоспособным, в силу ограниченности ресурсов выделенных на разработку.
С другой стороны, в ряде промышленных сегментов недопустима технологическая зависимость. А наличие компетентных и специалистов с компитенциями создания базовых технолигий, является необходимым. Речь идет не о чисто российской технолигии и не о юридической принадлежности к той или иной стране, речь прежде всего идет о возможности создания конкурентноспособных технолигических продуктов вне зависимости от политической и экономической ситуации в мире. Поэтому возможной моделью является развитие экосистемы компаний и специалистов, работающих на базе проектов с открытым кодом.
Ещё одной необходимой мерой для создания конкурентоспособных продуктов является тесная работа с промышленными предприятиями в поддерживаемых сегментах. Только потребители могут сформулировать те проблемы, которые можно было бы решить с помощью IT-технологий, в частности, процессора и ОС.
Кроме административных есть ряд технологических трудностей, которые возникают при попытке создания отечественного процессора. Наверное, самой большой проблемой является то, что непосредственное создание процессора представляет — только часть всей работы. Чтобы процессор можно было использовать, необходимо разработать достаточно много ПО. Естественно, первым этапом является поддержка языков высокого уровня, причём это должны быть актуальные языки и стандарты, ведь если не обеспечить поддержку языков, на которых уже написано огромное количество ПО, все это придётся разрабатывать с нуля и поддерживать самостоятельно.
Приведу пример. В рамках работ в компании Ланит-Терком по созданию специализированного вычислительного комплекса было решено создать процессор с оригинальной архитектурой на основе ПЛИС. Решение основывалось на том, что в этой же компании совместно с СПбГУ велись работы над технологией, позволяющей упрощать разработку процессора с оригинальной системой команд. Итогом работ стал код процессора и ассемблер, совместимый с компилятором gcc.
Проблемы возникли при первой же попытке использования. Причём они касались не только технических характеристик процессора. Например, там отсутствовал кэш и, следовательно, вычислительная способность упиралась в производительность памяти, не поддерживались прерывания. Но гораздо большей проблемой был тот факт, что компилятор имел серьезные ограничения: не поддерживал оптимизации, не все ассемблерные команды поддерживались, не было математической библиотеки и так далее. Всё это вкупе с ограничениями процессора просто не позволяло его использовать в работе. Возникли проблемы даже с демонстрацией заказчику, ведь чтобы увидеть, что процессор работает, нужно запустить на нём хоть какое то ПО. Проблему с демонстрацией решили с помощью проекта Embox, который выступил в тот момент в качестве небольшой ОС. В процессе подготовки к показу, было исправлено несколько ошибок в процессоре, компиляторе и ОС, и демонстрация прошла достаточно успешно. Но на следующем этапе было решено отказаться от оригинальной архитектуры и создать собственную реализацию спецификации процессора microblaze. Решение было связано с тем, что была осознана вся сложность поддержки ПО для собственного процессора.
Похожая ситуация сложилась во время работы по обеспечению поддержи процессора Мультиклет в проекте Embox. Заявленное наличие компилятора для языка Си делало поддержку архитектуры вполне реальной. Но оказалось, что данный процессор имеет очень ограниченную поддержку со стороны ПО: отсутствует отладчик, загрузчик умеет грузить только с определенного адреса, компилятор поддерживает только C89, не поддержаны attribute или его аналог, и всё это сделало перенос проекта на данную платформу очень затруднительным. Кроме того, поддержка со стороны производителя оставила желать лучшего. На любой вопрос предлагалось запустить несколько имеющихся примитивных примеров. Создавалось ощущение, что ресурсов на поддержку ПО просто не хватает. Итогом работ стал примитивный “Hello world!”, выведенный через функцию форматированного вывода printf, а дальнейшие работы по данному направлению в проекте было решено заморозить.
Оба приведённых примера демонстрируют необходимость программной экосистемы процессора, ведь моделировать и показывать какую-то цифру производительности явно не достаточно для того, чтобы считать процессор состоявшимся (“существующим”). И, вероятно, именно поэтому предыдущие попытки создания вычислителей включали в себя средства разработки. Примером является вычислительный комплекс “Багет”, который включал в себя не только процессор с архитектурой MIPS, но и компилятор и ОС Багет (ОС2000).
Подход, при котором одна и та же компания разрабатывает и ПО, и процессор также имеет две стороны. С одной — взаимодействие быстрое и эффективное, но с другой — техническая сложность этих частей не позволяет добиваться хороших результатов из=за простой нехватки ресурсов. В случае нехватки ресурсов, предпочтение, конечно, отдается процессорам, что сказывается на качестве ПО.
Данную проблему не решают разделением этих частей на разные компании/проекты, но, конечно, эти компании очень тесно взаимодействуют. Хорошим примером подобного подхода служит проект Linux. Компании-производители процессоров и прочей аппаратуры вкладывают серьезные ресурсы в развитие данного проекта и, конечно, поддержки своей платформы. То же касается и поддержки компиляторов.
На сегодняшний день российский процессор скорее не существует, чем существует. Это обусловлено несколькими факторами:
Решением может служить поиск специализированных ниш применения вычислительных комплексов и более тесное взаимодействие разработчиков аппаратуры с производителями ПО.