- BrainTools - https://www.braintools.ru -

От паровых шестерёнок к суперчипам: как машина Бэббиджа превратилась в FPGA

От паровых шестерёнок к суперчипам: как машина Бэббиджа превратилась в FPGA - 1

Задумывались ли вы, как идеи инженеров 19 века вдруг становятся реальностью в мире современных чипов? Как вычислительная машина из огромных латунных шестерёнок — превратилась в FPGA.

То, что Чарльз Бэббидж мечтал построить, сегодня легко воссоздать на чипе размером с монету.

В этой статье разберём, как современные технологии соединили эпоху паровых машин с цифровым железом, а вопросы о том, что такое «компьютер», становятся ещё более захватывающими и… личными. Заходите, будет интересно.

Механическая революция: Difference и Analytical Engine

Окунаемся в начало XIX века, тогда вычисления были долгими, скучными и зачастую смертельно утомительными для армии клерков. Чарльз Бэббидж — английский математик, изобретатель и настоящий визионер, задался вопросом: неужели точные вычисления навсегда обречены оставаться тяжёлым ручным трудом?

Поначалу идея автоматизации рутинного ада показалась математическому сообществу весьма фантастической. Чарльз же, с самого начала смотрел широко и амбициозно: его Difference Engine, или по‑русски «разностная машина», была направлена на решение давней проблемы — освободить людей от ручной работы по составлению полиномиальных таблиц.

Difference Engine. Источник.

Difference Engine. Источник [1].

Сложная формула второго или даже седьмого порядка, это пустяк для Difference Engine. Зубчатые колёса и валики, вот что поможет вычислять, а именно, каждое следующее значение в таблице исключительно с помощью сложения, последовательно применяя метод конечных разностей Ньютона. Что-то вроде первой попытки сделать компьютер, но — механический, вращающийся и гремящий, а не электронный и тихий. Но как этот механизм вообще умел считать?

Разностная машина. Источник.

Разностная машина. Источник [2].

Механически колёса вычисляли «разности разностей», а перенос десятков происходил автоматически за счёт внутреннего переключающего механизма. Всё это выполнялось без единой операции умножения. Такой принцип был предельно прост и прозрачен, напоминая основы раннего программирования: вы задавали начальные данные, а при каждом повороте ручки машина выдавала следующий результат с высокой точностью, полностью устраняя ошибки [3], связанные с человеческим фактором.

Затем Бэббидж пошёл ещё дальше — попытался представить, что будет, если сделать машину не только для одного набора операций, а универсальной: так родилась Analytical Engine. Это уже настоящий механический прообраз программируемого компьютера: данные и программы задавались раздельно на перфокартах (идея, навеянная жаккардовыми ткацкими станками), операции и адресация были разделены по типам карточек, а сама архитектура предусматривала управление ходом исполнения, поддержку циклов и даже подпрограмм. 

Analytical Engine. Источник.

Analytical Engine. Источник [4].

Удивительно, но система Analytical Engine с её «mills» (процессором) и «store» (памятью [5]) настолько близка по принципам к архитектуре, которую позднее назовут архитектурой фон Неймана. Бэббидж вместе с Адой Лавлейс впервые представили процессор не просто как арифмометр, а как устройство, которое исполняет программу, управляя вычислениями по заданному коду, — то есть первый пример программируемой машины такого типа.

И всё же оба эти проекта — Difference и Analytical Engine — остались во многом мечтами. Почему? Техническая и социальная реальность того времени оказалась не готова к столь амбициозным идеям. Архаичная станочная база, отсутствие индустрии точного литья и механообработки — даже современная команда XXI века при повторе использовала детали, соответствующие возможностям XIX века, чтобы воссоздать Difference Engine №2, и не столкнулась с меньшими сложностями. Но не только в металле дело. Постоянный финансовый цейтнот, политические интриги, смена интересов правительства и не всегда простые отношения между изобретателем и производителями стали причиной остановки работ. Ведь государство хотело увидеть готовый продукт ради наглядной пользы — а Бэббидж всё время работал на перспективу, размышляя об эволюции идеи, а не завершении конкретного прототипа. 

Difference Engine №2, 2002. Источник.

Difference Engine №2, 2002. Источник [6].

Итог: проект Difference Engine в XIX веке так и не увидел полного воплощения, огромное количество сложных деталей были пустой тратой средств и надежд.

