Практика языка C (МФТИ, 2023-2024). Семинар 7.2. Конвейер.
Вставка
- Опубліковано 29 кві 2024
- Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики.
На этом занятии мы окажемся максимально глубоко и решим сразу две интересных загадки. Первая приведёт нас к концепции конвейера, на которой мы остановимся и внимательно её изучим. Вторая же приведёт нас к ещё более удивительным открытиям, касающимся истинной природы кешей.
Семинарист: Константин Владимиров.
Дата: 8 апреля 2024 года.
Съёмка: Марк Гончаров.
Звук: Юлий Тарасов.
Предыдущий семинар: • Практика языка C (МФТИ...
Следующий семинар: • Практика языка C (МФТИ...
Слайды к занятиям: cs.mipt.ru/wp/?page_id=7775
Примеры кода: github.com/tilir/c-graduate
Задачник: olymp1.vdi.mipt.ru/
Timeline
00:00 Исполнение программы
10:45 Конвейер
15:12 Предсказание переходов
26:30 Упражняемся в ассемблере
31:08 Хитрая оптимизация
36:50 Out of order
44:00 Время решать задачи
46:40 Загадочный бинарный поиск
52:18 Реалистичные кеши
01:02:30 Разгадка: ассоциативность
01:10:28 Бонус про замеры кешей
Errata
* Тут пока пусто
Для меня кэши проца всегда были какими-то неприступными крепостями, а тут раз-раз и всё ясно стало. Большая благодарность лектору от всей души
Каждый вторник жду видосов от Сера Троглодита.
Каждые выходные - от Константина. 👍
Удивительное сравнение, вроде ничего общего. Хотя я тоже люблю геройские стримы ))
@@tilir общее в таланте создавать ламповость и умиротворяющее повествование )
Константин, большое спасибо за семинар!
Преподаватель от бога!
Классно!!!
Спасибо за семинар!
Спасибо!
виртуально на ваших семинарах находится примерно по четыре тысячи любопытных глаз
Как обычно лайк за ранее)❤
Вот это правильный подход. Если что всегда можно отжать обратно ))
24:40 в аппаратные счетчики умеет дефолтный линуксовый perf, к слову говоря. на винде это умеет делать не менее дефолтный ETW, но насколько помню- там было все не очень хорошо с документацией.
В такие моменты начинаю понимать почему Си будет еще очень живее всех живых. ❤
Ощущаю себя тупым, но я же JS’эсер 😂
Константин! Огромное спасибо за семинар, очень кратко и максимально по делу! Есть вопрос: В обращении к студентам вы упомянули архитектуру их задания и распределение ролей в команде. Будут ли еще на канале видео, посвященные программной архитектуре? Или по взаимодействию в команде разработчиков?
Ну там были довольно специфичные рекомендации для самых маленьких. А так да, может быть когда-нибудь я что-то такое запишу. Но для этого надо сперва исчерпать технические темы, а у меня пока слишком большой бэклог ))
Быстрее бы...
Pipeline - дословно трубопровод. Это похоже калька с русского термина водопроводный принцип организации управления, который впервые открыто ввел советский ученый А.С. Лебедев. Сейчас уже известно что и до этого была аппаратура специального назначения и на западе и в СССР, которая использовала этот принцип, но открыто впервые использовал его все-таки Лебедев. И хотя принцип работы может и проще объяснять на примере заводского конвейера, мне кажется важно помнить о корнях.
Я кстати никогда не понимал а почему трубопровод. С водой текущей по трубе ничего не случается, а казалось бы суть именно в изменениях. В историческом смысле вы, вероятно, правы, похоже термин растёт именно отсюда. Вообще конечно очень не повезло что на заре вычислительной техники в СССР не было малого бизнеса и неоткуда было взяться ни советскому Интелу ни советскому IBM. В итоге вся ветка получилась кривоватой и не выпрямилась до сих пор.
Жесть
Это очередной этап, в котором я понимаю что оптимизировать алгоритмы можно еще глубже.
Возникает вопрос как процесс написания программы, учитывающей использование аппаратных кэшей, сочетается с векторизацией