A Short History of IT: From Loom to Neural Networks

Pasha Veinik

EN | RU
A Short History of IT: From Loom to Neural Networks

Раздел 1.3. Архитектура фон Неймана: Великое и Ужасное бутылочное горлышко

Если Тьюринг и Шеннон дали нам теорию, то события 1945 года дали нам «чертеж», по которому сегодня собраны ваш ноутбук, телефон и стиральная машина. Но этот чертеж был рожден в результате случайной встречи, великого предательства и компромисса, который мучает инженеров до сих пор.

Раздел 1.3. Архитектура фон Неймана: Великое и Ужасное бутылочное горлышко

1945 год. Вторая мировая война подходит к концу, но физики в Лос-Аламосе работают без выходных. Им нужно рассчитать имплозию (взрыв внутрь) для водородной бомбы. Вычисления чудовищно сложны.

В Пенсильвании уже работает ENIAC — первый электронный цифровой компьютер. Это зал размером со спортзал, заполненный шкафами с 18 000 вакуумных ламп. Он считает быстрее любого человека. Но у него есть фатальный недостаток.

Проблема ENIAC: Программы в нем не существуют виртуально. Программа — это буквально клубок проводов. Чтобы переключить компьютер с расчета таблицы стрельбы на расчет ядерного взрыва, команда инженеров тратит три недели. Они ползают внутри машины, перетыкая 6000 толстых кабелей в коммутационной панели. Это было Hard-wired programming. Компьютер был быстрым (электронным), но программист был медленным (механическим).

А. Случайная встреча и украденная слава

Марсианин из Будапешта

Джон фон Нейман был, пожалуй, самым умным человеком XX века. Коллеги-физики в шутку называли его и других венгерских эмигрантов «марсианами» — настолько их интеллект казался нечеловеческим.

Фон Нейман обладал эйдетической памятью. Он мог прочитать страницу телефонного справочника и воспроизвести её наизусть через год. Он внес фундаментальный вклад в квантовую механику, теорию игр, экономику и гидродинамику. В отличие от замкнутого Тьюринга, фон Нейман был светским львом. Он носил дорогие костюмы-тройки, устраивал шумные вечеринки, любил неприличные анекдоты и быструю езду (причем часто попадал в аварии, так как вычислял что-то в уме прямо за рулем).

Встреча на платформе

Летом 1944 года фон Нейман стоял на железнодорожной платформе в Абердине, ожидая поезда в Филадельфию. Там его случайно заметил Герман Голдстайн, офицер, курировавший секретный проект ENIAC.

Голдстайн, робея перед великим ученым, завел разговор. Фон Нейман слушал вежливо, но скучающе. Но как только Голдстайн упомянул, что они строят машину, способную выполнять 333 умножения в секунду, фон Нейман мгновенно преобразился. Ему нужны были эти мощности для Манхэттенского проекта.

Так самый блестящий теоретик эпохи присоединился к команде инженеров-практиков — Эккерта и Мокли.

«Первый проект отчета о EDVAC»

Инженеры Эккерт и Мокли уже понимали недостатки своего детища (ENIAC) и проектировали новую машину — EDVAC. У них были идеи, как хранить программу в памяти, но они мыслили как инженеры, погрязшие в паяльниках и схемах.

Фон Нейман сделал то, что умел лучше всего: он абстрагировался от «железа» и описал чистую логическую структуру. Во время долгих поездок на поезде он написал от руки документ на 101 страницу: «First Draft of a Report on the EDVAC».

Великая ссора

Голдстайн, восхищенный ясностью мысли фон Неймана, напечатал этот отчет и разослал его ученым в США и Британию. На обложке стояло только одно имя: Джон фон Нейман.

Для Эккерта и Мокли (настоящих создателей железа) это стало ударом ножа в спину.

  1. Потеря славы: Мир решил, что компьютер изобрел фон Нейман. Архитектуру стали называть «фон-неймановской».
  2. Потеря денег: Из-за публичной рассылки отчета технология стала Public Domain (общественным достоянием). Эккерт и Мокли не смогли её запатентовать и потеряли миллионы долларов.

