Вы здесь

Студентам

Более половины инженеров и программистов компании МЦСТ — молодые люди до 30 лет, выпускники базовой кафедры МФТИ, а также МГУ, МИФИ, МГТУ, МИЭТ, МИРЭА и других ведущих московских технических университетов.

Направления обучения и профессиональной деятельности:

  • логическое и физическое проектирование микропроцессоров;
  • верификация и тестирование микропроцессоров;
  • проектирование печатных плат и корпусов микропроцессоров;
  • технологии оптимизирующей и двоичной компиляции;
  • разработка ядра и дистрибутива операционной системы;
  • технологии безопасных вычислений и защищённого доступа.

Обучение проводится на базовой кафедре. Для студентов после 1-го курса организуется стажировка.

Базовая кафедра информатики и вычислительной техники МФТИ

Сочетание учебного процесса, научной и практической работы:

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

Учебный курс сформирован при участии учёных МЦСТ, в числе которых 6 докторов и 29 кандидатов наук, 3 лауреата Ленинской премии и 5 лауреатов Государственной премии, 2 заслуженных деятеля науки, 9 заслуженных конструкторов Российской Федерации.

Листовка о базовой кафедре
Презентация базовой кафедры
Лекции базовой кафедры
Бакалаврские выпускные квалификационные работы
Магистерские диссертации

После окончания университета выпускникам, успешно прошедшим курс и потрудившимся в АО «МЦСТ», предлагается продолжить работу в компании. Склонным к научной деятельности даётся рекомендация в аспирантуру ОАО «ИНЭУМ им. И. С. Брука».

Стажировка

Кандидаты: студенты 1–3 курса.

Программы:

Приём заявок: с 15 марта по 14 июня.

  • За это время студенты, желающие принять участие, должны выбрать от 1 до 3 наиболее интересующих программ стажировок и и заполнить анкету.
  • После заполнения анкеты, в течение рабочей недели куратор выдаст вступительные испытания по одной из выбранных программ и объяснит дальнейший порядок действий.
  • При удовлетворительном выполнении заданий, студент приглашается на собеседование с руководителем стажировки. При успешном прохождении собеседования студент будет приглашён к прохождению стажировки. Предложение может быть сформировано вплоть до окончания приёмной кампании 14 июня.

Срок стажировки: полные 2 месяца с 1 июля по 30 августа 2024 года.

Место проведения: территория МЦСТ или дистанционно — в зависимости от конкретной программы.

Стипендия: по результатам собеседования.

По любым вопросам касательно стажировок, трудоустройства для студентов или поступления на базовую кафедру МФТИ при МЦСТ пишите на почту education@mcst.ru или в Телеграм @ildefonso_0 — помощнику ген. директора АО «МЦСТ» по научно-педагогической деятельности Альфонсо Даниилу Максимовичу.

Описание программ стажировки

Тема Форма Требования Программа

Логическое проектирование аппаратуры: разработка архитектуры графических процессоров

Очная Знакомство с языком описания аппаратуры Verilog.
  1. Базовые принципы проектирования на Verilog HDL (1 неделя).
  2. Изучение архитектуры микропроцессорных ядер (1 неделя).
  3. Разработка архитектуры микро-GPU (1 неделя).
  4. Реализация компонентов архитектуры микро-GPU на RTL (1 неделя).
  5. Инженерная верификация компонентов архитектуры микро-GPU (1 неделя).
  6. Отладка микро-GPU в сборе (2 недели).
  7. Запуск микро-GPU на ПЛИС-прототипе с выводом изображения на монитор (1 неделя).

Логическое проектирование аппаратуры: микроархитектура вычислительных устройств

Удалённая Знакомство с языком описания аппаратуры Verilog.
  1. Базовые принципы проектирования на Verilog HDL (1 неделя).
  2. Проектирование и отладка целочисленных устройств (2 недели).
  3. Стандарт вещественной арифметики IEEE 754 (1 неделя).
  4. Проектирование и отладка устройства умножения чисел формата FP32 (2 недели).
  5. Проектирование и отладка устройства сложения чисел формата FP32 (2 недели).

Функциональная верификация: анализ тестового покрытия

