Ректоры и президенты неожиданно согласились рассказать студентам, что их ждет в микроэлектронике

c6f55ab9c08666048ce86f9b6cff954d.jpg

Мы на Школе Синтеза двадцать суббот учили школьников и студентов проектировать процессоры на FPGA. Для выпуска мы решили пригласить крутых топов, и на наше удивление, откликнулись сразу семеро:

  1. Александр Редькин, гендир и основатель компании Syntacore, которая разрабатывает будущий флагман российcких процессоров для линуксных ноутбуков — суперскаляр с внеочередным исполнением иструкций, совместимый по системе команд с архитектурой RISC-V.

  2. Сергей Сергеевич Шумилин — заместитель директора по науке компании Миландр, российского лидера по разработке микроконтроллеров, пионера лицензирования ядер ARM и надежды российcких пользователей ПЛИС.

  3. Николай Суетин — главный микроэлектронщик фонда Сколково, бывший руководитель R&D Интела в России.

  4. Сергей Михайлович Абрамов — член-корреспондент РАН, руководитель разработки суперкомпьютера СКИФ и других HPC проектов.

  5. Игорь Рубенович Агамирзян — бывший менеджер Микрософта, Российской Венчурной Компании, вице-президент Высшей Школы Экономики и программист.

  6. Александр Тормасов — ректор Иннополиса, Chief Scientist компании Parallels, гуру виртуализации, лектор по компьютерной архитектуре.

  7. Тимур Палташев — известный специалист по архитектуре компьютерной графики, c 25-летним опытом в Silicon Valley и работой с питерским ИТМО.

Вообще мы планировали бОльшую часть времени в субботу разбирать микроархитектурные задачки на верилоге, но раз так, то будем устраивать сессию на тему «лидеры индустрии и академии расскажут, какие следущие шаги предпринять после решения микроархитектурных задачек, чтобы стать лидерами индустрии и академии». И ответят на вопросы.

Это состоится в субботу 23 апреля в Капсуле №2 Технопарка Сколково в 12:00.

Как записаться и что была на двух последних занятиях

Записаться можно у Александра Биленко info@chipexpo.ru. Также неплохо зарегистрироваться на сайте для получения дополнительных материалов в рассылке.

8f9af4491db96df653ac1219c7747518.png

Как вообще появилась Сколковская Школа Синтеза Цифровых Схем? Когда-то лет 10 назад я поехал в МФТИ, который любят сравнивать с MIT, и обнаружил, что в нем нет аналога MIT-шного курса 6.111. Это курс в котором студенты делают всякие цифровые схемы на FPGA, с курсовыми работами по обработке видео, звука, графике итд.

Потом была долгая история, в которой энтузиасты из России, Украины, Калифорнии и Великобритании создавали учебные материалы, и все это в конечном итоге вылилось в школу с ChipEXPO и Сколково. Которая помимо материалов а-ля MIT 6.111, впитала упражнения с дизайном простейшего CPU, трейнинг на тулах для массовых ASIC-ов, курсы Клифа Каммингса и индустриальное ноу-хау.

В течение 20 занятий по субботам ученики изучили:

  1. Язык описания аппаратуры Verilog, методологии проектирования на уровне регистровых передач и основы статического анализа тайминга.

  2. Элементы архитектуры и микроархитектуры процессоров общего назначения, на примере двух реализаций архитектуры RISC-V: простейшая schoolRISCV и промышленная RVfpga.

  3. Маршрут синтеза для FPGA и для ASIC, используя САПР от Intel FPGA, Synopsys, Cadence и Mentor / Siemens EDA.

  4. Приемы проектирования, слабо представленные в учебниках, но широко используемые в индустрии: кредитные счетчики с аппаратными очередями, арбитры, банки памяти, пересечение тактового домена.

  5. Практические занятия по реализации на FPGA цифровых схем, работающих с сенсорами, графикой и музыкой.

099ee5ca21ad49aafa39104989a17cdb.png

Теперь что было на предыдущих занятиях.

Занятие 20. Первый шаг к графическому процессору (GPU)

Вначале речь, которая связывает студенческие упражнения с промышленным GPU:

  1. Зачем нужны графические чипы:

  2. Чем конвейер GPU отличается от конвейера CPU.

  3. Превращение сложной операции в последовательность простых.

  4. Пример: соединение «генератор команд → вычислитель координат → очередь FIFO → кадровый буфер → логика вывода на экран».

  5. Пример: алгоритмы вычисления координат точек окружности.

Далее разбор примеров от Егора Варламова (МИРЭА) и Дмитрия Смехова.

Где-то на 15-й минуте объясняется идея трехмерной компьютерной графики на пальцах:

7a885b765d30f6a313664c4b72376516.gif

Еще приводится ссылка на древнюю статью с описанием 15 алгоритмов рисования окружностей — вы можете сами посмотреть какие из них подходят для реализации на FPGA (статья настолько древна, что код в ней на Фортране — ага!).

c691b1b7d4293ec95e908a794767b5dc.png