Это разрушило их дружбу, но спасло индустрию. Архитектура компьютера стала открытым стандартом, а не собственностью одной фирмы.

Технический прорыв: Stored-Program Concept

В чем же была революция отчета? Фон Нейман разрушил стену между Данными и Кодом.

До этого считалось:

  • Числа (данные) лежат в памяти.
  • Инструкции (код) задаются проводами.

Фон Нейман сказал: «Код — это тоже данные». Для памяти нет разницы между числом 1945 (дата) и числом 10110 (команда «СЛОЖИТЬ»). И то, и другое — просто биты, лежащие в одной и той же оперативной памяти (RAM).

Это означало рождение Software в современном понимании:

  • Программу можно загрузить с перфокарты или магнитной ленты за секунды.
  • Программу можно редактировать как текстовый файл.
  • Программа может менять саму себя (компиляторы, вирусы, самообучающийся ИИ — все это следствие этой идеи).

Б. The Von Neumann Bottleneck (Бутылочное горлышко)

Архитектура фон Неймана победила. Она была простой, дешевой и универсальной. В ней было всего 5 компонентов:

  1. ALU (Арифметико-логическое устройство) — мозг.
  2. Control Unit (Управление) — дирижер.
  3. Memory (Память) — склад.
  4. Input (Ввод).
  5. Output (Вывод).

Но в этой схеме была заложена бомба замедленного действия. В 1977 году Джон Бэкус назвал её «Бутылочным горлышком фон Неймана».

Суть проблемы

В этой схеме Процессор и Память разделены физически. Они соединены каналом связи — Шиной (Bus). Шина всего одна. По ней едут и команды («что делать»), и данные («с чем делать»).

Чтобы сложить два числа, процессор должен совершить мучительный танец:

  1. Послать адрес в память: «Дай мне команду из ячейки 10». (Ждем).
  2. Команда едет по шине. (Ждем).
  3. Процессор читает: «Сложи число из ячейки 50 с числом из ячейки 51».
  4. Послать адрес: «Дай данные из ячейки 50». (Ждем).
  5. Данные едут. (Ждем).
  6. Послать адрес: «Дай данные из ячейки 51». (Ждем).
  7. ...

Результат: Процессор работает в миллионы раз быстрее, чем память. Но он вынужден 90% времени простаивать, ожидая, пока данные «проползут» через узкую шину.

Это как если бы у вас был повар, способный резать 100 морковок в секунду (Процессор), но холодильник (Память) находился в соседнем здании, и за каждой морковкой нужно было бы бегать отдельно через узкую дверь (Шина).

След в будущем: Борьба с горлышком

Вся современная история «железа» — это героическая (и дорогая) попытка обойти ограничение, заложенное в 1945 году.

  1. Кэши (L1, L2, L3): Инженеры начали встраивать маленькие кусочки сверхбыстрой памяти прямо внутрь процессора. Аналогия: Повар теперь носит фартук с карманами (Кэш), куда заранее кладет морковку, чтобы не бегать к холодильнику.
  2. Предсказание ветвлений (Branch Prediction): Процессор пытается угадать, какие данные понадобятся следующими, и загружает их заранее. Если угадал — выигрыш скорости. Если нет — сброс и тормоза. (Кстати, именно в этом механизме в 2018 году нашли уязвимости Spectre и Meltdown).
  3. Apple Silicon (M1/M2/M3): Что сделала Apple, совершив революцию в ноутбуках? Они отказались от классической компоновки. В чипах M1 оперативная память не стоит отдельно на плате. Она припаяна прямо к процессору (Unified Memory Architecture). Они физически устранили «поездку в соседнее здание». Данные находятся так близко к вычислительным ядрам, что «бутылочное горлышко» расширилось до размеров магистрали. Именно поэтому MacBook Air работает быстрее старых серверов.

Итог раздела: Джон фон Нейман подарил нам универсальность, но заставил платить за неё простоями. Мы живем в его архитектуре уже 80 лет, и только сейчас, с приходом нейроморфных чипов (имитирующих мозг) и квантовых компьютеров, мы начинаем робко выходить за её пределы.