Удалённая Базовое знание языка программирования Python и регулярных выражений, битовая арифметика.
  1. Метрики функционального тестового покрытия. Лексический разбор текстовых файлов, регулярные выражения (4 недели):
    • Изучение документации верифицируемого устройства.
    • Разработка программы-анализатора журнала исполнения на языке Python, извлекающей информацию об определённых событиях при моделировании из текстового файла журнала исполнения и формирующей отчёт о достигнутом тестом функциональном покрытии в заданной метрике.
  2. Объединение отчётов о покрытии (2 недели):
    • Разработка программы, объединяющей отчёты о покрытии, полученные на основе анализа нескольких журналов исполнения.
  3. Визуализация отчёта с выводом диаграмм/таблиц (2 недели):
    • Изучение какого-либо графического фреймворка на Python, например, PyQt5.

Функциональная верификация: автоматизация генерации направленных тестов

Удалённая Программирование на Python или C++, битовая арифметика.
  1. Формирование псевдослучайных конечных автоматов (КА) Мили (1–2 недели):
    • Разработка программы, формирующей псевдослучайные КА Мили.
  2. Формирование последовательностей входных символов для перебора всех состояний, переходов и путей в КА Мили (2 недели):
    • Разработка программы, формирующей последовательности входных символов для перебора всех состояний, переходов и путей в КА Мили.
  3. Проверка полноты покрытия состояний, переходов и путей в КА Мили (1–2 недели):
    • Разработка программы, проверяющей полноту покрытия КА Мили последовательностями входных символов по состояниям, переходам и путям.
    • Разработка программы для автоматизированной проверки полноты покрытия случайных конечных автоматов, формируемых программой из п. 1, последовательностями входных символов, формируемых программой из п. 2.
    • Выполнение проверки полноты покрытия, обеспечение полного покрытия.
  4. Разработка программной модели наборно-ассоциативной кэш-памяти (2 недели):
    • Построение конечного автомата, описывающего поведение набора наборно-ассоциативной кэш-памяти.
    • Разработка программной модели наборно-ассоциативной кэш-памяти.
  5. Генерация наборов адресов памяти для псевдослучайного формирования последовательностей обращений к памяти с повышенной вероятностью вытеснений из кэш-памяти (2 недели):
    • Разработка программы, генерирующей псевдослучайные наборы адресов памяти на основании описания адресации в кэш-памяти.

Испытание микросхем: разработка ПО для работы с энергонезависимой памятью

Очная
  1. Введение в язык программирования Python:
    • Изучение основ языка программирования Python.
    • Написание простейших ознакомительных программ.
  2. Введение в стандарт IEEE 1149.1 (JTAG):
    • Назначение сигналов интерфейса.
    • Конечный автомат внутренних состояний интерфейса.
    • Основные инструкции.
    • Ознакомление с библиотекой взаимодействия с IEEE1149.1 на языке Python.
    • Написание программы по считыванию ID процессора по JTAG.
  3. Изучение работы контроллера энергонезависимой памяти (ПЗУ), в которой хранятся базовые команды для процессора:
    • Изучение порядка доступа к контроллеру ПЗУ по JTAG.
    • Изучение принципа работы контроллера, доступных команд и устройства блока памяти ПЗУ.
    • Определение порядка команд для записи и чтения блока памяти ПЗУ.
  4. Разработка программы для записи и чтения произвольной строки в блоке памяти ПЗУ:
    • Разработка программы с возможностью писать и считывать строки из массива ПЗУ, а также дублирующей памяти SDRAM.
    • Разработка графического интерфейса программы (опционально).

Испытание микросхем: Разработка ПО для тестирования разъёма DDR4 на материнской плате

