Как стать автором
Обновить

Являются ли программисты айтишниками? И является ли проектирование на уровне регистровых передач программированием?

Время на прочтение6 мин
Количество просмотров22K

Перед нами девушка Лиля, с FPGA платой и учебником Харрис & Харрис в руках, на фоне самого высокого на Земле дерева Sequoia sempervirens, недалеко от Стенфорда в Silicon Valley.

Представьте, что вы приехали сюда в командировку в типичную электронную компанию. Усаживаетесь в офисе, входите со своего ноубука (в Америке их чаще называют лаптопами) в корпоративную сеть и пытаетесь что-то напечатать. А принтер не подсоединяется. Вы обращаетесь к ко-воркеру "Что делать?", а он вам говорит: "Обратитесь в IT". Вы в замешательстве "В Ай-Ти? А я что - не айтишник?"

Спокойствие. Если вы программист, вы не IT, вы software engineer и работаете в отделе Software Engineering Department. Если вы электронщик, вы тоже не IT, вы работаете в Hardware Engineering Department. IT Department - это другое, это отдельный от разработки отдел, это группа сисадминов, которые поддерживает внутри-корпоративную сетку и ведут учет выданых сотрудникам лаптопов.

Но это слишком тривиально, обсудим более интересный вопрос: вот все эти люди, которые пишут код на языке описания аппаратуры Verilog, который потом превращается в дорожки и транзисторы из silicon на фабрике - они программисты? Аппарентли, нет.

Код на Verilog выглядит как программа? Но код на HTML тоже незнакомому с ним человеку может показаться похожим на программу.

В язык Верилог входят все черты языков программирования, в SystemVerilog есть даже классы и ООП, но это связано с тем, что верилог используется не только для написания кода, который превращается ("синтезируется") в железо, но и для написания моделей, тестового окружения и тестов.

Код на синтезируемом подмножество верилога использует уровень абстракции, который называется "уровень регистровых передач" - Register Transfer Level, RTL (не путать с другими расшифровками аббревиатуры, например Run Time Library или Resistor–Transistor Logic).

Тут человек, который не знаком с верилогом, но программировал на ассемблере, услышав слово "регистровая передача" может кивнуть "а понятно, это как в MOV R5, R0". Нет, непонятно. Проблема в том, что слово "регистр" в данном случае является омонимом. У слова "регистр" если два (точнее три, но сконцентрируемся на двух) разных значения:

1. Регистр в контексте программирования на ассемблере. Электронщики называют такие регистры software-visible registers, "регистры, видимые софтверу" или architecture registers, "архитектурные регистры", чтобы не путать с микроархитектурой (архитектура и микроархитектура - это столь же разные вещи как культура и физкультура).

2. Регистр как набор из D-триггеров в электронной схеме. Те регистры, которые видит программа и которые доступны инструкциям (см. пункт первый) - тоже на электронном уровне строятся из D-триггеров, но кроме них в процессоре есть на порядок или два порядка больше других регистров. Регистры используются для хранения данных между стадиями конвейера, для буферов при сбрасывании в кэш данных, как состояние в конечных автоматах итд.

[3. Есть еще memory-mapped registers, хорошо знакомые например программистам микроконтроллеров, но опустим их из этого поста для сохранения фокуса]

Так вот.

Когда вы пишете на верилоге:

always @ (posedge clock)
r <= функция_нового_состояния_от (r, вводы, другие_регистры);

- вы создаете схему, на уровне регистровых передач, которая реализуется комбинационным облаком из элементов и-или-не итд и стоит между вводами, регистрами (в значении 2, то есть D-триггерами) и регистром r (опять в значении 2, то есть группой D-триггеров).

Register transfer в контексте проектирования - это задание правила трансфера (функции) превращения состояния регистров из предыдущего такта, перед положительным фронтом тактового сигнала clock, в состояние регистров в новом такте.

А вот когда вы пишете:

MOV R5, R0

- вы создаете программу, последовательность из нуликов и единичек, которая хранится в памяти, откуда ее вытаскивает процессор (схема), декодирует и на ее основе меняет свое внутреннее состояние, которое включает PC - program counter, software visible регистры и другие регистры (в значении 2).

Схема которая строится с помощью так называемого маршрута RTL2GDSII из кода на верилоге, является не абстрактной диаграммой, а случае ASIC design совершенно конкретной электрической схемой, изготавливаемой на фабрике. C металлическими дорожками меди, которые соединяют блоки ASIC library, которые реализуют функции and2, and3, andor, mux, dff (d-flip-flop) итд.

"Ну а как с FPGA design? Ведь там мы не переделываем микросхему на фабрике, а меняем ее, загружая биты в память конфигурации. Разве bitstream - это не программа?"