До этого было занятие 19, со спичем про реалии работы инженером в электронных компаниях, на позициях RTL дизайнер (Register Transfer Level), DV верификатор (Design Verification) и EDA программист (Electronic Design Automation) в Silicon Valley (впрочем такое же вы найдете в европейских и российких компаниях):

  1. Организация.
    1.1. Работа в большой, средней или малой компании, контракторство,
    университет или стартап.
    1.1. Структура типичной команды разработки: организация по отделам
    компании и по блокам чипа.
    1.3. Жизненный цикл проекта: от анализа требований рынка до продукта в магазине.

  2. Специализация.
    2.1. Микроархитектор блока / инженер по проектированию на уровне
    регистровых передач.
    2.2. Инженер-верификатор / специалист по моделированию.
    2.3. Разработчик программ для автоматизации проектирования /
    Electronic Design Automation, EDA.

После этого выступил Александр Силантьев из МИЭТ, который разобрал часто встречающиеся задачки с интервью для скрининга и junior позиций (задачки посложнее мы будем разбирать на другой сессии).

После занятия мне поступил запрос выложить рекомендованную литературу, которая на видео не очень хорошо видна. Выкладываю:

Если вы только начинаете, приобретите Харрис & Харрис и Цифровой Синтез. После него стоит приняться за Дональда Томаса, где хорошо разбирается алгоритм симуляции верилога.

К сожалению, в Харрис & Харрис нет многих важных вещей, например арбитров и очередей FIFO. Кое-то есть в учебнике, который используют в Стенфорде (зеленый справа). Например в нем есть skid buffer / double buffer — важный прием для конструирования микроархитектуры. Там же объясняется что skid buffer решает (проблемы тайминга для логики затыков в конвейере).

Также в Х&Х мало описаны арифметические блоки. Эту тематику покрывает учебник справа (он не единственный — по реализации арифметики есть штук пять хороших нишевых учебников).

Также рекомендую полезный сайт под названием RTLery.

535b17e749d11fa39a0fac68732756ef.jpg

Для введения в микроархитектуру CPU лучший современный учебник — это Шен-Липасти слева. Там есть про предсказатели перехода, переименование регистров итд — все хорошо описано и с примерами.

Если же хочется поиграться с полноценной реализацией на верилоге архитектуры RISC-V, я рекомендую книжку справа. Процессор в нем простой — микроконтроллерного класса, с простым статическим конвейером, не как суперскаляры в Шен-Липасти. Но зато этот процессор написан индустриальным дизайнером от сохи (который например проектировал космические версии Z80 и сотню других чипов), а не еще одним студентом. Который еще и дотошно все описал.

6994464c23da02929851af02acff6ce0.jpg

Основы верификации стоит знать не только верификатору, но и RTL-щику, чтобы не зависеть от верификаторов на юнит-тестах. В частности, стоит прочитать вот эту книжку, причем и старое (до coverage driven constrained-random verification), и новое издание (после этих изменений подхода). В первой главе хорошо описана идеология верификации, во второй писание тестового плана, потом разные трюки и индустриальные практики. Для чтения в электричке — самое то.

48117293075c3c7c7b26588d88d6f0a2.jpg

SystemVerilog верификатору стоит учить по книжке слева.

Отдельно стоит получить представление о UVM по другой книжке, Getting Started with UVM: A Beginner’s Guide by Vanessa R. Cooper. Правда написанный в ней пример драйвера для превращения транзакций в сигналы порочен, так как из этого примера не следует как писать драйверы для конвейерных транзакций, которые занимают несколько тактов (например AXI Write с фазами адреса и данных), но в остальном книжка хороша — абсолютный минимум и вcе понятно.

Книжку справа про assertions читают в основном социопаты. Например, у меня есть знакомый, который провел с этой книжкой (а не с девушкой) рождественские каникулы. Но знать язык concurrent assertions полезно и для верификатора, и для RTL дизайнера — это одна из так сказать стаместок, которые стоит иметь в наборе инструментов (кроме Бена Коэна есть и более легкие тексты). (После того рождества моего знакомого пригласили на интервью в Локхид-Мартин верифицировать чипы для американских ракет)

8a6d8cc7ec729069592a7cb3da725b9b.jpg

Вот две книжки, откуда можно черпать идеи. Одна (слева) как писать на верилоге игры. К сожалению, ее автор хоббист, а не писатель верилога на зарплате, поэтому к его коду не стоит относится как к идеалу стиля.

Другая — сборник древних статей уже упоминавшегося выше Джима Блинна. Я уверен, что по графике есть куча более солидных текстов, но объяснение преобразования перспективы от Джима Блинна понравилось мне больше всего.

34c087c2472c6d4e55556d5392ca7dd0.jpg

На этом я свой пост заканчиваю и мы ждем вас всех в субботу 23 апреля в Капсуле №2 Технопарка Сколково в 12:00, насколько вместится в помещение.

Эту девочку зовут НаташаЭту девочку зовут Наташа

© Habrahabr.ru