Очная
  1. Введение в язык программирования Python:
    • Изучение основ языка программирования Python.
    • Написание простейших ознакомительных программ.
  2. Введение в стандарт IEEE 1149.1 (JTAG):
    • Назначение сигналов интерфейса.
    • Конечный автомат внутренних состояний интерфейса.
    • Основные инструкции.
    • Ознакомление с библиотекой взаимодействия с IEEE1149.1 на языке Python.
    • Написание программы по считыванию ID процессора по JTAG.
  3. Составление описания отладочного интерфейса процессора для DDR4:
    • Изучение понятия «граничной цепочки» в стандарте IEEE 1149.1.
    • Составление описания граничной цепочки процессора на основе данных из специальной САПР.
  4. Разработка программы для тестирования разъёма DDR4 на материнской плате:
    • Изучение принципа работы специального отладочного модуля DDR4.
    • Определение типа возможных неисправностей, возникающих при монтаже разъёма DDR4 и процессора.
    • Составление набора манипуляций с граничной цепочкой для диагностики этих неисправностей.
    • Написание программы для взаимодействия с отладочным модулем на основе описания из предыдущего этапа.
  5. Проверка разработанной программы на реальной материнской плате:
    • Сборка отладочного стенда.
    • Проверка программы на исправном разъёме.
    • Внесение неисправностей различного вида и проверка обнаружения этих неисправностей программой.

Испытание микросхем: Тестирование интерфейса HDMI

Очная
  1. Введение в язык программирования Python:
    • Изучение основ языка программирования Python.
    • Написание простейших ознакомительных программ.
  2. Введение в стандарт IEEE 1149.1 (JTAG):
    • Назначение сигналов интерфейса.
    • Конечный автомат внутренних состояний интерфейса.
    • Основные инструкции.
    • Ознакомление с библиотекой взаимодействия с IEEE1149.1 на языке Python.
    • Написание программы по считыванию ID процессора по JTAG.
  3. Изучение устройства блока HDMI:
    • Определение (на основе документации) тестовых режимов, в которых может работать блок HDMI в процессоре.
    • Определение необходимых для этих режимов условий и тестовых воздействий.
    • Изучение последовательности доступа к физуровню по JTAG.
    • Изучение принципов работы PLL.
    • Определение необходимого набора настроек для релизации тестовых режимов HDMI.
    • Изучение способа доступа к PLL по JTAG.
  4. Разработка ПО для тестирования физуровня HDMI в различных режимах:
    • Составление (на основе анализа из предыдущего пункта) тестовых сценариев для различных тестовых режимов блока HDMI.
    • Написание программы для реализации этих сценариев.
  5. Проверка программы на отладочном стенде:
    • Сборка отладочного стенда.
    • Отладка программы во всех режимах работы (с помощью осциллографа).
    • Снятие осциллограмм всех тестовых сценариев.

Микропроцессорные модули и проектирование печатных плат

Очная
  1. Основы целостности питаний (3 недели):
    • Освоение методов тестирования качества вторичного электропитания,
    • Обретение понимания причинно-следственных связей с схемотехническими и топологическими решениями.
  2. Основы целостности сигналов (3 недели):
    • Освоение методов тестирования целостности сигналов высокочастотных интерфейсов,
    • Обретение понимания причинно-следственных связей с схемотехническими и топологическими решениями.
  3. Освоение маршрута проектирования высокочастотных микропроцессорных модулей (3 недели):
    • Освоение маршрута проектирования микропроцессорных модулей.

Разработка САПР проектирования электронных устройств

Очная, на базе лаборатории средств проектирования микроэлектроники (корпус Физтех.Цифра)
  1. Основы разработки ПО:
    • Системы контроля версий.
    • Работа с внутренним репозиторием GitLab.
    • Системы постановки задач и отчётности; тикет-трекерная система MantisBT.
  2. Разработка стандартного графического интерфейса приложения (меню, панель инструментов, строка состояния, виджеты, компоновка виджетов) на Qt.
  3. Изучение основ OpenGL: обработка 2D-графики по обсчёту массовых задач.
  4. Изучение основ OpenCL: разработка численного решение мат. модели на GPU.
  5. Многопоточное программирование в Qt: организация многопоточного модуля для обеспечения приемлемой скорости взаимодействия и передачи данных между модулями.

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

Удалённая Программирование на языках C, C++ (базовый и шаблоны STL).
  1. Теория графов и алгоритмы на графах (1 неделя):
    • Повторение основ теории графов.
    • Изучение алгоритмов на графах, необходимых в разработке компилятора.
    • Решение предложенных задач.
  2. Введение в компиляторные технологии (2 недели).
  3. Знакомство с компилятором LLVM и его промежуточным представлением (1 неделя).
  4. Углублённое знакомство с LLVM (2 недели):
    • Написание простейших pass’ов для llvm с целью практического знакомства с компилятором и его представлением.
  5. Реализация своего pass’а (3 недели):
    • Написание оптимизации в виде pass’а по изученной теории со второй и третьей недель.