И всё же именно эти попытки впервые заложили абстракции, которые до сих пор лежат в основе цифровой эпохи: разность как форма вычисления, перфолента как форма кода, и мечта о машине, выполняющей алгоритм.

Электромеханика и реле: путь к автоматике

Переход к электромеханике толкнул к новой революции в вычислениях, что пришлось на начало XX века. Герман Холлерит, он же инженер-изобретатель, он же отец современных автоматических вычислений, увидел в дырявых перфокартах не просто способ хранения данных, а настоящий универсальный инструмент. Меняя практику обработки больших данных и используя перфокарты как универсальную память и средство ввода/вывода. Его электрические табуляторы позволили впервые автоматизировать учёт информации в переписи США 1890 года, ускорив обработку результатов на годы вперёд и заново определив масштаб применимости вычислительных машин.

Перфокарта. Источник.

Перфокарта. Источник [7].

При этом эти устройства не просто считывали информацию с перфокарт, они умели управлять данными: сортировать, считать, объединять их по заранее заданной программе, «зашитой» в специальные коммутационные панели. Именно на базе этой технологии Холлерита позже построился коммерческий успех компании IBM, которая десятилетиями совершенствовала свои перфокартные машины, превращая их из простых счётчиков в ключевой инструмент для организации и автоматизации бизнес-процессов.

Табулятор Холлерита. Источник.

Табулятор Холлерита. Источник [8].

Перфокарты стали практически стандартом машинных данных — их 80-колоночная форма IBM сохранялась как индустриальная классика вплоть до электронных компьютеров 1960–1970-х. Важно, что память и программирование постепенно отделялись друг от друга, устройства научились выполнять операции по управляющему сценарию, пусть и реализованному с помощью проводных соединений или механических переключателей.

Следующий прорыв — машина Цузе. Его Z1, а позднее и релейные Z3, Z4 — наглядное воплощение мечты о «гибкой» программируемой архитектуре. Z1, построенная в 1938 году, была чуть ли не чудом инженерии — это был настоящие механический комп с памятью, арифметико-логическим блоком (АЛУ), бинарной логикой [9] и даже двоичной плавающей точкой. 

Только вот проблема — эта механика была очень «капризной»: часто сбои происходили. Работоспособность — «ну так себе», больше прототип, чем рабочая машина. 

Машина Цузе. Источник.

Машина Цузе. Источник [10].

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

Но у механики всегда был естественный потолок: помимо ограниченной точности, массивности и надёжности компонентов скорость передачи сигналов стала «бутылочным горлышком» развития. 

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

Простейший закон природы: скорость сигнала ограничена не только скоростью света, но и инерцией физических элементов схемы. Всё, что связано с движением массы — будь то металл или даже реле — заведомо медленнее импульсов в полупроводнике. Именно это различие в скорости сделало электромеханику эволюционным тупиком. Как только пришли интегральные микросхемы и кремний, человечество махнуло рукой на эти ритуальные щелчки контактов и стопки перфокарт (а кто их сейчас вообще помнит?), пересев на микросхемы и кремний. [11]

Транзисторы и интегральные схемы: миниатюризация вычислений

Что мы помним о транзисторной революции? Что это был такой момент, когда старые громоздкие лампы отправились на пенсию, а на их место пришли малютки — транзисторы, которые сделали компьютеры меньше, шустрее, практичнее и за размером которых сейчас гонятся производители.

Представьте: 1965-й год, и в руках у инженеров — чудо инженерной мысли с 12-битной архитектурой и жалкими (сегодня) 4 килобайтами памяти. Но даже это было круче, чем вы могли себе представить. Можно увеличить до 48 Кбайт — солидный запас по тем временам. Доступ к памяти? Мельком — всего 1,2 микросекунды, будто щёлкнул пальцами.

Если не поняли, то речь о мини-компьютере, разработанным компанией Digital Equipment Corporation (DEC). Продаваемым по цене чуть меньше 20 000 долларов.

PDP-8. Источник.

PDP-8. Источник [12].

