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

PODCAST · technology

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

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

  1. 26

    Стандарты беспроводной связи / Аппаратная разработка для ЦОС / DSP-процессоры

    Как стандарты беспроводной связи воплощают в «железе»? Мы стартуем новый сезон «Битовых масок»! Гостем 26 выпуска стал Антон Бобков — опытный инженер YADRO, работающий в сфере цифровой обработки сигналов едва ли не с начала широкого распространения интернета. Собеседники Антона Бобкова — уже знакомый вам Антон Афанасьев и Алина Галичина, новая ведущая подкаста. Антон подробно рассказал о существующих стандартах сотовой связи, о том, зачем их столько нужно и во что упирается потенциал их развития. А также оценил свою область с точки зрения классической аппаратной разработки. Среди тем подкаста: почему нельзя просто взять и поставить базовую станцию; чем ограничены возможности беспроводной передачи информации; как стандарт WiMAX впервые объединил разные типы трафика и в итоге был забыт; зачем нужен Wi-Fi, Bluetooth и другие стандарты связи, если есть LTE; актуальны ли еще DSP-процессоры в разработке для ЦОС; почему верификация — самый сложный этап в аппаратной телеком-разработке.

  2. 25

    Виды FPGA / Разработка на FPGA / Создание FPGA-сообщества

    В юбилейном, 25 выпуске «Битовых масок» гостем стал Михаил Коробков — основатель сообщества FPGA-Systems и одноименной конференции, издатель FPGA-Systems Magazine. Михаил более 10 лет занимается FPGA и программируемой логикой, работает в отделе прототипирования YADRO. Михаил провел для ведущих подкаста Елены Лепилкиной и Антона Афанасьева обзорную экскурсию в мир FPGA — от начала отрасли до актуальных проблем, включая особенности российского рынка. Помимо аппаратной части, в подкасте осветили и языки ПЛИС-разработки (спойлер: тема оказалась весьма острой). Наконец, Михаил поделился «теплыми ламповыми» воспоминаниями о том, как зарождалось сообщество FPGA-Systems, как появилась одноименная конференция и журнал.

  3. 24

    Аппаратная трассировка / BrainfuckPC / Восстановление старых устройств

    Героем 24 выпуска «Битовых масок» стал Артём Кашканов из группы мониторинга производительности ПО YADRO, ранее — специалист по аппаратной трассировке в Intel. Артём — создатель популярного YouTube-канала, где он показывает, как создает новые необычные вычислительные устройства и возвращает к жизни старые, основанные на устаревших элементных базах. Также Артём пишет о своем увлечении на Хабре и регулярно участвует с восстановленной техникой в тематических мероприятиях. С Еленой Лепилкиной и Антоном Афанасьевым герой обсудил свое увлечение вычислительной техникой, рассказал о пути к нему и об интересных устройствах, над которыми работает сейчас. Кроме того, Артём подробно остановился на аппаратной и других видах трассировки — применительно как к современным, так и к ретрокомпьютерам. YouTube-канал Артёма: https://youtube.com/c/ArtemKashkanov/ Телеграм-канал BrainfuckPC: https://t.me/brainfuckpc Статьи Артёма на Хабре: https://habr.com/ru/users/radiolok/articles/Мы готовим новый сезон «Битовых масок» и хотим учесть вашу обратную связь при планировании выпусков. Пожалуйста, пройдите опрос (https://surveys.yadro.com/s/cmfe1uvat04a6so01l9leghnv/?utm_source=surveys&utm_medium=referral&utm_campaign=bitmask_podcast&utm_content=opros), чтобы подкаст стал еще более интересным и полезным для вас.

  4. 23

    Верификация процессоров / Формальная и функциональная / Трассировка печатных плат

    В 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 #верификация

  5. 22

    BIOS и UEFI / стадии UEFI / драйвера и протоколы

    Гостем 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

  6. 21

    Разработка симуляторов и эмуляторов. Виды симуляторов. Современные фреймворки

    В 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 — Заключение

  7. 20

    ЦОС / Телеком: PHY и MAC уровни / Разработка ПО для базовых станций

    В юбилейном, 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/

  8. 19

    Разработка RTOS Embox / Портирование ОС на RISC-V / Linux для embedded

    В 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 - Заключение

  9. 18

    Дизайн процессоров: подходы и особенности индустрии / High-level синтез / Проблемы в образовании

    Гость 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 - Заключение

  10. 17

    Дизайн языков программирования / Гипервизоры / Будущее системного программирования

    В этом выпуске мы побеседовали с Николаем Иготти — разработчиком с опытом сразу во многих сферах системного программирования. Николай разрабатывал виртуальные машины (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 

  11. 16

    Архитектура ядра Linux / ЦОС и DSP-процессоры / Linux для RISC-V

    В этом выпуске мы продолжим погружаться в тему системного программирования и познакомим вас с Дмитрием Точанским — инженером с опытом работы более 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 — Заключение

  12. 15

    Статический анализ кода / Виды анализа и диагностики / Поиск кадров в регионах

    В гостях у «Битовых масок» — Андрей Карпов и Юрий Минаев из 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 — Заключение

  13. 14

    Языки программирования/ Спецпроцессоры / Прототипирование компиляторов

    Продолжаем знакомить вас с профессионалами в области низкоуровневого программирования. Гость нового выпуска — Пётр Советов, разработчик компиляторов для спецпроцессоров, специалист в сфере технологий компиляции и синтеза программ, преподаватель РТУ МИРЭА и известный докладчик профильных конференций. В этом выпуске Антон Афанасьев обсуждает с гостем предметно-ориентированные языки, проектирование специализированных ускорителей и компиляторов, а также возможную пользу от изучения истории алгоритмов. Когда требуется новый предметно-ориентированный язык и компилятор для него? Есть ли в России сильные курсы по разработке компиляторов? Чем инженеру полезно знание экзотических языков? Почему наступает золотой век специализированной архитектуры? Есть ли практическая польза в изучении исследований прошлых лет? Ответы на эти и другие вопросы ждут вас в четырнадцатом выпуске подкаста. Видеоверсия выпуска: 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 — Заключение

  14. 13

    Разработка DSP-библиотеки / Низкоуровневые оптимизации / Программирование в 80–90-е

    В гостях у «Битовых масок» — Игорь Астахов, инженер-программист, который разрабатывает высокопроизводительные библиотеки и занимается низкоуровневыми оптимизациями уже 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 — Заключение

  15. 12

    Java Runtime / Интероперабельность в Java / Как учить системных программистов

    Новый гость подкаста «Битовые маски» — Иван Углянский, известный разработчик 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

  16. 11

    Операционные системы / Linux / Zephyr / HAL и BSP / ARC-V

    В гостях у «Битовых масок» — Алексей Бродкин из 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 

  17. 10

    Верификация аппаратных блоков / UVM / Рынок труда в hardware

    В этом выпуске мы возвращаемся на уровень разработки аппаратного обеспечения. В гостях у «Битовых масок» — Алексей Ковалов, руководитель группы модульной верификации в 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 — Заключение

  18. 9

    Профилирование / Top-down Microarchitecture Analysis Method / Intel VTune

    Гость выпуска — инженер Дмитрий Рябцев, который начинал свою карьеру в команде 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 — Заключение

  19. 8

    Компилятор для CPU и GPU. Часть 2. LLVM в GPU компиляторах/Стандарты С++

    Во второй части выпуска «Битовых масок» Константин Владимиров, инженер с 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 — Заключение

  20. 7

    Компилятор для CPU и GPU. Часть 1. LLVM и GCC.

    В этом выпуске Константин Владимиров, занимавшийся разработкой компиляторов для 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 - Новогоднее пожелание будущим инженерам от Константина

  21. 6

    Wireless-сети и гетерогенные системы / Сетевые протоколы / Операционные системы / RTOS

    В этом выпуске Александр Разинков, работавший во множестве компаний в сфере разработки встраиваемых систем, расскажет о том, как происходит передача данных в беспроводных сетях. Александр объяснит алгоритм работы передачи данных, а также расскажет о задачах операционных систем. Что может привести к замедлению передачи данных по 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 - Заключение

  22. 5

    Дизайн процессоров. RTL-дизайн / Языки разработки аппаратуры / Верификация и синтез

    В этом выпуске Никита Поляков, работавший в МЦСТ и 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 - Заключение

  23. 4

    Битовые маски #4: разработка JVM / компиляторы в виртуальных машинах / поддержка RISC-V, Apple M1 в JVM

    В этом выпуске Владимир Кемпик, имеющий опыт работы в 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 - Заключение

  24. 3

    Битовые маски #3: Устройство дебаггеров / DWARF / GDB / LLDB / Интеграция в IDE

    Говорим с Антоном Колесовым о дебаггерах для C/C++, в основном о gdb. Опираясь на 10-летний опыт работы в команде отладчиков Synopsys, он рассказал о внутреннем устройстве отладчиков, DWARF, отладке gdb с его же помощью и кастомных тулчейнах, связи с компилятором и интеграции в IDE. 00:00:00 - моменты о бажных компиляторах и дебаггерах 00:00:36 - представление гостя 00:00:46 - учеба и начало карьеры 00:03:00 - легко ли построить GNU toolchain 00:04:30 - как Антон пришел к разработке дебаггеров 00:05:18 - внутреннее устройство дебаггеров 00:08:44 - dwarf-информация и почему виноваты компиляторы 00:22:12 - правильный алгоритм отладки 00:23:15 - как уронить gdb 00:23:53 - пишут ли код компилятора разработчики дебаггеров 00:24:18 - незавидная доля дебаггеров 00:26:04 - как отлаживать дебаггер 00:34:36 - баги в дебаггерах 00:37:01 - взаимодействие деббагера и операционной системы 00:39:56 - отладка многопоточных приложений 00:42:35 - non-stop debugging 00:45:06 - real-time tracing 00:51:52 - отличия работы дебаггера при отладке baremetal-приложений 00:56:38 - информация об архитектуре в дебаггере 01:03:59 - lldb vs gdb 01:10:29 - покупают ли сейчас коммерческие компиляторы и дебаггеры 01:12:16 - интеграция дебаггера в IDE 01:17:28 - заключение

  25. 2

    Битовые маски #2. Отладка системных и встраиваемых приложений / Баги в тулчейнах и аппаратуре

    В этом выпуске беседуем с Александром Чуйковым, который помогал клиентам из крупных компаний в отладке множества системных и встраиваемых приложений, работая в отделах технической поддержки STMicroelectronics, Synopsys и Syntacore. Он расскажет, как происходит отладка функциональных и performance проблем различных систем (в том числе и baremetal) на самом разном уровне и поделится примерами интересных и сложных багов.00:00:00 - Смешная история про баг00:00:30 - Представление гостя 00:02:25 - Чем занимается Customer Support в системном программировании и кто там работает 00:09:40 - Особенности отладки функциональных багов системных и низкоуровневых приложений 00:16:53 - Баг, воспроизводящийся только через долгое время 00:18:18 - Отладка многопоточных приложений на низком уровне 00:20:18 - Идеальный отладчик существует? 00:21:35 - Неожиданный и сложный функциональный баг, который долго пытались воспроизвести 00:24:27 - История о том, как чтение warning-ов компилятора может помочь при отладке 00:27:32 - Поиск и отладка performance-проблем 00:28:50 - Профилирование baremetal-приложений 00:30:42 - Изменение приложений для ускорения и портирования приложений на архитектуру 00:32:42 - Пример performance-проблемы из-за кэшей 00:34:20 - Как компиляторы могут помочь при наличии performance-проблем 00:40:36 - Reducing performance-проблем 00:42:10 - Когда нужно идти с проблемой к аппартчикам 00:42:50 - Тайные знания, которыми владеет отдел customer support 00:44:13 - История про проектирование процессора по интересным требованиям заказчика 00:48:02 - Помощь аппаратчиков при отладке сложных проблем 00:49:55 - Пример комбо-бага 00:53:55 - Когда и что стоит писать на ассемблере 00:56:02 - Реальные случаи одновременной отладки проблем людьми из разных команд 00:58:12 - Самый забавный баг 01:00:17 - Сколько NDA с клиентами подписал Александр за свою карьеру 01:01:59 - Заключение

  26. 1

    Битовые маски #1: разработка компиляторов / LLVM backend для RISC-V / Kotlin компилятор

    В первом выпуске беседуем с Дмитрием Петровым – он участвовал в разработке С/С++ компилятора в МЦСТ и Kotlin компилятора в JetBrains. А теперь снова вернулся к компилятору C/C++, но уже для RISC-V архитектуры, в Syntacore.0:00:00 - Представление гостя0:01:53 - Устройство компилятора (верхнеуровнево) 0:03:33 - Задачи фронтенда и бэкенда компилятора 0:06:08 - Параллелизм на уровне инструкций, instruction scheduling 0:21:52 - Бенчмарки и performance компиляторов 0:25:21 - Взаимосвязь instruction scheduling и register allocation 0:31:12 - Начало карьеры: МЦСТ, Sun Microsystems 0:39:44 - Работа в Intel 0:43:37 - Разработка Kotlin-компилятора и работа в JetBrains 0:59:31 - Инструменты разработки 1:02:24 - Совет начинающим программистам

Type above to search every episode's transcript for a word or phrase. Matches are scoped to this podcast.

Searching…

No matches for "" in this podcast's transcripts.

Showing of matches

No topics indexed yet for this podcast.

Loading reviews...

ABOUT THIS SHOW

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

HOSTED BY

Елена Лепилкина и Антон Афанасьев

CATEGORIES

URL copied to clipboard!