В чем главное отличие между FPGA-хоббистом, ностальгирующим по КР580ИК80 на пенсии - и начинающим микроархитектором, ориентированным на будущее трудоустройство в передовую процессорную компанию или сфинансированный венчурными капиталистами стартап? Три слова: понимание концепции конвейера. Молодым профессионалом, не старым хоббистом. Это наглядно видно, если вы погуглите тексты про FPGA для начинающих. Если текст пишет программист, которому захотелось потрогать FPGA чисто для разнообразия, он как правило до конвейера не доходит. Помигает лампочками, поговорит про конечные автоматы и может начнет встраивать какую-нибудь FPGA-реализацию старого 8-битного процессора. (Некоторые из таких людей даже пишут книги - вот некий Роберт Дунне реализовал процессор конечным автоматом с состояниями fetch/decode/execute, но до конвейера не дожал) Все это происходит потому, что понимание работы конвейера как правило требует некоего мозгового усилия, типа толчка штанги. И если мозг уже поставлен десятилетиями программирования на Си и ассемблере, он упирается, потому что это ему контринтуитивно. Но это надо преодолеть, поскольку если вы придете интервьироваться в какой-нибудь AMD на позицию юного проектировщика, вас будут спрашивать не как помигать лампочками и засунуть Радио РК-86 в Xilinx, а как стоя перед интервьирующим написать на доске на языке описания аппаратуры Verilog конвейерную реализацию какого-нибудь умножения со сложением. Или сделать это на компьютере отрезанном от интернета, так что вы даже не cможете нагуглить решение - вот садисты, а? Именно этому вопросу будет посвящено следующее занятие Сколковской Школы Синтеза Цифровых Схем. Это занятие состоится 4  декабря  в Технопарке "Альтаир" МИРЭА(пр-т Вернадского, 86, стр.2, Метро"Юго-Западная) Вот живой линк на трансляцию: В свое время я написал тест в стиле ЕГЭ для студентов университета под названием NPU в Фримонт, Калифорния, где я помогал преподавать компьютерную архитектуру Тимуру Палташеву из AMD. В тесте приводились три реализации арифметического блока для вычисления возведения числа  - комбинационная, последовательностная и конвейерная. Этот тест я приведу ниже, а до него приведу аллегорическое объяснение информации, нужной для прохождения теста, из другого моего текста: Разъяснение на пальцах концепций комбинационной (combinational), секвенциальной (sequential) и конвейерной (pipelined) организации вычислений Представьте, что вам нужно организовать работу медкомиссии военкомата. Это можно сделать несколькими способами, в зависимости от поставленных целей. Если целью является минимизация количества помещений для осмотра, то можно усадить всех членов комиссии в одну большую комнату, в которую впускать по одному. Это пример комбинационной (combinational) организации вычислений. Недостатком его будет то, что каждый акт осмотра будет долгим, а члены комиссии будут скучать [каждый из четырех членов комиссии соответствует схеме умножения на схеме ниже]. Как это выглядит в виде кода на языке описания аппаратуры Verilog, а также синтезированной из него схемы (до mapping-а, размещения и трассировки). Комбинационный каскад из пяти операций умножения: Если целью является минимизация количества специалистов, то можно устроить и так, но при этом у военкоматовца-одиночки должно быть несколько специальностей (глазник, зубник, уролог), и нужно будет нанять специального товарища, который бы временно выводил допризывника из комнаты, пока военкоматовец меняет в ней оборудование - вешает табличку проверки зрения на стену, ставит зубоврачебное кресло (обстановка, определяемая состоянием конечного автомата, state). А потом помощник по звоночку (тактовому сигналу, clock) вводил бы допризывника обратно для следущей стадии осмотра. Это пример последовательностной (sequential) организации вычислений. Частным случаем такой организации вычислений является популярный в 1970-х годах микрокод - трюк, который я не буду рассматривать в данном посте. Соотвественно (здесь у нас только операция умножения, которое повторяется пять раз, Но можно построить пример, в котором тут будет ALU с разными операциями в каждом такте): Наконец, если у вас есть много комнат и специалистов, то можно организовать конвейер (pipeline), который будет обеспечивать наибольшую пропускную способность, в идеальном случае определяемую только одним (самым медленным) специалистом. В неидеальном случае допризывник может начать пререкаться и затормозит процесс для всех (stall) или для всех. кто стоит за ним (slip). Против этого существуют всякие out-of-order методы, которые я не буду рассматривать в этом посте - наш "военкомат" (конвейер для вычисления функции) будет работать идеально. На фото выше - только одна комната. Можно представить несколько комнат с медиками, которые пересекает в процессе допризывник, как чиcло n пересекает пять "комнат" (регистров из D-триггеров, перед которыми сидят медики - четыре операции умножения. А теперь вы можете сами ответить на вопросы, которые я задавал студентам в Северо-Западном Политехническом Университете по поводу этих трех схем: 7. Which implementation is likely to allow the highest maximum frequency (assuming that the outputs of the combinational implementation are connected to clocked register)? a) pow_5_implementation_1; b) pow_5_implementation_2; c) pow_5_implementation_3 8. Which implementation is likely to use the smallest number of gates? 9. Which implementation is likely to have the highest throughput (number of calculated pow_5(n) results per seconds)?  10. Which implementation is going to have the smallest latency in clock cycles (assuming that the outputs of the combinational implementation are connected to clocked registers)? И коронный вопрос: 11. The testbench instantiated all three implementations of pow_5. An engineer simulated the testbench and got the following waveform. However he forgots the order he added the last three signals to the waveform. Can you determine which signal is the output of combinational implementation, sequential non-pipelined implementation and sequential pipelined implementation? a) The order is (from upper n_pow_5... to lower n_pow_5...): combinational, sequential non-pipelined implementation, pipelined b) combinational, pipelined, sequential non-pipelined implementation c) pipelined, combinational, sequential non-pipelined implementation d) pipelined, sequential non-pipelined implementation, combinational e) sequential non-pipelined implementation, combinational, pipelined f) sequential non-pipelined implementation, pipelined, combinational Если вы разобрались с этим упражнением, то вам будет гораздо проще понять и как работает конвейер в процессоре, графическом процессоре, сетевых чипах - принцип тот же самый, но вокруг этого много наворотов - приостановок, очередей, backpressure, кредиты итд - за знание всего этого собственно и платят заработную плату в группах разработки чипов в Apple, NVidia, Cisco, Syntacore, НИИСИ (крутой российский процессор Комдив-64) итд. Следующее занятие на школе будет про графику. Собственно вот вся программа: 30 октября 2021: 1. Введение в маршрут проектирования и упражнения с комбинационной логикой. 13 ноября 2021: 2. Архитектура: вид процессора с точки зрения программиста. 20 ноября 2021: 3. Последовательностая логика и конечные автоматы. 27 ноября 2021: 4. Разбор учебного проекта: распознавание и генерация звуков и мелодий. 4 декабря 2021: 5. Конвейеры и систолические массивы, с приложением для искуственного интеллекта. 11 декабря 2021: 6. Разбор учебного проекта: модульная графичеcкая игра со спрайтами. 18 декабря 2021: 7. Микроархитектура однотактового процессора. 25 декабря 2021: 8. Микроархитектура конвейерного процессора. 15 января 2022: 9. Проектирование процессорного кэша и измерение его производительности. 22 января 2022: 10. Стандартные блоки и приемы проектирования: очереди FIFO и кредитные счетчики. 29 января 2022: 11. Стандартные блоки и приемы проектирования: арбитры, банки и разделение памяти. 5 февраля 2022: 12. Пробуем маршрут RTL2GDSII: как разрабатываются массовые микросхемы. Часть I. 12 февраля 2022: 13. Пробуем маршрут RTL2GDSII: как разрабатываются массовые микросхемы. Часть II. 19 февраля 2022: 14. Имитиция собеседования на позицию проектировщика цифровых микросхем. 26 февраля 2022: 15. Разбор имитации интервью с вручением поощрительных призов. Присоединяйтесь онлайн и офлайн - еще даже остались бесплатные (оплаченные Syntacore / Ядро Микропроцессоры, Максимом Масловым и Cadence Design Systems) платы с микросхемами ПЛИС. См. пост Готовимся к Сколковской Школе Синтеза Цифровых Схем: литература, FPGA платы и сенсоры - для деталей: Проектировщик CPU, GPU, сетевых микросхем