Восемь страниц по 128 слов обеспечивали простое деление памяти, а сама машина, несмотря на относительную компактность, могла выполнять до 385 тыс. сложений или до 340 тыс. делений в секунду. Размер — что-то около холодильника. Да-да, не шутка: первый вариант занимал столько, что его можно было запросто заметить в любом офисе. Зато за пару лет именно PDP-8 заставил инженеров делать корпусы меньше — появились и настольные модели. 

Инструкции были организованы так, что в ядре было всего три группы команд, среди которых — команды ввода/вывода и работы с памятью. Для ускорения операций умножения и деления выпускалась опциональная плата арифметического ускорителя. Благодаря поддержке языков высокого уровня (Фортран, FOCAL, DIBOL, макроассемблеры, Бейсик) и огромной базе утилит PDP-8 стал одной из самых популярных машин своего времени: за первую пятилетку было продано более 16 тыс. экземпляров (всего более 50 тыс. за историю), в том числе для вузов, НИИ, лабораторий.

С приходом интегральных схем компьютеры резко «усохли». Здесь ключевым моментом стала разработка Intel 4004 (1971) — первого коммерческого 4-битного процессора, объединившего на кристалле основные элементы управления. Вскоре вышли Intel 8008, 8080 и хрестоматийный 8086 (1978) — тот самый x86, который дал старт большинству архитектур персональных компьютеров. Первые PC, такие как Altair 8800 и Apple II, сразу стали востребованы энтузиастами и инженерами-интеграторами, поскольку стоимость компьютера наконец приблизилась к цене офисной техники. IBM PC (1981) окончательно стандартизировал платформу, отделив интерфейс пользователя от аппаратной части за счёт BIOS и модульных карт расширения.

Altair 8800. Источник.

Altair 8800. Источник [13].
Apple II. Источник.

Apple II. Источник [14].

Но всё это стало возможным только потому, что идеи Бэббиджа были доведены до практического воплощения: чёткое разделение функций — арифметико-логического устройства, памяти и устройства управления — стало ядром транзисторных и микропроцессорных дизайнов. Такая архитектура позволила не только увеличить производительность и сократить задержки передачи данных, но и практически мгновенно масштабировать системы, собирать из стандартных блоков компьютеры любой сложности. 

Каждый следующий этап миниатюризации ­— от транзисторов к LSI и VLSI — сопровождался совершенствованием принципов модульности и независимости вычислительных узлов. В результате архитектура фон Неймана — наследие Analytical Engine Бэббиджа — стала доминирующей и для микропроцессоров, и для серверных комплексов, и для современных встраиваемых систем, потому что именно модульность обеспечивает масштабируемость, автономность и надёжность вычислений в любой современной среде.

FPGA-революция и программируемая логика 

Что же такое FPGA, и почему про эту технологию сегодня говорят как про новую ступень в развитии вычислительной техники? 

FPGA (Field-Programmable Gate Array) — это вид программируемых логических интегральных схем, уникальность которых в том, что их логика настраивается пользователем напрямую после включения питания, а не задана жёстко изначально. Архитектурно ПЛИС построены из конфигурируемых логических блоков (CLB), каждый из которых содержит LUT (Look-Up Table) — таблицы поиска, позволяющие реализовывать произвольную логику, а также триггеры для хранения состояний. Эти блоки соединяются между собой посредством матрицы программируемых маршрутизируемых соединений, которые управляются конфигурационной памятью на базе SRAM. 

FPGA. Источник. 

FPGA. Источник [15]

Помимо базовой логики, современные ПЛИС’ы оснащены встроенными цифровыми сигнальными процессорами (DSP) для быстрого выполнения мат. операций, таких как умножение и свёртка, что очень важно для обработки сигналов и задач искусственного интеллекта [16], при этом FPGA обходит GPU по эффективности в задачах с предсказуемой, жёстко заданной схемой вычислений. DSP-модуль представляет собой набор аппаратных умножителей-аккумуляторов (MAC), часто снабжённых Pipelining и SIMD-шириной до 48 × 48 бит, что даёт гигаоперации умножений на каждый такт. Обработка радиосигналов, кодирование видео, радарные и медицинские приложения, а также с задачами inferencing и оптимизация нейросетей в режиме реального времени, это всё FPGA.

Если честно, последние этапы развития FPGA — это, по сути, соперничество между Xilinx и Intel. Xilinx сначала запустил серию Spartan — совсем простые и дешёвые платы, с минимальным набором логики. А Intel почти одновременно толкала свои Cyclone, которые по задачам были очень похожи.