Системы программирования: профилировщик

Удалённая Программирование на языках C, C++ (базовый и шаблоны STL).
  1. Введение в системное программирование — процессы и межпроцессное взаимодействие (2 недели):
    • Освежение знаний о некоторых системных вызовах.
    • Выполнение учебных задач.
  2. Введение в компиляторные технологии и в профилировщики (1 неделя):
    • Архитектура компиляторов, промежуточное представление.
    • Время исполнения программы.
    • Методы работы профилировщиков: сэмплирование и инструментирование.
    • Ответы на вопросы по изученным материалам.
  3. Знакомство с сэмплирующим профилированием (5–6 недель):
    • Подсчёт событий.
    • Трасса исполнения программы.
    • Дизассемблер с счётчиками инструкций (дополнительно).
    • Написание маленького сэмплирующего профилировщика.

Операционные системы: Разработка и тестирование ядра Linux

Удалённая Знание языка C, умение работать в командной оболочке bash, опыт работы с GNU/Linux-системами
  1. Введение в ядро Linux (2 недели):
    • Изучение документации ядра Linux и его структуры.
    • Обучение сборке и установке ядра на виртуальной машине x86-64.
  2. Профилирование ядра Linux (2 недели):
    • Изучение методологии профилирования ядра Linux.
    • Получение профиля исполнения тестовых задач.
    • Выявление наиболее требовательных функций из статистики профиля.
  3. Отладка ядра Linux (2 недели):
    • Работа с oops / panic.
    • Отладка ошибок памяти и блокировок.
    • Изучение набора тестов syzkaller и Linux Test Project.
  4. Разработка модуля ядра Linux (4 недели):
    • Разработка модуля ядра Linux, реализующего заданный алгоритм работы; оформление его исходных текстов в соответствии с правилами ядра.

Операционные системы (ОС): Режим Безопасных Вычислений

Удалённая Знание языка C, умение работать в командной оболочке bash, опыт работы с GNU/Linux-системами
  1. Введение в режим безопасных вычислений архитектуры Эльбрус (2 недели):
    • Изучение документации по РБВ.
    • Разбор простых падений программ на языке C.
    • Изучение отладчика gdb.
  2. Получение исходного текста программы для портирования в РБВ, формирование списка зависимых библиотек (1 неделя):
    • Фрмирование списка исходных текстов и зависимых библиотек, необходимых для портирования искомой программы в РБВ.
  3. Портирование исходного текста программы в РБВ (4 недели):
    • Портирование в РБВ выбранной программы по заданию практики.
    • Исправление ошибок компиляции и ошибок, возникающих при запуске программы.
  4. Тестирование портированной программы в РБВ, оформление патчей для её исходного текста (3 недели):
    • Тестирование ветвей работы портированной программы.
    • Подготовка патчей для исходного текста, хранящихся в системе контроля версий git.

Дистрибутив ОС: Сборка программного обеспечения из исходных текстов

Удалённая
  1. Знакомство с программными средствами автоматизации сборки программного обеспечения из исходного текста (cmake, autotools, meson) (2 недели):
    • Написание тестовых примеров автоматизации сборки при помощи cmake / meson.
  2. Разбор построения зависимостей пакета, зависимости для этапа сборки на примере сборки пакетов в Debian, Ubuntu, Gentoo (2 недели):
    • Изучение сборки пакета из исходного текста.
    • Постороение бинарных пакетов.
    • Выполнение сборки пакетов из выбранных исходных текстов.
  3. Знакомство с кросс-сборкой пакетов: зависимости, сценарии, хостовое окружение, базовые команды сборочного движка rcr-any (2–3 недели):
    • Сборка демонстрационно-отладочных примеров в кросс-окружении.
  4. Анализ зависимостей / связности бинарных пакетов, входящих в образ дистрибутива (2–3 недели).