Компания Softeq Flash Solutions, являющаяся R&D-центром южнокорейской корпорации SK Hynix, разрабатывает ПО для контроллеров накопителей на базе flash-памяти. Сейчас она ищет в команду Firmware-инженеров. dev.by пообщался с руководителем отдела тестирования Сергеем Глебовым и узнал, чем занимаются «фирмварщики» и почему это сложнее веб-разработки.
Это самый обычный программист, без рогов и копыт
Firmware-инженер — это самый обычный программист, работающий с низкоуровневым программированием. Он не три метра ростом, у него нет копыт и рогов, он не дышит огнём, разве что иногда. Сферу наших интересов можно разделить на два больших класса устройств: мобильная флеш-память, встроенная в телефоны (eMMC, UFS), и твердотельные накопители (SSD-диски). Занимаемся мы разработкой встроенного программного обеспечения. Другими словами, прошивкой.
«Фирмварщик» взаимодействует с драйверами и с самим «железом», поэтому у него должны быть навыки работы с электроникой. Хорошо, когда есть опыт её проектирования и программист понимает логику работы устройств, знает, как происходит взаимодействие на сигнальном уровне. Это не является необходимым условием, чтобы писать код. Но для того, чтобы код был хорошим, нужно понимать, что творится «под капотом».
Если софт «зашит» в устройство, то до него уже не добраться. Поэтому у нас многое «крутится» на симуляторах, так ведь проще — больше доступа «в кишочки». Бывают моменты, когда непонятно, почему система не работает. Вы со своей стороны, например, отправили данные, а они не появились на том конце. Тогда приходится брать осциллограф или анализатор протокола.
В Firmware-разработке есть такая чудесная вещь, как протокольная спецификация. И программисту приходится иметь дело с двумя талмудами, предъявляющими требования: с одной стороны — SSD, а с другой — Nand-память. Между этими приличного размера «книжками» приходится балансировать и делать хорошее, «живое» устройство.
Нужно быть башковитым и упрямым, чтобы работать десятки человеко-лет
«Фирмварщик», который разрабатывает гирлянды, наверно, практически не сталкивается с проблемами: зажёг лампочку — потушил. А флеш-память — это достаточно проблемная штука: то тормозит, то капризничает. К тому же флеш-память медленная, поэтому внутри классического накопителя живёт своя файловая система со сборкой мусора, перетасовыванием данных, распределением нагрузки и распараллеливанием записей.
В больших SSD-дисках одновременно работают десятки процессорных ядер, система всё время меняет своё состояние, поэтому воспроизвести какую-то проблему очень тяжело. Соотношение времени, которое Firmware-разработчик проводит в отладке и написании новых фич, отличается от того, что принято в разработке обычного софта. Здесь больше отладки и попыток понять, какого чёрта этот код не работает. Иногда бывает, что ошибки проектировщиков железа исправляют авторы прошивки.
Поскольку стоимость устройств увеличивается с объёмом памяти, нам необходимо работать над оптимизацией в двух направлениях: по размеру и по скорости. Мы не можем себе позволить «г...код». Нам необходимо думать о том, рационально ли расходуются ресурсы, сколько места в памяти занимает код, какого размера допустима структура данных и пр. Писать, не приходя в сознание, мы не имеем права.
Большая область, на которую тратятся огромные усилия, — это восстановление памяти после того, как внезапно пропало питание. Приходится придумывать алгоритмы, устойчивые к внезапной потере питания. Прошивка должна быть сделана так, чтобы предусматривать такие ситуации, и культурно вставать с колен за заданное время. Сложность нашего продукта такова, что нужно быть башковитым, спокойным и упрямым, чтобы отлаживать код. Прошивки для SSD-винчестера — это десятки, в редких случаях сотни человеко-лет работы.
Как обойти конкурентов и продать SSD-диски какому-нибудь гиганту
В нашей отрасли нельзя просто выпускать SSD-устройства и продавать их через магазины. Расходы на разработку таковы, что продажа в розницу — это тупик. Чтобы всё окупилось, нужно продать продукт какому-нибудь гиганту. Например, Dell собирается выпустить новый лэптоп и устраивает конкурс среди компаний, чтобы выбрать для него SSD-диски. Причём устройства должны быть именно с теми характеристиками, которые указаны в спецификации, не лучше и не хуже. И нам необходимо попасть в заданные рамки: производительность, цена, ёмкость и пр.
SSD-диски проходят достаточно жёсткое закрытое тестирование у заказчика: их «жарят» в печи, специально предназначенной для отработки температурных режимов. В течение месяца устройства проверяют скачками внутри температурного диапазона, при этом их одновременно читают и записывают. О том, что именно с нашими накопителями делают, мы не знаем — тесты никто не раскрывает. Если диск прошёл проверку, то его можно продать.
Конкуренция на рынке очень жёсткая. Если у конкурента на 5 тысяч IOPS (аббревиатура от англ. input/output operations per second — количество операций ввода-вывода в секунду) больше, то это провал. Поэтому производительность — это наше всё.
Если мы нашли ошибку в коде после того, как была проведена квалификация, то, по правилам, квалификацию нужно провести заново. Но, если ошибка не влияет на основные пользовательские характеристики, то мы постараемся этого избежать, иначе придётся заново запускать месячные тесты. В ПЗУ всё гораздо печальнее, потому что производить его начинают раньше, чем само устройство. Если мы всё-таки пошли на внесение изменений в прошивку, то новую утилиту в принципе можно выложить на сайт и оповестить об этом клиента. С ROM-кодом так не пройдёт. Этот код обеспечивает загрузку основной прошивки и начало её работы, поэтому зашивается намертво. Если эта функциональность перестанет вдруг работать, то мы получим «кирпич».
Если не произойдёт атомной войны, то рынок устройств для хранения данных продолжит расти
Возможности SSD-устройств постоянно увеличиваются, не удваиваются, конечно, каждый год, но растут достаточно быстро. Я ежегодно езжу на конференцию Flash Memory Summit, и там периодически жонглируют статистикой о приросте суммарного мирового объёма данных, хранимых человечеством. Причём в основном — это не что-то высоконаучное, а видео, селфи с котиками, порнография, в конце концов. Это и двигает нашу индустрию.
Если не произойдёт атомной войны, то рынок устройств для хранения данных продолжит расти. В будущем, возможно, ещё скажется тренд на ИИ. То, с чем сейчас люди работают — это маленькие и глупые нейросети, но скоро они станут умнее, и данные для них нужно будет где-то хранить.
Если нет опыта, можно сделать крюк через софт
У нас проекты длятся по году-два, поэтому мы играем не в короткую, а в длинную: инвестируем в сотрудников, проводим всевозможные курсы по повышению квалификации, стараемся поддерживать зарплату на достойном уровне — от $1500 до $5000. У нас нет жёсткой тарифной сетки, разделённой на junior, middle и senior. Такими сетками пользуемся только на входе, а дальше пересматриваем зарплату раз в год. Мы очень трепетно относимся к ядру команды, поэтому кто-то из ключевых фигур уходит редко, зато есть люди с основания компании — до 10 лет.
Если мы работаем с «железом», то это не значит, что у нас мужской коллектив. Процентов 20-30% сотрудников — женщины. Они у нас и тестируют, и код на «плюсах» пишут, и документацию ведут — всё то же самое, что и мужчины делают. Есть девушка, которая возглавляет крупную команду, в которой — большинство мужчин.
Рынок Firmware-разработки «нетолстый», поэтому найти специалистов сложно. Но при прочих равных на входном собеседовании, на мой взгляд, женский пол — это преимущество. Иногда к нам приходят люди, которые ранее увлеклись хардверной разработкой, а недавно взяли двух увлечённых студентов. Если человек хочет разрабатывать прошивки, но у него нет такого опыта, то можно сделать крюк через разработку обычного софта, получив там опыт на С, С#, С++, Python. Cам «фирмварь», кстати, пишется на чистом С.
Я считаю, что не существует книжек, начитавшись которых вы станете хорошим специалистом в какой-то области. Общий постулат «без практики вы никто» применим и здесь. Книжки — хорошее подспорье, но они не определяют бытие. Везде необходима практика, а в Firmware-разработке её нужно немного больше.
Компания Softeq Flash Solutions приглашает на собеседование специалистов в Firmware-разработке. Отправлять резюме можно на почту: [email protected].
Фото: Андрей Давыдчик
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.