А потом, где-то в середине 2010-х, всё серьёзно усложнилось: Xilinx выпустил Virtex UltraScale, а Intel — Stratix 10. Эти ребята уже с HBM-памятью встроенной, поддержкой PCIe четвёртого и пятого поколений и даже аппаратной трассировкой PCIe — без всяких задержек из-за микрокода.

Xilinx не остановился на достигнутом и выпустил платформу Versal ACAP — систему, где FPGA работает рядом с ARM-процессорами, а сверху добавлены аппаратные AI-ускорители для мощной обработки задач ИИ. 

Intel в ответ не отстала — выкатили свои FPGA с HBM-памятью (штука быстрая, прямо на кристалле) и замутили oneAPI — такую унифицированную среду, где можно и ресурсы подстраивать, и приложения писать, без беготни между разными тулчейнами. 

По сути, уже давно не делают просто программируемые логические элементы, а преобразуют FPGA в настоящие дата-центры прямо на кремнии — с полной поддержкой PCIe Gen4/Gen5, железной трассировкой PCIe и топовым ускорением AI.

Современные FPGA — объединяют гибридные процессорные ядра ARM (например, Cortex-A72), сетевые интерфейсы (PCIe Gen4, 100-600 Гбит/с Ethernet), высокопроизводительные блоки памяти (DDR4, HBM) и спец. вычислительные модули, включая модули для криптографии и радиочастотной обработки. А значит, с такой архитектурой и задержки минимальные в обмене данными и возможность менять производительность под конкретные задачи.

FPGA не только выжили в век ASIC и быстрых микропроцессоров, но и заняли особую нишу. А именно, если нужно быстро собрать и проверить новую плату или устройство, легко «перенастроить» в процессе, поправить что-то, докрутить. То есть, их гибкость и повторяемость конфигураций — именно то, что инженеры любят.

DIY-FPGA и будущее пользовательской логики

В последние годы на рынке появились доступные DIY-FPGA-платы, которые стали подарком для энтузиастов желающих иметь свой «Analytical Engine» — программируемый мини-ПК. 

Рассмотрим несколько популярных плат: 

TinyFPGA, Arty и Papilio. TinyFPGA BX, например, оснащена чипом ICE40LP8K, который обеспечивает 7680 логических элементов LUT, 128 Кбит встроенной блоковой памяти и 6000 Кбит пользовательской флеш-памяти, ещё тут есть USB интерфейс с загрузчиком и поддержке open-source инструментов.

TinyFPGA. Источник. 

TinyFPGA. Источник [15]

Arty базируется на мощном FPGA Xilinx Artix-7 XC7A35T с более чем 33 000 логических ячеек, 1800 Кб памяти и DSP-блоками, а также двойным Pmod-интерфейсом и разъёмом под Arduino UNO, по сути это значит, что к плате можно быстро накинуть кучу всякой периферии — например, датчиков или дисплеев, и пробовать разные идеи.

ArtyFPGA. Источник. 

ArtyFPGA. Источник [17]

Papilio основан на FPGA Spartan 6 и популярен среди тех, кто хочет экспериментировать с собственными цифровыми процессорами и системами на кристалле.

PapilioFPGA. Источник. 

PapilioFPGA. Источник [18]

Кроме аппаратных платформ, фокус внимания [19] упал на soft-CPU и SoC-конфигурациям, которые можно реализовать прямо в ПЛИС. Типо MicroBlaze от Xilinx и Nios II от Intel, а также активно набирающий популярность RISC-V, который идеально вписывается в FPGA-архитектуру из-за модульности и открытости. Эти ядра настраиваются, оптимизируются и комбинируются с периферией для создания готовых к использованию вычислительных платформ, позволяя экспериментировать с архитектурами, разрабатывать специализированные вычислительные узлы или полнофункциональные одноплатные компьютеры с адаптивным железом.

Будущее пользовательской логики связано с технологиями упаковки. Например, Co-Packaged Optics — это когда оптические интерфейсы «прячут» прямо внутри самого кристалла. Что сокращает задержки при обмене данными между вычислительными узлами и ускоряет систему.