В случае FPGA design схема является более виртуальной - она задаётся набором битов подключенным к контрольным сигналам мультиплексоров, идущим к lut (lookup table) и другим элементам clb (ячеек) уже сделанной на фабрике микросхемы FPGA. Но эта схема все равно не является программой. Потому что словом "программа", по сложившейся с 1940-х годов традиции, называют цепочку инструкций фон-Нейманновской машины (сейчас кто-то решит показать эрудицию и заговорит о гарвардской архитектуре, но мы возразим эрудиту вот такой картинкой:

В американских, [западно]европейских и [южно и восточно]азиатских электронных компаниях никто синтезируемый код на верилоге программой не называет. Говорят просто "RTL': "напишите RTL", "готов RTL?" , а не "напишите программу?" , "готова ли программа?" итд.

Введение в упражнения с Verilog на FPGA плате в первый день Школы Синтеза Цифровых Схем на ChipEXPO в Сколково в сентябре
Введение в упражнения с Verilog на FPGA плате в первый день Школы Синтеза Цифровых Схем на ChipEXPO в Сколково в сентябре

Как же научиться RTL?

Группа энтузиастов по подьему образования в России и Украине на уровень 21 века провела в сентябре в Сколково Школу Синтеза Цифровых Схем с упражнениями на FPGA платах. Школа оказалась популярна (на 25 мест было 86 заявок) и мы решили ее расширить до полноценного семестрового курса по субботам, с объемом материала на уровне университетских лабораторных по FPGA (типа MIT 6.111), к которым добавили элементы компьютерной архитектуры, базовый туториал для ASIC и некоторые умения из промышленности.

Новый цикл занятий начнется с 30 октября 2021, закончится 12 февраля 2022, и будет проходить по субботам в Сколково в Москве, с трансляцией в казанский Иннополис и другие места. Регистрация уже открыта .

Среди преподавателей на школе - инженеры российской компании Syntacore / Ядро, SberDevices, IRQ, ИнСис и Inline Group (использование FPGA для высокоскоростного трейдинга на бирже), преподаватели МИЭТ, МИРЭА, МГУ, ВШЭ МИЭМ, Черниговского ЧНТУ, российского представительства Mentor Graphics / Siemens EDA. Школа поддержана компанией Cadence Design Systems.

Место еще не выбрано окончательно, но занятия будут проходить или в Технопарке Сколково, или вот в таком занятном здании, которое называется Гиперкуб и в котором можно поместить больше участников. Вы можете высказать в опросе, что лучше - технопарк или гиперкуб:

Школа предназначена для трех категорий слушателей:

  1. Школьники-старшеклассники олимпиадного типа смогут понять, что представляют из себя работы в микроэлектронной промышленности: проектирование чипов для смартфонов, игровых приставок и самоуправляющихся автомобилей, или использование микросхем реконфигурируемой логики для управления космическим кораблем.

  2. Студенты младших курсов смогут заложить твердую основу для дальнейшего изучения схемотехники и архитектуры компьютеров в их вузах.

  3. Преподаватели вузов, физматшкол или кружков технологии смогут найти материал для постановки или улучшения своих курсов.

Школа может также понравиться кросс-дисциплинариям. Вот например участники школы на ChipEXPO распознают с помощью FPGA платы мелодии, которые играет для них преподавательница флейты Мария Беличенко:

План семинаров школы:

30 октября 2021: 1. Введение в маршрут проектирования и упражнения с комбинационной логикой.

13 ноября 2021: 2. Последовательностая логика и конечные автоматы.

20 ноября 2021: 3. Разбор учебного проекта: модульная графичеcкая игра со спрайтами.

27 ноября 2021: 4. Разбор учебного проекта: распознавание и генерация звуков и мелодий.

4 декабря 2021: 5. Конвейеры и систолические массивы, с приложением для искуственного интеллекта.

11 декабря 2021: 6. Архитектура: вид процессора с точки зрения программиста.

18 декабря 2021: 7. Микроархитектура: вид процессора с точки зрения схемотехника.

25 декабря 2021: 8. Пробуем маршрут RTL2GDSII: как разрабатываются массовые микросхемы.

15 января 2022: 9. Элементы микроархитектуры 1: очереди FIFO и кредитные счетчики.

22 января 2022: 10. Элементы микроархитектуры 2: арбитры, банки и разделение памяти.

29 января 2022: 11. Элементы микроархитектуры 3: строим процессорный кэш.

5 февраля 2022: 12. Имитация собеседования на позицию проектировщика цифровых микросхем.

12 февраля 2022: 13. Разбор имитации интервью с вручением поощрительных призов.

Популярная группа GSPD (что расшифровывается как "Государственная Служба Пропаганды Дискотек" - про это у них есть песня) сочинила также песню "У России три пути - Рейвы, Водка и Айти".

Но они неправы! У России несомненно есть и четвертый путь - проектирование сверхбольших интегральных микросхем с продвинутой микроархитектурой. Для гаджетов, сетевой инфраструктуры, ускорителей машинного обучения, космических аппаратов и самоуправляемых автомобилей. И для этого нам всем нужно подготовить будущих супердизайнеров проектирования на уровне регистровых передач. Из современных школьников и студентов.

Кое-что из этого будущего уже появляется - например российский процессор Скиф для планшетов, спроектированный в зеленоградском НПО Элвис. Но одного Элвиса не хватит, чтобы изделия на российских микросхемах значимо проникли например на Consumer Electronics Show в Лас-Вегасе - для этого нужна на порядок бОльшая инженерная экосистема.

Картинка из статьи о Consumer Electronics Show 2022 в Лас-Вегасе на hypebeast.com
Картинка из статьи о Consumer Electronics Show 2022 в Лас-Вегасе на hypebeast.com
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Какие из нижеперечисленных специалистов, по-вашему, «работают в IT»?
81.11% Системный администратор73
75.56% Сетевой архитектор68
70% DevOps (что бы это не значило)63
66.67% Администратор баз данных, владеющий SQL60
61.11% Программист, пишущий компилятор на C++55
45.56% Data Scientist, анализирующий питоном повадки людей на сайтах41
17.78% Молекулярный биолог, пишущий скрипты на Перле для поисков участков ДНК16
23.33% Проектировщик микросхем, рисующий шаблон маски кусками цветного картона (вымерли в 1970-е)21
24.44% Проектировщик микросхем, рисующий неразложенный граф схемы мышкой на экране (вымерли в 1990-е)22
35.56% Проектировщик микросхем, задающий схему кодом на Verilog или VHDL32
36.67% Верилогист, синтезирующий bitstream для FPGA33
37.78% Писатель тестового окружения для симуляции на SystemVerilog34
47.78% Писатель кода на HTML для сайта43
13.33% Журналист издания Wired тиражирующий свои фантазии о технологиях12
11.11% Повар в кафетерии электронной компании10
2.22% Другие (добавить в комментарниях)2
Проголосовали 90 пользователей. Воздержались 38 пользователей.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Что из нижеперечисленного является программами?
11.67% Схема механического арифмометра7
13.33% Электронная схема из операционных усилителей в аналоговом компьютере8
13.33% Электронная схема из цифровых переключателей (switch) на реле или транзисторах8
13.33% Электронная схема из логических элементов (И, ИЛИ, НЕ) и D-триггеров8
10% Чертеж в графическом редакторе дорожек и транзисторов на микросхеме6
25% Описание аналоговой схемы на языке AMS-VHDL (аналоговое расширение VHDL)15
28.33% Описание электронной схемы на языке Verilog на уровне переключателей (switches)17
31.67% Описание электронной схемы на языке Verilog на уровне логических элементов (И, ИЛИ, НЕ) и D-триггеров19
30% Описание электронной схемы на языке Verilog комбинирующей ячейки ASIC library18
30% Описание электронной схемы на языке Verilog на уровне регистровых передач18
31.67% Описание модели электронной схемы на языке Verilog на уровне транзакций (с потерей тактов)19
35% Тестовое окружение на SystemVerilog21
15% Микроархитектурная диаграмма с FIFO и арбитрами в MS Visio, LucidSpark или Drwa.io9
66.67% Машинный код, цепочка инструкций процессора в виде шестнадцатеричных чисел40
80% Код на языке ассемблер48
83.33% Код на C++ или Питоне50
53.33% Код на SQL32
26.67% Код на HTML16
15% Эксель таблица9
35% Кулинарный рецепт21
10% Правила дорожного движения6
Проголосовали 60 пользователей. Воздержались 32 пользователя.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Где, по-вашему, лучше проводить Сколковскую Школу Синтеза Цифровых Схем?
26.98% В Технопарке Сколково17
23.81% В Гиперкубе Сколково15
25.4% С трансляцией в Иннополис в Казани16
38.1% С трансляцией в ИТМО в Санкт-Петербурге24
41.27% С трансляцией в Новосибирске, Ульяновске, Минске, Киеве, Чернигове, Астане (добавить свои варианты)26
34.92% Я не хочу, чтобы в России проектировали чипы, гаджеты должны рости на дереве в далекой стране22
Проголосовали 63 пользователя. Воздержались 33 пользователя.
Теги:
Хабы:
Всего голосов 20: ↑12 и ↓8+8
Комментарии57

Публикации

Истории

Ближайшие события

28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
2 – 18 декабря
Yandex DataLens Festival 2024
МоскваОнлайн
11 – 13 декабря
Международная конференция по AI/ML «AI Journey»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань