🧠 COMPUTER SCIENCE

Машина фон Неймана: почему все компьютеры устроены одинаково

От смартфона до суперкомпьютера — внутри одна и та же схема, придуманная в 1945 году. Разбираем, что такое архитектура фон Неймана и почему мир так и не придумал ничего радикально иного.

Один документ 1945 года задал форму почти всем компьютерам, что вы видели в жизни.
Гениальность фон Неймана была в простоте: пусть программа лежит в той же памяти, что и данные. И всё стало возможно.

Документ без авторских прав

В 1945 году математик Джон фон Нейман написал черновик отчёта о проекте компьютера EDVAC. Документ разошёлся по рукам, на титуле стояло только его имя — и в историю схема вошла как архитектура фон Неймана, хотя над ней работала целая команда. Идея оказалась настолько удачной, что стала фактическим стандартом на десятилетия вперёд.

Главная идея: код — это тоже данные

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

Из чего она состоит

  • Память — единое хранилище, где вперемешку лежат код и данные.
  • Устройство управления — дирижёр: читает команды и решает, что делать дальше.
  • АЛУ (арифметико-логическое устройство) — считает: сложить, сравнить, сдвинуть.
  • Устройства ввода-вывода — связь с внешним миром: клавиатура, экран, диск.

Управление и АЛУ вместе образуют то, что мы зовём процессором. А всё общение между памятью и процессором идёт по шине — общему каналу передачи данных.

Цикл, который крутится миллиарды раз в секунду

Процессор живёт в простом ритме, который называют fetch–decode–execute:

  1. Выборка: достать из памяти очередную команду по адресу, на который указывает счётчик команд.
  2. Декодирование: понять, что это за команда.
  3. Исполнение: выполнить — сложить числа, записать в память, прыгнуть в другое место.

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

Бутылочное горлышко

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

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

Фон НейманГарвардская архитектура
Одна память на код и данныеРаздельная память для кода и данных
Гибкость, простотаСкорость, но жёсткость
ПК, ноутбуки, серверыМикроконтроллеры, DSP

Почему мы до сих пор здесь

За 80 лет придумали GPU, квантовые и нейроморфные чипы. Но базовый компьютер на вашем столе по сути всё та же машина фон Неймана: память, процессор, шина, цикл выборки команд. Иногда лучшая идея — та, которую почти не надо менять. Фон Нейман описал не конкретную машину, а форму, в которую с тех пор отливают почти всё цифровое.

#архитектура#история#память#процессор#фон Нейман