Или все мы любим торт, так вот кроме сладкого, такими же слоями, только вертикально складываются чипы при 3D-упаковке. Больше функционала в меньшем объёме. И, наконец, «полевая» прошивка вычислительных ядер — возможность не только конфигурировать FPGA на уровне логики, но и настраивать или заменить процессорные блоки и специализированные ускорители после развёртывания — станет новым шагом в динамичном и гибком использовании вычислительных платформ, расширяя возможности создания универсальных, адаптивных и масштабируемых систем прям на месте их эксплуатации.

Воссоздай Babbage-Engine на FPGA

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

Difference Engine №2 созданный Майком Филдом (Mike Field) на Verilog. Его проект — это копирование механизмов Бэббиджа, реализованное строка за строкой кода, который описывает вычислительные блоки и логику машины. 

Код доступен на GitHub: можно скачать, скомпилировать и «запустить» эту историческую машину прямо на FPGA, а также посмотреть визуализацию её работы — это не просто механика под стеклом, а настоящая аппаратная реализация, работающая на уровне HDL. Автор также подготовил подробное видео с разбором работы проекта.

Вычислительная машина из деталей LEGO™. Источник.

Вычислительная машина из деталей LEGO™. Источник [20].

Существует также более игровой и творческий подход — объединить LEGO™ Mindstorms с TinyFPGA или похожими FPGA-платами. Представьте, что вы строите из LEGO™ механизм с движущимися зубчатыми колёсами, повторяющий работу машины Бэббиджа, а всю логику управления этим механизмом программируете на FPGA с использованием языков Verilog или VHDL.

Этот проект делится на этапы: сначала создаёте схемы на HDL, потом загружаете их на плату, а уже после запускаете механизм LEGO™, знакомитесь с цифровой логикой и буквально видите, как компьютер управляет механикой. Что-то для школьного или студенческого проекта.

А вы когда-нибудь задумывались, как бы выглядела машина Бэббиджа современном FPGA-проекте? Есть ли у вас ретро-устройства или необычные эксперименты с цифровой логикой? Делитесь своими историями, идеями и вопросами в комментариях — будет интересно обсудить!

© 2025 ООО «МТ ФИНАНС»

Автор: About_it

Источник [21]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/18147

URLs in this post:

[1] Источник: https://en.wikipedia.org/wiki/Difference_engine

[2] Источник: https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B7%D0%BD%D0%BE%D1%81%D1%82%D0%BD%D0%B0%D1%8F_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B0_%D0%A7%D0%B0%D1%80%D0%BB%D1%8C%D0%B7%D0%B0_%D0%91%D1%8D%D0%B1%D0%B1%D0%B8%D0%B4%D0%B6%D0%B0

[3] ошибки: http://www.braintools.ru/article/4192

[4] Источник: https://cronatec.ch/how-did-the-analytical-engine-work/

[5] памятью: http://www.braintools.ru/article/4140

[6] Источник: https://collection.sciencemuseumgroup.org.uk/objects/co62748/babbages-difference-engine-no-2-2002

[7] Источник: https://www.youtube.com/watch?v=Pw1lhHz0Iyg&pp=0gcJCdgAo7VqN5tD

[8] Источник: https://www.calend.ru/events/4801/

[9] логикой: http://www.braintools.ru/article/7640

[10] Источник: https://engineering-ru.livejournal.com/406961.html

[11] кремний.: https://habr.com/ru/companies/ruvds/articles/916982/

[12] Источник: https://www.pdp8online.com/

[13] Источник: https://www.boatanchor.ru/modules/publisher/item.php?itemid=14

[14] Источник: https://en.wikipedia.org/wiki/Apple_II

[15] Источник: https://www.latticesemi.com/en/What-is-an-FPGA

[16] интеллекта: http://www.braintools.ru/article/7605

[17] Источник: https://kamami.pl/en/xilinx-fpga-development-kits/572974-arty-a7-100-artix-7-fpga-development-kit.html

[18] Источник: https://learn.sparkfun.com/tutorials/programming-fpgas-papilio-pro/all

[19] внимания: http://www.braintools.ru/article/7595

[20] Источник: https://www.cs.princeton.edu/~chazelle/courses/BIB/BabbageEngine.html

[21] Источник: https://habr.com/ru/companies/ruvds/articles/934712/?utm_source=habrahabr&utm_medium=rss&utm_campaign=934712

www.BrainTools.ru

Rambler's Top100