Подборка
Битовые маски: о системном программировании простыми словами

Битовые маски: о системном программировании простыми словами
Автор: Елена Лепилкина и Антон Афанасьев
Подписка оформлена: 81Воспроизведенные: 924Подписаться
поделиться
2025 © Елена Лепилкина и Антон Афанасьев. Все права защищены.
Описание
Системное программирование и разработка процессоров — область довольно узкая. Но именно в ней работает множество отличных профессионалов, создавших продукты, которыми программисты пользуются ежедневно. Мы познакомим вас с этими экспертами, расскажем об актуальных задачах, которые решают в отрасли, и покажем варианты развития для системных программистов и тех, кто хочет ими стать.
23 Episodes
Reverse
В 23 выпуске «Битовых масок» к Антону Афанасьеву и Елене Лепилкиной присоединилась Алина Галичина из группы модульной верификации YADRO. Алина получила высшее образование на кафедре волоконно-оптических систем связи и перешла в разработку и верификацию цифровых схем. Кроме того, у героини есть несколько патентов, связанных с реализацией алгоритмов цифровой обработки сигнала.
С Алиной ведущие обсудили множество вопросов, связанных с разными типами верификации, погрузились в трассировку печатных плат и порассуждали об аппаратной разработке в принципе. Как обещали, прилагаем ссылки на публикации и патенты Алины.Видео на YouTube: https://youtu.be/1Syc3UQ4BWgВидео на Rutube: https://rutube.ru/video/457793032a3949795ad34d07204f41bc/Статья https://habr.com/ru/articles/588703/Тайм-коды:
00:05 - Тизер
01:05 - Представление Алины Галичиной
01:54 - Путь Алины в RTL-разработку. Источники знаний по RTL и верификации
07:43 - Связь цифровой обработки сигналов и FPGA
12:05 - В чем разница написания под FPGA и под ASIC
17:01 - Симуляторы для FPGA: зачем они нужны, какие ограничения имеют
22:54 - Трассировка печатных плат и цена ошибки на этом этапе
29:14 - Искусственный интеллект в САПР
33:23 - Какие существуют виды верификации
38:18 - Инструменты для функциональной и формальной верификации
42:01 - На каких этапах лучше использовать функциональную, а на каких — формальную верификацию
47:39 - Полное функциональной покрытие: насколько оно реализуемо
52:54 - UVM-методология и новые фреймворки для верификации
56:31 - Нужна ли функциональная верификация для маленьких блоков
1:00:36 - Влияние архитектуры процессора на его верификацию
1:05:25 - Случайные тесты в верификации
1:06:48 - Специфика верификации Wi-Fi-чипов
1:11:21 - Дополнительные задачи в процессе верификации
1:13:17 - Разница в верификации аналоговых и аналогово-цифровых схем
1:16:03 - Дороговизна верификации аналогово-цифровых схем
1:17:50 - Автоматизация для верификаторов
1:25:05 - Чем должна заканчиваться работа верификатора
1:29:27 - Методологии автоматизации в верификации
1:33:38 - Как упростить анализ верификационных тестов в RTL
1:36:58 - Консервативность и мотивация в разработке «железа» по сравнению с разработкой ПО
1:40:01 - Оптимизация рабочих процессов в верификации
1:47:25 - Создание тестового окружения с нуля
1:49:49 - Проблемы при автоматизации верификационных тестов
1:52:25 - Open-source в RTL и верификации
1:54:38 - Заключение#RTL #FPGA #верификация
Гостем 22 выпуска подкаста «Битовые маски» стал Сергей Пушкарёв — руководитель отдела разработки BIOS в YADRO. Сергей начал работу с BIOS и UEFI ещё в университете и может очень много рассказать об этой области.
С Еленой Лепилкиной и Антоном Афанасьевым наш герой во всех подробностях разобрал, что происходит на самом низком уровне софта после того, как пользователь нажимает кнопку включения компьютера. Параллельно осветил разные подходы и типичные проблемы разработки в своей сфере, тонкости взаимодействия драйверов, а также разницу между BIOS и UEFI. А напоследок ответил, к чему приводят баги в BIOS и как стараются их избежать, если цена ошибки слишком высока.Видео на YouTube: https://youtu.be/W2Ekb4cYyu4?si=5f48Q_I0EPNPR0oCВидео на Rutube: https://rutube.ru/video/195cd63bef2d862bdbeb39daabc461cb/?r=wd&p=JPSKHjFN3o9HGlK5Ipi72A0:00 - Тизер
1:12 - Представление Сергея Пушкарева
2:11 - Карьерный путь Сергея
4:50 - История развития BIOS и UEFI и разница между ними
11:28 - Достоинства UEFI
14:14 - Стадии работы UEFI
15:09 - Что работает до UEFI
18:25 - Стадия SEC и режим Cache-Is-RAM
22:58 - Стадия PEI
27:54 - Переход в 64-битный режим
28:42 - PE-файлы,Terse Executable и вопросы производительности
30:46 - DXE стадия и запуск драйверов
33:02 - Протоколы для взаимодействия драйверов
37:58 - Эволюция спецификации: новые архитектуры, Device path для нового железа
40:31 - Загрузка ноутбука через Wi-Fi, разница драйверов Linux и UEFI
42:58 - Работа разработчиков BIOS
44:06 - Баги в UEFI
46:45 - Разработка UEFI под новую платформу
50:38 - Взаимодействие BIOS с BMC, Redfish
53:22 - Разработка драйвера на EDK2
59:55 - Нужен ли ассемблер разработчику BIOS
1:04:13 - Как поменялся процесс загрузки с приходом UEFI
1:05:51 - Взаимодействие BIOS и операционной системы
1:07:20 - Как UEFI работает на ARM
1:11:29 - VFR - DSL-язык для описания меню
1:14:23 - Активное использование Open-Source
1:16:22 - Рынок компаний разработчиков UEFI
1:20:33 - Разработка UEFI для системы, которой нет в железе
1:21:37 - Баги в релизах и процесс тестирования
1:25:59 - Дальнейшее развитие BIOS: ускорение работы, драйверы на Rust
1:35:07 - Заключение
#UEFI #BIOS #драйвер #x86
В 21-м выпуске подкаста «Битовые маски» к Антону Афанасьеву присоединились сразу два гостя из YADRO. Валентин Петров — главный архитектор отдела исследований производительности и моделирования архитектур, ранее разрабатывал суперкомпьютеры в Mellanox и Nvidia. Евгений Бесчастнов — эксперт группы разработки симуляторов и моделей производительности, до этого занимался симуляторами ядер процессоров в Synopsys.
Главной темой выпуска стали симуляторы процессорных архитектур. Наши герои обсудили, что представляют собой и чем различаются симуляторы и эмуляторы, связанные с ними проблемы и их решения. Отдельно рассмотрели саму разработку симуляторов, сценарии их использования и, основываясь на своем опыте, вывели три компонента успеха в разработке симуляторов процессорных архитектур. В завершение выпуска Валентин и Евгений оценили, какие качества наиболее важны для специалистов в их сфере, а также где можно научиться разработке симуляторов процессорных архитектур.Видео на YouTube: https://youtu.be/4rgJuQNpINIВидео на Rutube: https://rutube.ru/video/dd89e58319604e6de760ef208304178f/00:00:00 — Тизер
00:00:44 — Представление Валентина и Евгения
00:01:45 — Карьерный путь Валентина
00:03:24 — Карьерный путь Евгения
00:07:58 — В чем разница симулятора и эмулятора
00:11:13 — Классификация симуляторов
00:16:41 — Скорость работы симуляторов и способы ее увеличить
00:21:08 — Пользователи симуляторов
00:22:52 — Процесс разработки симулятора и связь с разработкой процессора
00:25:48 — Насколько быстрее разработать симулятор, чем железо
00:33:46 — Какой софт можно запустить на симуляторах и в каких режимах
00:36:54 — Необходимые знания и фреймворки для создания симуляторов
00:44:44 — Баги в симуляторах и их причины
00:54:50 — SystemC
01:00:02 — Самые сложные аспекты для симуляции
01:06:04 — Использование AI в разработке симуляторов
01:09:14 — Что нужно знать для разработки симуляторов
01:14:50 — Заключение
В юбилейном, 20-м выпуске подкаста «Битовые маски» мы решили затронуть новую для себя сферу высоких технологий. На этот раз к ведущим присоединился Василий Рамаданов, один из разработчиков базовой станции YADRO. Василий успел поработать во многих компаниях, в том числе «Океанприбор» и Pelengator, Luxoft и Nokia, а сейчас также выступает на конференциях по C++.
С Василием мы обсудили профессию инженера в телекоме, разобрали первые два уровня модели OSI, особенности DSP-процессоров, а также специфику тестирования и других рабочих процессов. Наш гость рассказал про использование стандартов индустрии, объяснил, почему код для радиоаппаратуры все еще пишут на C++, а не на других высокоуровневых языках. Не осталась без внимания и преподавательская работа: Василий рассказал о предмете, который преподаёт в СПбГЭТУ «ЛЭТИ», и о том, достаточна ли вообще вузовская программа для будущих телеком-специалистов.
Видеоверсия выпуска: https://youtu.be/9es958WfSOE 0:00 - Тизер
0:49 - Представление Василия
2:13 - Работа в аналоговой схемотехнике
5:04 - Переход в цифровую обработку сигналов и работа с радиолокаторами
10:38 - DSP-процессоры и их отличие от CPU
14:22 - Зачем писать высокоэффективный код в телекоме
16:58 - Роль FPGA в программно-аппаратных комплексах
21:08 - Выбор конфигурации архитектором
23:30 - Устройство базовой станции
27:15 - Модель OSI и уровни L1-L3 в базовой станции
33:40 - Задачи радиомодуля
36:20 - Real-time в телекоме
42:03 - Дополнительное ПО для разработки базовой станции
47:09 - Оптимизации алгоритмов для базовых станций
57:35 - Тестирование и профилирование базовой станции
1:08:43 - Критерии качества базовой станции
1:13:21 - Отличия шумов и искажений
1:15:54 - Разработка новой базовой станции с использованием другой аппаратуры
1:21:24 - Высшее образование в сфере телеком
1:29:04 - Анонс конференции: https://sysconf.pro/
В 19 выпуске к ведущим подкаста «Битовые маски» присоединился Антон Бондарев, создатель и активный разработчик Embox — свободной кросс-платформенной RTOS для встроенных систем.
Руководствуясь богатым опытом разработки собственной операционной системы, Антон проанализировал использование Linux для встроенных систем и описал сферы, где другие операционные системы (в том числе Embox) выглядят предпочтительнее. Мы обсудили нюансы поддержку разных архитектур в ОС, проблемы портирования драйверов, порассуждали о том, насколько Linux и другие ОС могут быть настоящими real-time ОС и насколько каждая из них POSIX-совместимая. Наконец, обсудили развитие студентов в сфере системного программирования — в том числе на примере самого́ Антона, начинавшего проект Embox еще в аспирантуре матмеха СПбГУ.
Видеоверсия выпуска на YouTube: https://youtu.be/1LUFhkkKNnkВидеоверсия выпуска на Rutube: https://rutube.ru/video/d65d6dfb18a095e59d17b0501beb8dbb/Embox: https://github.com/embox/embox
Упомянутые статьи на Хабре: https://habr.com/ru/articles/844288/ и https://habr.com/ru/articles/777302/
✅Подписывайтесь на Telegram-канал подкаста: https://t.me/+bx50QfUlw4pkZDEy🔹Станьте частью команды YADRO! https://careers.yadro.com0:00 - Тизер
0:50 - Представление Антона Бондарева
1:54 - Начало карьеры
4:17 - Причина создания Embox
4:55 - Развитие Linux для embedded и real-time систем
9:38 - Проблемы Linux, которые не позволяют его использовать в некоторых проектах
14:08 - Особенности Embox
22:52 - DSL язык для конфигурирования ОС
29:01 - Разработка драйверов и прикладных программ для Embox
38:55 - Поддержка Tcl в Embox и верификация на ПЛИС
42:24 - Внутреннее устройство Embox и тестирование ОС
49:08 - Конкуренты среди RTOS
51:24 - POSIX-совместимость
56:49 - Embox — ОС реального времени?
58:14 - Поддержка процессорных архитектур в Embox
1:01:55 - Портирование на RISC-V
1:14:22 - Активная работа со студентами
1:25:03 - Заключение
Гость 18 выпуска подкаста — Юрий Панчул, человек, знакомый большинству людей, занимающихся дизайном процессоров, один из основателей и создателей программы Школы синтеза цифровых схем. В портфолио Юрия — работа в MIPS Technologies, Juniper Networks, а также собственный стартап C Level Design. Сейчас он разрабатывает GPU в Samsung Advanced Computing Lab.
В беседе с ведущими Юрий рассказал о своем профессиональном пути начиная с физико-математической школы, об участии во многих интереснейших проектах отрасли. Параллельно мы узнали, как в принципе развивался дизайн процессоров и как он в действительности организован с точки зрения бизнеса. От самой индустрии мы перешли к обучению специалистов: Юрий сравнил подходы в разных странах и дал советы о том, как нужно развиваться студентам, чтобы сразу попасть в штат крупнейших мировых производителей. И наконец — как эти требования учитываются в программе Школы синтеза цифровых схем.Видеоверсия на YouTube: https://youtu.be/ENLD3MnVYqkВидеоверсия на Rutube: https://rutube.ru/video/911232a579f00664771e3df49ad9a16b/0:00 - Тизер
0:57 - Представление Юрия Панчула
2:19 - Путь Юрия в отрасль: от разработчика компилятора до дизайнера процессоров
9:23 - Чем проектирование процессоров отличается от разработки ПО
15:22 - История развития подходов к проектированию аппаратуры
24:03 - High-level синтез: идеи, подходы и проблемы
36:01 - Какие подходы к проектированию могут повысить производительность труда дизайнеров в будущем
43:23 - Монополия 3-х компаний, создающих инструменты для проектирования процессоров
52:24 - Развитие open-source инструментов для проектирования
58:35 - Как происходит разработка чипов: процесс, роли и задачи
1:18:22 - Подходы для обеспечения качества процессоров
1:23:10 - Баги с арифметикой чисел с плавающей точкой
1:25:41 - Post-silicon debug
1:30:23 - Проблемы в образовании дизайнеров процессоров
1:35:22 - Перевод книги Д.Харриса и С.Харрис «Цифровая схемотехника и архитектура компьютера»1:39:02 - Проблемы в вузовских программах по всему миру
1:41:44 - Какие практические задания нужно давать студентам
1:52:00 - Советы от Юрия начинающим дизайнерам
1:58:16 - Заключение
В этом выпуске мы побеседовали с Николаем Иготти — разработчиком с опытом сразу во многих сферах системного программирования. Николай разрабатывал виртуальные машины (Java HotSpot), компиляторы (Kotlin/Native), гипервизоры (VirtualBox). Также в портфолио нашего гостя — браузеры Firefox, Chrome и высокопроизводительные системы хранения.
Николай рассказал о преемственности виртуальных машин, различных моделях памяти, дизайне современных языков программирования и их subsetting'e. Порассуждал с ведущими о проблемах существующих компиляторов, о системном программировании и его развитии. Также Николай раскрыл уникальности виртуальной машины V8, преимущества TypeScript в ракурсе метапрограммирования и особенности WASM.Эти и многие другие темы — в 17-м эпизоде подкаста. Бонус — разбор того, что не давало запустить VirtualBox c MacOS на архитектуре x86.Упомянутая конференция по системному программированию: https://sysconf.pro/Видеоверсия выпуска на YouTube: https://youtu.be/6eW6Jvs7lfUВидеоверсия выпуска на Rutube: https://rutube.ru/video/487aa879a208d021081bc03513e6adf0/✅Подписывайтесь на Telegram-канал подкаста: https://t.me/+-VUGCsSM9Do3MTQy🔹Станьте частью команды YADRO! https://careers.yadro.com0:00 — Тизер
0:48 — Представление Николая Иготти
1:24 — Карьерный путь Николая
6:16 — HotSpot, V8, Dart VM: преемственность и отличия виртуальных машин
9:23 — Модели памяти и сложности управления памятью для конкурентного кода
12:24 — Связь VM и процессора
19:35 — Нативная компиляция
27:09 — Гипервизоры / работа в VirtualBox
37:21 — Особенности системного программирования и отличия от прикладного
44:15 — Чему нужно учить будущих системных программистов
47:34 — Система типов и спекулятивная типизация в V8
51:51 — Есть ли место R&D в современном системном программировании
1:10:02 — Интероперабельность разных языков
1:15:30 — Проблемы при создании нового языка
1:17:45 — Интересные компиляторные задачи
1:22:26 — Почему создание современных UI-фреймворков - это компиляторная задача
1:25:13 — Проблемы большинства современных компиляторов
1:34:01 — Subsetting языков программирования
1:39:49 — Разница западных и восточных IT-компаний
1:48:51 — Стоит ли преподавать системное ПО на курсах вне ВУЗа
1:53:50 — Заключение
1:55:42 — Анонс конференции sysconf
В этом выпуске мы продолжим погружаться в тему системного программирования и познакомим вас с Дмитрием Точанским — инженером с опытом работы более 20 лет в сферах системного и embedded-программирования. Дмитрий пришел в системное программирование из системного администрирования, куда его привела любовь к Linux. А свой первый дистрибутив этой ОС Дмитрий получил еще в начале 2000-х чуть ли не из-под полы.
Как устроены системы цифровой обработки сигналов и какие аппаратные и программные решения там используются? Стоит ли использовать Linux в качестве real-time операционной системы? Какие проблемы есть при портировании Linux на RISC-V? Почему в ядре Linux еще не перешли на Rust и неизбежен ли уход с C? Какая архитектура ОС лучше: микроядерная или монолитная?
Эти и другие темы в 16-м выпуске обсудят с Дмитрием ведущие подкаста. Бонус для слушателей — рассказ о том, как охотились за пиратскими радиостанциями!
👉 30 октября на YADRO x SPbLUG Linux Kernel Meetup Дмитрий Точанский выступит с докладом о создании собственного модуля Memory Extender. Открыта запись на онлайн- и очное участие, присоединяйтесь: https://engineer.yadro.com/kernel-meetup-1/?utm_source=audiostream&utm_medium=referral&utm_campaign=bitmask_01102024
Видеоверсия выпуска: https://youtu.be/xCIJvf0879A✅Подписывайтесь на Telegram-канал подкаста: https://t.me/+bx50QfUlw4pkZDEy
🔹Станьте частью команды YADRO! https://careers.yadro.com0:00 — Тизер
0:40 — Представление Дмитрия Точанского
1:44 — Как Дмитрий пришел в системное программирование
4:00 — Работа в разработке встраиваемых систем и ЦОС
8:14 — DSP-процессора и работа с ними
14:32 — Работа с ПЛИС и "плисоводами"
16:20 — hal и операционные системы на DSP-процессорах
20:44 — Поддержка real-time в RTOS
24:49 — Использование Linux в real-time системах
30:45 — Contiguous Memory Allocator
32:54 — Гибкость Linux
35:11 — Монолитность и модульность ядра Linux
40:50 — Какая архитектура лучше: монолитная или микроядерная?
43:47 — DPDK как решение проблем с производительностью
47:13 — Портирование Linux на RISC-V SoC
48:54 — iommu
52:00 — Современные драйверы для Linux
55:48 — Проблема со стандартами
57:47 — Проблемы с iommu в RISC-V
59:26 — Множество fork-ов Linux
1:06:07 — Уровень поддержки микроархитектурных особенностей в Linux
1:09:15 — Патчи в upstream Linux
1:12:52 — Rust в ядре Linux
1:18:06 — Конкуренция других ОС с Linux
1:22:27 — Не умрет ли Linux
1:24:21 — Возможный сценарий распространения Rust в Linux
1:27:42 — Анонс Linux Kernel Meetup и доклада Дмитрия
1:29:20 — Заключение
В гостях у «Битовых масок» — Андрей Карпов и Юрий Минаев из PVS-Studio. Андрей более 15 лет занимается статическим анализом кода, изучает качество программного обеспечения и пишет статьи и книги о программировании на С++. Юрий, архитектор C++ анализатора PVS-Studio, глубинно дописывает и переписывает парсер и прочие внутренности C++ анализатора.В новом выпуске инженеры рассказывают о том, с чего начиналась разработка статического анализатора PVS-Studio и как работает команда сегодня.
Как устроен статический анализ и в чем главные отличия от линтера и фронтенда компилятора? Почему PVS-Studio не использует LLVM? Для каких диагностик важен Data-Flow анализ и насколько тяжело пока обходиться без CFG? Что нужно знать и уметь, чтобы попасть на работу в PVS-Studio? Что регулирует ГОСТ на статический анализ и правда ли он помогает в построении процессов? Разбираемся в этих вопросах в пятнадцатом выпуске «Битовых масок».
Видеоверсия выпуска на YouTube: https://youtu.be/fYWW5HRn9aY✅Подписывайтесь на Telegram-канал подкаста: https://t.me/+bx50QfUlw4pkZDEy
🔹Станьте частью команды YADRO! https://careers.yadro.com0:00 — Тизер
1:08 — Представление Андрея и Юрия
2:28 — Знакомство с программированием
6:50 — Поиск кадров в Туле
18:12 — С чего началась работа PVS-Studio
22:08 — Как Юрий пришел в разработку статических анализаторов
23:33 — Конкуренты PVS-Studio
25:15 — Статистический анализ
26:45 — Сравнение с clang-tidy
27:44 — Почему не используется LLVM
29:31 — Любимые и нелюбимые компиляторы
32:02 — Еще причины не использовать LLVM
33:44 — Ошибки в компиляторах
35:10 — Как компиляторы уменьшают количество ошибок
36:36 — Проблема с лямбда-функцией
37:48 — Стоит ли проверять все варианты компиляторов
39:59 — Разница между компилятором и статическим анализатором
41:13 — Этапы статического анализа и дополнительная метаинформация
47:53 — Перенос диагностик из статического анализа в компиляторы
51:06 — Сравнение с другими статическими анализаторами
54:31 — Внутреннее устройство PVS-Studio и самые сложные части
1:05:17 — Что можно улучшить в C++ и почему PVS-Studio написан на C++
1:08:51 — Диагностики в PVS-Studio
1:13:53 — Межпроцедурный и межмодульный анализы
1:15:22 — Data-Flow анализ
1:24:12 — ГОСТ на статический анализ кода
1:29:59 — Undefined behavior
1:34:52 — Появятся ли новые ошибки при обновлении компилятора
1:36:46 — Статический анализ для встраиваемого ПО
1:40:48 — Работа со сторонними библиотеками
1:45:05 — Диагностики для оптимизации кода
1:51:51 — Диагностики, специфичные для архитектуры
1:52:55 — Удаленные диагностики
1:54:06 — Планы на будущее PVS-Studio
1:55:28 — Заключение
Продолжаем знакомить вас с профессионалами в области низкоуровневого программирования. Гость нового выпуска — Пётр Советов, разработчик компиляторов для спецпроцессоров, специалист в сфере технологий компиляции и синтеза программ, преподаватель РТУ МИРЭА и известный докладчик профильных конференций.
В этом выпуске Антон Афанасьев обсуждает с гостем предметно-ориентированные языки, проектирование специализированных ускорителей и компиляторов, а также возможную пользу от изучения истории алгоритмов. Когда требуется новый предметно-ориентированный язык и компилятор для него? Есть ли в России сильные курсы по разработке компиляторов? Чем инженеру полезно знание экзотических языков? Почему наступает золотой век специализированной архитектуры? Есть ли практическая польза в изучении исследований прошлых лет? Ответы на эти и другие вопросы ждут вас в четырнадцатом выпуске подкаста.
Видеоверсия выпуска: https://youtu.be/UHFSEsiMVjY✅Подписывайтесь на Telegram-канал подкаста: https://t.me/+bx50QfUlw4pkZDEy
🔹Станьте частью команды YADRO! https://careers.yadro.com0:00 — Тизер
0:49 — Представление гостя
3:01 — Как Пётр начал программировать или игра в Basic
7:40 — Язык программирования Forth
12:08 — DSL-языки
22:11 — Учеба в университете
25:05 — Как писать на Forth
29:16 — Карьерный путь и задачи
45:30 — Этап стартапов
54:33 — Работа в вузе
1:01:44 — Компиляторные курсы в России
1:07:39 — Экзотические языки
1:10:42 — Что показывать студентам
1:11:41 — Точки притяжения системного программирования в России
1:13:40 — Будущее языков программирования
1:17:03 — Спецпроцессоры и важность codesign
1:25:00 — Расширяемость RISC-V и стандартизация
1:29:32 — Почему наступает золотой век специализированной архитектуры
1:32:00 — Программируемость ускорителей
1:36:57 — Инструменты для быстрой разработки компиляторов
1:49:21 — Супероптимизация
1:52:08 — История советской компиляторной школы
2:00:07 — Заключение
В гостях у «Битовых масок» — Игорь Астахов, инженер-программист, который разрабатывает высокопроизводительные библиотеки и занимается низкоуровневыми оптимизациями уже 25 лет. Он начал строить карьеру во времена, когда компьютеры были размером со шкаф, и стал сотрудником Intel в конце 90-х годов. Сейчас Игорь занимается оптимизацией реализаций различных DSP-алгоритмов в YADRO. Ведущие подкаста поговорили с ним о том, как писали машинный код три десятилетия назад, об особенностях высокоэффективного кода, векторизации и акселераторах.
Правда ли раньше писали и дебажили код на бумажке? До сих пор ли пишут на ассемблере для получения наилучшей производительности? Почему Intel Itanium — идеальный процессор? Как работают над переносом библиотеки на архитектуру, которая еще не появилась? Сможет ли AI создать высокопроизводительный код? Обсуждение этих и других вопросов ждет вас в тринадцатом выпуске «Битовых масок».
Видеоверсия выпуска: https://youtu.be/QFgfIisuybg Упомянутый доклад Валерии Пузиковой «Матричные расширения RISC-V»: https://www.youtube.com/watch?v=3p89pE3CA78Подписывайтесь на Telegram-канал подкаста: https://t.me/+bx50QfUlw4pkZDEyСтаньте частью команды YADRO! https://careers.yadro.com00:00:00 — Тизер
00:00:38 — Представление Игоря Астахова
00:01:31 — Как программировали в 80–90-е
00:12:03 — Появление первого офиса Intel в России
00:13:51 — Разработка высокопроизводительной библиотеки в Intel
00:19:26 — Почему Itanium — идеальный процессор?
00:25:53 — Идеальный код с точки зрения разработчика низкоуровневых оптимизаций
00:30:52 — Переход с ассемблера на интринсики
00:33:37 — Оптимизация самых популярных функций
00:37:31 — Измерение производительности низкоуровневых оптимизаций
00:41:55 — Performance-проблема на микроархитектурном уровне
00:48:28 — Взаимодействие с разработчиками процессоров
00:52:23 — Влияние руководителей на путь Intel
00:55:13 — Возможна ли реализация на С без интринсиков для низкоуровневых оптимизаций
00:59:16 — Методология разработки высокопроизводительных функций
01:09:33 — Работа с акселераторами
01:14:18 — Векторизация — основной способ оптимизации
01:16:55 — Может, надо такую библиотеку писать на C++?
01:18:59 — Какой тулинг используют
01:20:45 — Насколько перспективны новые технологии ИИ
01:23:05 — Заключение
Новый гость подкаста «Битовые маски» — Иван Углянский, известный разработчик JVM, член программного комитета Java-конференции SnowOne и один из создателей профиля «Системное программирование» в НГУ. Он соприкоснулся с процессом разработки компиляторов и рантаймов еще в старших классах школы, а после продолжал заниматься этим направлением в компании Excelsior. Елена Лепилкина обсудила с Иваном не только рантаймы, но и интероперабельность, новые Java-проекты Valhalla, Panama и Loom, а также высшее образование в области системного программирования.
Что входит в состав рантайма, кроме garbage collector? В чем особенности кода, который пишут рантайм-инженеры, и логов, которые они оставляют? На каких языках можно писать рантаймы? Чем нового и интересного принесут мега-проекты Panama, Loom и Valhalla? В чем проблемы интероперабельности через JNI? Что такое «техника кротов»? Ответы на эти и другие вопросы вы узнаете из двенадцатого эпизода подкаста.
Видеоверсия выпуска: https://youtu.be/kABHXttUOb4
00:00 — Тизер01:01 — Представление Ивана Углянского
01:58 — Начало карьеры Ивана
10:14 — Excelsior JET
13:28 — Как соблюсти спецификацию Java в AOT-компиляторе
17:21 — GraalVM
20:00 — Производительность AOT и JIT, как конкурировать с HotSpot
25:40 — Что входит в состав Runtime
27:30 — Как работает Java-профилировщик
32:36 — Баги в Runtime и как их дебажить
41:46 — Какие типы Garbage Collector'ов существуют
44:54 — Консервативные и точные GC: можно ли прикрутить GC к С++?
49:31 — Ситуация, где консервативный GC плох в Java
51:41 — Еще один интересный баг, или Как напугать клиента
56:45 — На каких языках можно писать рантаймы
1:04:45 — Интероперабельность в Java, механизм JNI и существующие проблемы
1:16:10 — Мегапроект Panama и интероперабельность с C++
1:22:29 — Был ли у Java период застоя? Проблема с Java 9
1:28:32 — Обратная совместимость Java: плюсы и минусы
1:31:28 — Существующие проблемы с системой типов, проект Valhalla
1:37:14 — Проект Loom и как реализованы виртуальные потоки в Java
1:49:17 — Проектная модель Java
1:53:19 — Кто такой системный программист?
2:00:17 — Как появился профиль «Системное программирование» в НГУ
2:04:42 — Чему и как учат на «Системном программировании»
2:08:54 — А нужно ли много системных программистов
2:13:21 — Взаимодействие с вузом и организационная работа
2:19:52 — Зачем курс по Python на профиле «Системное программирование»
2:22:09 — Что хочется улучшить
2:27:31 — Заключение
✅ Подписывайтесь на Telegram-канал «Битовых масок»: https://t.me/+bx50QfUlw4pkZDEy
В гостях у «Битовых масок» — Алексей Бродкин из Synopsys. Он работает в компании уже 16 лет и сейчас руководит инженерами, которые разрабатывают Linux и операционные системы реального времени. Поговорим с гостем об особенностях ОС и их поддержки для разных процессоров и архитектур. А еще обсудим на примере ARC-V, зачем большому вендору вкладываться в создание процессорного семейства, которое будет использовать набор команд открытой архитектуры RISC-V.
Почему вероятность появления новой большой и полноценной операционной системы очень мала? Что представляет из себя уровень аппаратных абстракций в ОС? Можно ли начинать разработку операционной системы до появления микросхемы в кремнии? Как взаимосвязаны прерывания, их обработчики и планировщик задач? Ответы на эти и другие вопросы — в одиннадцатом эпизоде «Битовых масок».Упомянутые полезные ссылки вы найдёте в описании к видеоверсии выпуска: https://youtu.be/e8CidbF_OiU00:00:00 — Тизер
00:01:31 — Вступление
00:01:50 — Представление Алексея
00:02:41 — Начало карьеры и текущая деятельность Алексея
00:07:00 — Микроконтроллер vs. микропроцессор
00:10:43 — ОС, над которыми работает команда Алексея
00:11:45 — Почему может появиться/не появиться еще одна ОС/RTOS
00:16:13 — Что такое ОС и зачем она нужна
00:20:41 — Создание драйверов
00:27:23 — Микроядерные ОС
00:32:40 — Уровень аппаратных абстракций: HAL и BSP
00:40:29 — Разница между полномасштабной ОС и RTOS
00:47:14 — Миграция фич из полномасштабных ОС в RTOS
00:57:41 — POSIX как механизм абстракции
01:01:16 — Дорастет ли Zephyr до полномасштабной ОС
01:05:59 — Управление проектом Zephyr RTOS
01:08:41 — Поддержка новой архитектуры в Linux
01:18:18 — Linux в гетерогенных системах
01:22:44 — Использование компонентов других производителей крупными производителями
01:26:11 — Обработка прерываний и планировщик задач в ОС
01:36:50 — Семейство ARC-V на базе RISC-V от Synopsys
01:50:03 — Заключение
01:50:41 — Благодарности✅ Подписывайтесь на Telegram-канал подкаста: https://t.me/+bx50QfUlw4pkZDEy
В этом выпуске мы возвращаемся на уровень разработки аппаратного обеспечения. В гостях у «Битовых масок» — Алексей Ковалов, руководитель группы модульной верификации в YADRO, который в прошлом успел поработать как в стартапе, так и в глобальной корпорации. Он расскажет, как устроен процесс верификации аппаратуры, а также какие языки и методологии в нем применяют.
Как инженеры принимают решение о том, что конкретный блок верифицирован? Нужно ли тестировать тестовое окружение? Какие особенности есть у языка SystemVerilog и можно ли писать TestBench на C++ или Python? Что такое «токсичные» интерфейсы? Является ли UVM серебряной пулей? Как выглядит рынок труда в hardware-разработке и как его особенности влияют на подходы к работе? Обсудим эти и другие связанные с верификацией вопросы в десятом эпизоде «Битовых масок».
Видеоверсия выпуска: https://youtu.be/A3Y5gb4YIt4Подписывайтесь на Telegram-канал подкаста: https://t.me/+bx50QfUlw4pkZDEy
0:00:00 — Тизер
0:00:46 — Представление Алексея
0:01:55 — Как Алексей попал в верификацию
0:08:33 — Как часто выходят новые стандарты SystemVerilog
0:11:22 — В чем заключается верификация аппаратуры, ее виды и подходы
0:25:29 — Особенности работы в командах с legacy-кодом
0:29:16 — Как должен работать верификатор и какие задачи у верификаторов
0:33:25 — Нужно ли писать тесты на сам TestBench
0:35:10 — Помощь от верификаторов для воспроизведения и фикса багов
0:39:55 — Особенности и магические сущности несинтезируемой части языка SystemVerilog
0:50:07 — Может ли верификатор верифицировать любые аппаратные блоки
0:51:15 — «Токсичные» интерфейсы (CHI)
0:54:19 — Верификация на VHDL
0:56:08 — UVM
1:01:49 — Проблемы с готовыми VIP от различных вендоров
1:07:23 — Проблемы UVM
1:10:56 — Уникальные вещи в SystemVerilog
1:16:11 — Верификация на С++
1:17:54 — Верификация на Python, cocotb
1:27:37 — Верификация на Chisel
1:29:47 — Особенности рынка труда в hardware-разработке
1:41:12 — Как проходят собеседования и их недостатки
1:58:15 — Заключение
Гость выпуска — инженер Дмитрий Рябцев, который начинал свою карьеру в команде Intel и больше 20 лет разрабатывал Intel VTune, инструмент анализа производительности программ для компьютеров на базе x86-процессоров. Дмитрий расскажет, как профилировщики устроены изнутри, а также даст подсказку, с чего стоит начинать профилирование различных систем.
Почему профилировщиков сравнительно немного? Какими они бывают? Как устроена аппаратная поддержка профилирования? Что скрывается за аббревиатурой TMA? В чем заключается фундаментальная проблема инструментов для анализа производительности программ? Почему Intel VTune долгое время был платным? Ответы на эти и многие другие вопросы — в девятом эпизоде «Битовых масок».
Смотреть видеоверсию выпуска: https://youtu.be/zIdySCwntXcКстати, у подкаста появился канал в Telegram. В нем мы будем публиковать анонсы новых выпусков, вместе с вами выбирать следующие темы для обсуждения и интересных гостей, а также делиться фотографиями и видео со съемок. Подписывайтесь по ссылке: https://t.me/+vCkZB-u3bgEyZDli 00:00:00 — Тизер выпуска
00:01:00 — Представление гостя
00:01:56 — Начало карьеры в Intel
00:04:44 — Зачем нужны профилировщики
00:08:14 — Типы профилировщиков и как они работают
00:12:01 — Профилировщики для нативных приложений и для систем с managed runtime
00:15:51 — Почему профилировщиков немного
00:16:52 — Почему Intel VTune был платным
00:19:15 — Фундаментальная проблема профилировщиков
00:22:19 — Влияние профилировщиков на результаты
00:26:20 — С чего начать профилирование сложной системы
00:28:44 — Особенности Intel VTune
00:31:03 — Аппаратная поддержка для профилирования
00:39:33 — Внутренние и внешние пользователи Intel VTune
00:42:17 — Top-down Microarchitecture Analysis Method
00:55:26 — Боятся ли вендоры реверс-инжиниринга
00:57:25 — Накладные расходы счетчиков
00:59:23 — Основные микроархитектурные bottlenecks
01:09:33 — Почему сложно сделать универсальный профилировщик для всех микроархитектур
01:13:58 — Верификация формул TMA для микроархитектуры
01:16:59 — Профилирование многопоточных приложений
01:23:44 — Заключение
Во второй части выпуска «Битовых масок» Константин Владимиров, инженер с 20-летним опытом разработки на C/C++, расскажет об особенностях разработки компиляторов для GPU. А также порассуждает о новых полезных вещах в стандартах C++ и объяснит, почему разработчикам компиляторов так важно знать стандарт.
Чем отличаются CPU и GPU? В чем сложность гетерогенного программирования? Почему MLIR не применяется в графических компиляторах? Как использовать LLVM для GPU-компиляторов, несмотря на его недостатки для подобных архитектур? Когда мешает SSA? Почему наличие undefined behaviour — это хорошо? Что может быть включено в C++26? Ответы на эти и другие вопросы вы узнаете из второй части выпуска.
Видеоверсия выпуска: https://youtu.be/_SIBiSR8rzM00:00:00 — Тизер второй части
00:01:00 — Отличия CPU и GPU
00:02:33 — Особенности компиляторов для GPU
00:04:31 — Сложности применения LLVM для GPU-компиляторов
00:06:43 — Spill’ы в шейдерах
00:10:45 — Сложность гетерогенного программирования
00:11:48 — Проблемы компиляторных инженеров
00:13:57 — Использование LLVM в GPU-компиляторах
00:19:27 — MLIR и возможность его применения
00:21:43 — Особенности языков для GPU
00:26:37 — Backend в GPU-компиляторах
00:27:12 — Интересный баг
00:32:56 — Стоит ли писать на ассемблере
00:34:19 — Почему важно знать стандарты C++
00:36:40 — Ошибка в Linux
00:39:26 — Польза undefined behaviour
00:46:04 — Новшества в C++23 и C++26
00:56:07 — Участие в разработке стандартов C++
01:01:30 — Заключение
В этом выпуске Константин Владимиров, занимавшийся разработкой компиляторов для CPU и GPU, расскажет о том достоинствах и недостатках GCC и LLVM. Константин опишет различные современные подходы к аллокации регистров, применяемых в компиляторах. А также поделится базовыми рекомендациями для пользователей компиляторов, желающих улучшить производительность своих программ с помощью компиляторов. Кроме того, мы обсудили животрепещущий вопрос об IT-образовании.
Насколько больно переходить на новые версии компилятора? По каким причинам выбирают LLVM? Какие достоинства и недостатки GCC и LLVM? Какие методы решения задачи аллокации регистров существуют? Насколько этот этап влияет на скорость работы программы? Почему инженерам полезно идти преподавать в ВУЗы? Какие проблемы есть у современного высшего образования в сфере IT? Ответы на эти и другие вопросы вы узнаете из этого эпизода. Больше интересного обсудим с Константином во второй части выпуска, которая выйдет чуть позже.
Видеоверсия выпуска: https://youtu.be/oXjS8mJk6VEСсылка на канал Константина: https://www.youtube.com/@tilir00:00:00 - Тизер
00:00:22 - В гостях Константин Владимиров
00:01:40 - Карьерный путь Константина
00:08:16 - Как Константин попал в сферу разработки компиляторов
00:10:05 - Процесс проектирования микроархитектуры
00:11:39 - Сравнение GCC и LLVM, преимущества и недостатки
00:15:47 - LLVM IR
00:16:41 - Все крупные системы должны быть переписаны на C++
00:17:18 - Преимущества C
00:18:57 - Наследие, оставшееся от С, в GCC
00:20:19 - Ниши gcc и clang
00:22:26 - Отсутствие бинарной совместимости для LLVM IR
00:24:42 - Различные методы аллокации регистров в компиляторах
00:34:47 - Как аллокация регистров влияет на качество сгенерированного кода
00:36:15 - Рекомендации для пользователей компиляторов
00:37:02 - Архитектурные решения проблемы аллокации регистров
00:40:07 - Польза преподавательской деятельности
00:43:43 - Собеседования при найме
00:45:27 - Что полезно для развития специалиста
00:46:56 - Проблемы IT-кафедр
00:52:10 - Участие компаний в высшем образовании
00:55:27 - Новогоднее пожелание будущим инженерам от Константина
В этом выпуске Александр Разинков, работавший во множестве компаний в сфере разработки встраиваемых систем, расскажет о том, как происходит передача данных в беспроводных сетях. Александр объяснит алгоритм работы передачи данных, а также расскажет о задачах операционных систем. Что может привести к замедлению передачи данных по Wi-Fi? Какие ограничения скорости передачи данных существуют? Насколько устройства отстают от самых современных стандартов? Для чего нужны гетерогенные системы? В чем отличие Linux от RTOS? Можно ли написать ядро ОС на C++? Эти и многие другие вопросы обсудили в этом выпуске «Битовых масок».Смотреть видеоверсию выпуска: https://youtu.be/IfRLOYb00kw00:00:00 - Вступление
00:01:38 - Начало работы в сфере встраиваемого ПО
00:05:03 - Сетевые протоколы, стандарты, особенности и сферы применения
00:09:24 - Ограничения и возможности для развития существующих и появления новых стандартов
00:12:40 - Модуляция сигнала
00:13:40 - Алгоритм передачи данных в сети без коллизий
00:17:19 - Что может создавать помехи для работы сетей
00:21:03 - Multi-user MIMO
00:25:00 - Отставание устройств от стандартов и протоколов
00:28:30 - Internet of Things
00:29:56 - Отладка беспроводных сетевых протоколов
00:35:10 - Гетерогенные системы
00:40:32 - Необходимость знания алгоритмов и особенности работы
00:43:37 - Комбинация baremetal и linux в гетерогенных системах и взаимодействие между ядрами
00:47:08 - ARM big.LITTLE
00:50:03 - Операционные системы, планировщик, отличия RTOS
01:07:29 - Можно ли написать ядро ОС на C++
01:11:17 - Заключение
В этом выпуске Никита Поляков, работавший в МЦСТ и Syntacore, позволит понять, как выглядит работа разработчика процессоров. Никита рассказал о различных специализациях, которые есть внутри профессии, какие тулы используются и на какие этапы делится разработка процессоров. В чем преимущества и недостатки архитектуры Эльбрус(VLIW) и RISC-V? Какие языки разработки аппаратуры бывают и в чем их отличие от языков программирования? Как происходит отладка? Как происходит синтез многоядерных процессоров? Нужно ли уметь обращаться с паяльником и осциллографом разработчику процессоров? Что вообще могут и в каком виде продавать компании, специализирующиеся на разработке аппаратуры? И многие другие вопросы обсудили в этом выпуске.00:00:00 - Тизер
00:00:52 - Представление гостя
00:02:17 - Как Никита стал разработчиком процессоров, учеба в МФТИ
00:05:33 - Начало работы в МЦСТ
00:06:45 - Различные специализации разработчиков процессоров
00:08:37 - Языки описания аппаратуры и инструменты для разработки процессоров
00:13:26 - Сходства Verilog и языков программирования
00:14:43 - Отличия Verilog и языков программирования
00:17:49 - Моделирование/верификация и синтез с помощью Verilog
00:20:50 - Автоматические и ручные оптимизации схемы во время синтеза
00:23:07 - Тулы симуляции и синтеза, этапы разработки
00:27:11 - Баги и процесс отладки
00:31:15 - Процесс синтеза больших устройств, синтез многоядерных процессоров
00:37:35 - Этап верификации аппаратуры
00:41:47 - Результирующие продукты, Soft IP
00:48:29 - Как справляться с багами в уже выпущенных модулях и процессорах
00:51:39 - Развитие языка Verilog и его стандарты
00:55:23 - Баги в тулах для разработки процессоров
00:58:26 - Chisel
01:04:25 - Архитектура Эльбрус
01:10:55 - Различия RISC-V и Эльбруса
01:22:17 - Где учиться разработке процессоров, что должен знать разработчик процессоров
01:25:46 - Связь между программированием и разработкой аппаратуры, миграция фич из ПО в аппаратуру
01:28:48 - Возможен ли переход в разработчики процессоров из другой специальности
01:35:42 - Нужны ли паяльник и осциллограф при работе
01:40:22 - Заключение
В этом выпуске Владимир Кемпик, имеющий опыт работы в Oracle, Azul и Syntacore, погрузил нас в мир JVM. Он рассказал об огромном разнообразии различных компиляторов и сборщиков мусора, применяемых в Java мире. Какие трюки для оптимизации кода может позволить себе JIT? Зачем нужны AOT-компиляторы? Какие альтернативные решения придумали JVM-инженеры, чтобы ужиться с запросами микросервисов? Как происходит поддержка новых архитектур в JVM? Почему бэкпорт поддержки RISC-V в JDK17 значимое событие?
00:00:00 - Тизер
00:00:47 - Представление гостя
00:01:41 - Работа в Oracle
00:03:21 - Работа в Azul и поддержка Apple M1 в JVM
00:08:53 - Базовые понятия: JRE, JDK, JVM
00:11:21 - Принцип "Write once, run everywhere"
00:12:49 - Мифы о Java
00:14:24 - Разнообразие сборщиков мусоров
00:16:42 - Баг с утечкой памяти
00:22:10 - Компиляторы и интерпретаторы в JVM
00:32:02 - Компиляторные оптимизации
00:38:24 - Компромисс между временем компиляции и эффективностью сгенерированного кода
00:40:49 - AOT-компиляторы в Java мире
00:42:24 - Альтернативные решения для быстрого старта микросервисов
00:45:52 - Чем компилировать C1 и С2
00:52:28 - Поддержка новой архитектуры в JVM
00:53:54 - Работа с разными версиями Java
00:56:20 - Поддержка RISC-V в JDK17 (LTS)
00:59:33 - Текущее состояние поддержки RISC-V в JVM
01:04:03 - Поддержка расширений RISC-V
01:08:19 - Поддержка runtime в самой архитектуре
01:14:22 - Учитываются ли особенности микроархитектуры процессора
01:16:48 - Перенос изменений в upstream JVM
01:18:57 - Заключение
Комментарии