Есть процессор, работающий на каком-нибудь мегагерце, есть 512 байтов оперативной памяти и 4 килобайта постоянной памяти и нужно вместить программу, выполняющую определённый функционал с нужной производительностью. Естественно ни о какой операционной системе и т.д. тут речь не идёт. Когда-то давно читал байку про человека, который потратил кучу времени на размышления и всё-таки сэкономил 2 байта, вместив программу. Такое вообще в нашем мире сейчас существует? Или это уже байки из склепа?
Здравствуйте, vsb, Вы писали:
vsb>Есть процессор, работающий на каком-нибудь мегагерце, есть 512 байтов оперативной памяти и 4 килобайта постоянной памяти и нужно вместить программу, выполняющую определённый функционал с нужной производительностью. Естественно ни о какой операционной системе и т.д. тут речь не идёт. Когда-то давно читал байку про человека, который потратил кучу времени на размышления и всё-таки сэкономил 2 байта, вместив программу. Такое вообще в нашем мире сейчас существует? Или это уже байки из склепа?
Например, обновление прошивок всяких вояжёров и других космических аппаратов, которые были выпущены очень давно или работают в жестких условиях/с Множеством дублей и потому не обладают мегабайтами/гигагерцами. Ещё Обычно оптимизации приходится решать, когда производитель сэкономил на железке и выпустил большую партию плат с каким нибудь дешевым и слабым mcu, и тебе приходится под него адаптировать алгоритм.
Здравствуйте, vsb, Вы писали:
vsb>Есть процессор, работающий на каком-нибудь мегагерце, есть 512 байтов оперативной памяти и 4 килобайта постоянной памяти и нужно вместить программу, выполняющую определённый функционал с нужной производительностью. Естественно ни о какой операционной системе и т.д. тут речь не идёт. Когда-то давно читал байку про человека, который потратил кучу времени на размышления и всё-таки сэкономил 2 байта, вместив программу. Такое вообще в нашем мире сейчас существует? Или это уже байки из склепа?
Вам квантовый компьтер надо. Там как раз ни о какой операционной системе речь не идёт.
Всякие интеллектуальные датчики/приборы учета и т.п., подразумевающие массовое применение. Лет десять назад общался с человеком, который работал в сфере программирования микроконтроллеров для счетчиков (уже не помню чего). Так вот, по его словам, путем утаптывания ассемблерной программы, получилось заменить применяемый микроконтроллер на другой, несколькими центами дешевле (ЕМНИМ, на 4-центовый). Для крупной серии экономия вполне приличная. Вряд ли сейчас в этой сфере что-то сильно изменилось, а в связи с IoT, который обещают воткнуть во все, что можно, эта тема окажется и еще и довольно актуальной.
Здравствуйте, vsb,
vsb> Такое вообще в нашем мире сейчас существует? Или это уже байки из склепа?
Существует. Но оно очень-очень зависит от требований Его Величества Заказчика. Потому что стоимость разработки с "утаптыванием байтов" заметно превышает среднепроектную. Если заказчик считает, что он отобьет эти затраты, — ну окей, будем утаптывать байты.
Лично участвовал в проекте, когда нужно было в маломощный процессор запихнуть новый функционал, а памяти-то — ек! А переразводить плату под другой проц и отлавливать чисто аппаратные глюки на этапе серийного производства, на документации с литерой и подписью ПЗ Заказчик уже не хотел, да и не мог по большому счету (после получения заветной литеры оно уже большой кровью дается). Тогда Заказчик заплатил очень неплохо У меня остались самые лучшие воспоминания о том проекте в смысле материального вознаграждения
Здравствуйте, vsb, Вы писали:
vsb>Такое вообще в нашем мире сейчас существует?
Как бы да, и намного больше, чем принято считать.
К примеру, байт туда, два сюда, и уже сообщение не влезает в один MTU с кучей далеко идущих последствий.
Здравствуйте, vsb, Вы писали:
vsb>Есть процессор, работающий на каком-нибудь мегагерце, есть 512 байтов оперативной памяти и 4 килобайта постоянной памяти и нужно вместить программу, выполняющую определённый функционал с нужной производительностью. Естественно ни о какой операционной системе и т.д. тут речь не идёт. Когда-то давно читал байку про человека, который потратил кучу времени на размышления и всё-таки сэкономил 2 байта, вместив программу. Такое вообще в нашем мире сейчас существует? Или это уже байки из склепа?
Да, в области дешёвых/массовых микроконтроллеров.
Здравствуйте, vsb, Вы писали:
vsb>Такое вообще в нашем мире сейчас существует? Или это уже байки из склепа?
ИБ.
Искать и изучать уязвимости надо в т.ч. в машкоде.
Один из конкретных примеров — шеллкод в эксплоитах. И каждый байт экономить надо, и писать (часто) так, чтобы нулевых байтов не было.
И прочие весёлые вещи, типа:
изучение новых архитектур, в т.ч. всяких экзотических VLIW
патч KDE под FreeBSD всего подряд прямо в машкодах.
Очень. НЕТ! ООЧЕНЬ много дизасма! Ассемблеры для разных CPU станут родными.
прямая работа с [IO]MMU и прочими DMA
егг-хантинг
композиция пакетов/форматов/протоколов, чтобы исполнение пошло по неведомым дорожкам
массаж различных куч (юзермодных, кернелмодных, встроенных)
восстановление порушенных системных структур
гонки, иногда с точностью до сотни тактов CPU
тонкости работы планировщика и отложенных вызовов
составление ROP/JOP цепочек
аккуратная работа со стеком
возврат из сервиса ОС в другое место
... и прочее
Здравствуйте, vsb, Вы писали:
vsb>Есть процессор, работающий на каком-нибудь мегагерце, есть 512 байтов оперативной памяти и 4 килобайта постоянной памяти и нужно вместить программу, выполняющую определённый функционал с нужной производительностью. Естественно ни о какой операционной системе и т.д. тут речь не идёт. Когда-то давно читал байку про человека, который потратил кучу времени на размышления и всё-таки сэкономил 2 байта, вместив программу. Такое вообще в нашем мире сейчас существует? Или это уже байки из склепа?
я то же читал эту историю
да существует, у меня друг так пишет хотя у него современный CPU и памяти мегабайты
но самому пришлось реализовывать mutex и поддержку файловой системы
Здравствуйте, vsb, Вы писали:
vsb>Когда-то давно читал байку про человека, который потратил кучу времени на размышления и всё-таки сэкономил 2 байта, вместив программу. Такое вообще в нашем мире сейчас существует? Или это уже байки из склепа?
В контексте оптимизации актуально даже на топовом железе. Многие вычислительные задачи полностью, либо же существенной частью упираются в скорость и latency перекидывания данных между разными уровнями иерархии памяти.
Размер кэш-линии современных процессоров — 64 байта. Вместив скажем 8 структур в одну кэш-линию, вместо одной, можно получить приличное ускорение.
Да даже если смотреть на RAM, если данные уместить в 1 гигабайт вместо 4, можно получить четырёхкратное ускорение на throughtput-bounded задачах типа линейного обхода
Здравствуйте, vsb, Вы писали:
vsb>Есть процессор, работающий на каком-нибудь мегагерце, есть 512 байтов оперативной памяти и 4 килобайта постоянной памяти и нужно вместить программу, выполняющую определённый функционал с нужной производительностью. Естественно ни о какой операционной системе и т.д. тут речь не идёт. Когда-то давно читал байку про человека, который потратил кучу времени на размышления и всё-таки сэкономил 2 байта, вместив программу. Такое вообще в нашем мире сейчас существует? Или это уже байки из склепа?
В автомобильной промышленности такие задачи встречаются при программировании различных датчиков и написании софта для устройств со слабыми процами. Хотя, все реже — процы становятся все дешевле и этот труд перестает окупаться. ИМХО, лучше менять направление работы, так как таких спецов нужно будет все меньше и значит конкуренция за рабочее место будет выше, что ведет к снижению зп.