Принципы фон Неймана (Архитектура фон Неймана)
В 1946 году Д. фон Нейман, Г. Голдстайн и А. Беркс в своей совместной статье изложили новые принципы построения и функционирования ЭВМ. В последствие на основе этих принципов производились первые два поколения компьютеров. В более поздних поколениях происходили некоторые изменения, хотя принципы Неймана актуальны и сегодня.
По сути, Нейману удалось обобщить научные разработки и открытия многих других ученых и сформулировать на их основе принципиально новое.
Принципы фон Неймана
- Использование двоичной системы счисления в вычислительных машинах. Преимущество перед десятичной системой счисления заключается в том, что устройства можно делать достаточно простыми, арифметические и логические операции в двоичной системе счисления также выполняются достаточно просто.
- Программное управление ЭВМ. Работа ЭВМ контролируется программой, состоящей из набора команд. Команды выполняются последовательно друг за другом. Созданием машины с хранимой в памяти программой было положено начало тому, что мы сегодня называем программированием.
- Память компьютера используется не только для хранения данных, но и программ. При этом и команды программы и данные кодируются в двоичной системе счисления, т.е. их способ записи одинаков. Поэтому в определенных ситуациях над командами можно выполнять те же действия, что и над данными.
- Ячейки памяти ЭВМ имеют адреса, которые последовательно пронумерованы. В любой момент можно обратиться к любой ячейке памяти по ее адресу. Этот принцип открыл возможность использовать переменные в программировании.
- Возможность условного перехода в процессе выполнения программы. Не смотря на то, что команды выполняются последовательно, в программах можно реализовать возможность перехода к любому участку кода.
Самым главным следствием этих принципов можно назвать то, что теперь программа уже не была постоянной частью машины (как например, у калькулятора). Программу стало возможно легко изменить. А вот аппаратура, конечно же, остается неизменной, и очень простой.
Для сравнения, программа компьютера ENIAC (где не было хранимой в памяти программы) определялась специальными перемычками на панели. Чтобы перепрограммировать машину (установить перемычки по-другому) мог потребоваться далеко не один день. И хотя программы для современных компьютеров могут писаться годы, однако они работают на миллионах компьютеров после несколько минутной установки на жесткий диск.
Как работает машина фон Неймана
Машина фон Неймана состоит из запоминающего устройства (памяти) — ЗУ, арифметико-логического устройства — АЛУ, устройства управления – УУ, а также устройств ввода и вывода.
Программы и данные вводятся в память из устройства ввода через арифметико-логическое устройство. Все команды программы записываются в соседние ячейки памяти, а данные для обработки могут содержаться в произвольных ячейках. У любой программы последняя команда должна быть командой завершения работы.
Команда состоит из указания, какую операцию следует выполнить (из возможных операций на данном «железе») и адресов ячеек памяти, где хранятся данные, над которыми следует выполнить указанную операцию, а также адреса ячейки, куда следует записать результат (если его требуется сохранить в ЗУ).
Арифметико-логическое устройство выполняет указанные командами операции над указанными данными.
Из арифметико-логического устройства результаты выводятся в память или устройство вывода. Принципиальное различие между ЗУ и устройством вывода заключается в том, что в ЗУ данные хранятся в виде, удобном для обработки компьютером, а на устройства вывода (принтер, монитор и др.) поступают так, как удобно человеку.
УУ управляет всеми частями компьютера. От управляющего устройства на другие устройства поступают сигналы «что делать», а от других устройств УУ получает информацию об их состоянии.
Управляющее устройство содержит специальный регистр (ячейку), который называется «счетчик команд». После загрузки программы и данных в память в счетчик команд записывается адрес первой команды программы. УУ считывает из памяти содержимое ячейки памяти, адрес которой находится в счетчике команд, и помещает его в специальное устройство — «Регистр команд». УУ определяет операцию команды, «отмечает» в памяти данные, адреса которых указаны в команде, и контролирует выполнение команды. Операцию выполняет АЛУ или аппаратные средства компьютера.
В результате выполнения любой команды счетчик команд изменяется на единицу и, следовательно, указывает на следующую команду программы. Когда требуется выполнить команду, не следующую по порядку за текущей, а отстоящую от данной на какое-то количество адресов, то специальная команда перехода содержит адрес ячейки, куда требуется передать управление.
Какому принципу не соответствует архитектура фон Неймана? Как работает машина фон Неймана?
Сегодня трудно поверить, но компьютеры, без которых многие уже не могут представить свою жизнь, появились всего каких-то 70 лет назад. Одним из тех, кто сделал решающий вклад в их создание, был американский ученый Джон фон Нейман. Он предложил принципы, на которых и по сей день работает большинство ЭВМ. Рассмотрим, как работает машина фон Неймана.
Краткая биографическая справка
Янош Нейман родился в 1930 году в Будапеште, в очень состоятельной еврейской семье, которой впоследствии удалось получить дворянский титул. Он с детства отличался выдающимися способностями во всех областях. В 23 года Нейман уже защитил кандидатскую диссертацию в области экспериментальной физики и химии. В 1930-м молодого ученого пригласили на работу в США, в Принстонский университет. Одновременно с этим Нейман стал одним из первых сотрудников Института перспективных исследований, где проработал профессором до конца жизни. Научные интересы Неймана были довольно обширны. В частности, он является одним из создателей матаппарата квантовой механики и концепции клеточных автоматов.
Вклад в информатику
Прежде чем выяснить, какому принципу не соответствует архитектура фон Неймана, будет интересно узнать о том, как ученый пришел к идее создания вычислительной машины современного типа.
Будучи экспертом в области математики взрывов и ударных волн, в начале 1940-х фон Нейман являлся научным консультантом в одной из лабораторий Управления боеприпасов Армии Соединенных Штатов. Осенью 1943 года он прибыл в Лос-Аламос для участия в разработке Манхеттэнского проекта по личному приглашению его руководителя Роберта Оппенгеймера. Перед ним была поставлена задача рассчитать силу имплозийного сжатия заряда атомной бомбы до критической массы. Для ее решения требовались большие вычисления, которые на первых порах осуществлялись на ручных калькуляторах, а позже на механических табуляторах фирмы IBM, с использованием перфокарт.
Фон Нейман познакомился с информацией о ходе создания электронно-механических и полностью электронных компьютеров. Вскоре его привлекли к разработке компьютеров EDVAC и ENIAC, в результате чего он начал писать работу «Первый проект отчета о EDVAC», оставшуюся неоконченной, в которой представил научному сообществу совершенно новую идею о том, какой должна быть компьютерная архитектура.
Принципы фон Неймана
Информатика как наука к 1945 году зашла в тупик, так как все вычислительные машины хранили в своей памяти обрабатываемые числа в 10-м виде, а программы для совершения операций задавались посредством установки перемычек на коммутационной панели.
Это значительно ограничивало возможности компьютеров. Настоящим прорывом стали принципы фон Неймана. Кратко их можно выразить одним предложением: переход к двоичной системе счисления и принцип хранимой программы.
Анализ
Рассмотрим, на каких принципах основана классическая структура машины фон Неймана, более подробно:
1. Переход к двоичной системе от десятиричной
Этот принцип неймановской архитектуры позволяет использовать достаточно простые логические устройства.
2. Программное управление электронной вычислительной машиной
Работа ЭВМ контролируется набором команд, выполняемых последовательно друг за другом. Разработка первых машины с программой, хранимой в памяти, положила начало современному программированию.
3. Данные и программы в памяти компьютера хранятся совместно
При этом и данные, и команды программы имеют одинаковый способ записи в двоичной системе счисления, поэтому в определенных ситуациях над ними возможно выполнение тех же действий, что и над данными.
Следствия
Кроме того, архитектура Фоннеймановской машины обладает следующими особенностями:
1. Ячейки памяти имеют адреса, которые пронумерованы последовательно
Благодаря применению этого принципа стало возможным использование переменных в программировании. В частности, в любой момент можно обратиться к той или иной ячейке памяти по ее адресу.
2. Возможность условного перехода в ходе выполнения программы
Как уже было сказано, команды в программах должны выполняться последовательно. Однако предусмотрена возможность совершить переход к любому участку кода.
Как работает машина фон Неймана
Такая математическая модель состоит из запоминающего (ЗУ), арифметико-логического устройства (АЛУ), управляющего, а также устройств ввода и вывода. Все команды программы записываются в ячейках памяти, расположенных по соседству, а данные для их обработки — в произвольных ячейках.
Любая команда должна состоять из:
- указания, какая операция должна быть выполнена;
- адресов ячеек памяти, в которых хранятся исходные данные, затрагиваемые указанной операцией;
- адресов ячеек, в которые следует записать результат.
Указанные командами операции над конкретными исходными данными выполняются АЛУ, а результаты записываются в ячейках памяти, т. е. сохраняются в виде, удобном для последующей машинной обработки, либо передаются на устройство вывода (монитор, принтер и пр.) и становятся доступны человеку.
УУ управляет всеми частями ЭВМ. От него на остальные устройства поступают сигналы-приказы «что делать», а от других устройств оно получает информацию о то, в каком состоянии они находятся.
У управляющего устройства есть специальный регистр, называемый «счетчиком команд» СК. После загрузки исходных данных и программы в память, СК записывается адрес ее 1-й команды. УУ считывает из памяти ЭВМ содержимое ячейки, адрес которой находится в СК, и помещает его в «Регистр команд». Управляющее устройство определяет операцию, соответствующую конкретной команде, и «отмечает» в памяти компьютера данные, адреса которых в ней указаны. Далее АЛУ или аппаратные средства ЭВМ приступают к выполнению операции, по завершении которой содержимое СК изменяется на единицу, т. е. указывает на следующую команду.
Критика
Недостатки и современные перспективы архитектуры фон Неймана продолжают оставаться предметом дискуссий. То, что машины, созданные на принципах, выдвинутых этим выдающимся ученым, не совершенны, было замечено еще очень давно.
Поэтому в экзаменационных билетах по информатике нередко можно встретить вопрос «какому принципу не соответствует архитектура фон Неймана и какие недостатки у нее есть».
При ответе на его вторую часть обязательно следует указать:
- на наличие семантического разрыва между языками программирования высокого уровня и системой команд;
- на проблему согласования ОП и пропускной способности процессора;
- на намечающийся кризис программного обеспечения, вызванный тем, что расходы на его создание являются намного ниже стоимости разработки аппаратных средств, и нет возможности полного тестирования программы;
- отсутствие перспектив с точки зрения быстродействия, так как уже достигнут его теоретический предел.
Что касается того, какому принципу не соответствует архитектура фон Неймана, то речь идет о параллельности организации большого числа потоков данных и команд, свойственной многопроцессорной архитектуре.
Заключение
Теперь вам известно, какому принципу не соответствует архитектура фон Неймана. Очевидно, что наука и технологии не стоят на месте, и, возможно, очень скоро в каждом доме появятся компьютеры совершенно нового типа, благодаря которым человечество выйдет на новый уровень своего развития. Кстати, подготовиться к экзамену поможет программа-тренажер «Архитектура фон Неймана». Такие цифровые образовательные ресурсы облегчают усвоение материала и дают возможность оценить свои знания.
Архитектура фон Неймана: история возникновения термина
Архитектура машины фон Неймана, также известная как модель фон Неймана, или Принстонская архитектура, основана на методике, описанной в 1945 году математиком и физиком Джоном фон Нейманом в рамках доклада «Первый проект» о вычислительной машине EDVAC.
Схема архитектуры
В докладе фон Неймана описывалась схема архитектуры для электронной цифровой вычислительной машины с частями, состоящими из блоков обработки, которая содержит:
- арифметико-логическое устройство;
- процессор регистров;
- блок управления, содержащий регистр команд и счетчик команд;
- запоминающее устройство для хранения данных;
- внешнее запоминающее устройство;
- входные и выходные механизмы.
Смысл разработки состоял в том, чтобы любая хранимая на компьютере информация могла использоваться программой, в которой выбранные данные операции не могут воспроизводиться одновременно, потому что они разделяют общую шину. Это упоминается в «Первом проекте», который описывает мысли ученого о том, какой должна быть архитектура. Фон Нейман называл такую ситуацию «узким местом», которое часто ограничивает производительность системы.
Принципы архитектуры фон Неймана
Цифровой компьютер – это ЭВМ, хранящая программу, которая содержит программные инструкции, данные для чтения, записи, а также включает в себя память с произвольным доступом (RAM). Принципы архитектуры Джона фон Неймана изложены также в его труде «Первый проект». Согласно ему, компьютеры с хранимой в памяти программой были усовершенствованием по сравнению с управлением компьютеров, таких как ENIAC. Последний был запрограммирован с помощью установки переключателей и вставки патча, приводящего к маршрутизации данных и сигналам управления между различными функциональными блоками. В подавляющем большинстве современных компьютеров память также используется подобным образом. При этом архитектура ЭВМ фон Неймана отличается, например, от Гарвардской, тем, что она использует не основную, а кэш-память.
Предыстория
Первые вычислительные машины имели заданные фиксированные программы. Некоторые очень простые компьютеры до сих пор используют эту конструкцию либо для простоты, либо в учебных целях. Например, настольный калькулятор также является ЭВМ с фиксированной программой. Он может работать с основами математики, но он не может быть использован как текстовый процессор или игровая консоль. Изменение фиксированной программы машины требует перемонтажа, реструктуризации или реорганизации аппарата. Самые ранние компьютеры не были настолько узконаправленными, так как они были разработаны впервые и в научных целях. Перепрограммирование появилось гораздо позже, и это был трудоемкий процесс, начиная с блок-схем и бумажных купюр и заканчивая подробными техническими проектами. Особенно трудным был процесс физической модернизации каналов восстановления машины. Может занять три недели установка программы на ENIAC и попытки заставить ее работать.
Новая идея
С предложением компьютера, хранящего программы в памяти, все изменилось. Хранимые в памяти, они являются конструкцией с набором инструкций. А значит, машина может сразу получить набор команд, чтобы произвести вычисления.
Конструкция таких программ относится к самомодифицирующимся кодам. Одной из первых установок для такого объекта была необходимость в алгоритме для увеличения или иным образом изменения адресной части команд. Он делался вручную в ранних конструкциях. Это стало менее важным, когда индексные регистры и косвенная адресация стали обычными характеристиками, которыми обладает архитектура ЭВМ Джона фон Неймана машины. Другое использование — вставлять часто используемые данные в потоке команды с помощью немедленного решения. Но самомодифицирующийся код в значительной степени подвергся критике, поскольку его, как правило, трудно понять и отладить. Кроме того, он оказался также неэффективным в плане воспроизведения и кэширования схем современных процессоров.
По большому счету, способность относиться к инструкции как к данным — это то, что делает ассемблеры, компиляторы, сборщики, погрузчики и другие инструменты с возможными объектами автоматизированного программирования. Так сказать, писать программы, которые пишут программы. В меньшем масштабе повторяющиеся интенсивные операции ввода и вывода, такие как BitBlt-манипуляции с изображением примитивных или пиксельных и вершинных шейдеров в современной 3D-графике, были признаны неэффективными для работы без пользовательского оборудования.
Разработка концепции хранимой в памяти программы
Математик Алан Тьюринг, который испытывал интерес к проблеме математической логики после лекции Макса Ньюмана в Кембриджском университете, написал статью в 1936 году, она была опубликована в издании Лондонского математического общества. В ней он описал гипотетическую машину, которую назвал «универсальной вычислительной машиной», и которая теперь известна как универсальная машина Тьюринга. Она имела бесконечное хранилище (в современной терминологии — память), которое содержало как инструкции, так и данные, для чего и создавалась данная архитектура. Фон Нейман познакомился с Тьюрингом в то время, когда он был приглашенным профессором в Кембридже в 1935 году, а также в ходе защиты докторской диссертации Тьюринга в Институте перспективных исследований в Принстоне (штат Нью-Джерси) в 1936-1937 годах.
Независимо друг от друга Джи Преспер Эккерт и Джон Мочли, которые разрабатывали ENIAC в школе электротехники в Университете штата Пенсильвания, писали о концепции машины, хранящей программу в памяти в декабре 1943 года. При планировании новой машины, EDVAC, Эккерт писал в январе 1944 года, что она будут хранить данные и программы в новом устройстве с адресацией памяти с помощью задержки металлической ртути. Это был первый раз, когда было предложено строительство на практике машины, хранящей программу в памяти. В то же время он и Мочли не были осведомлены о работе Тьюринга (фото ниже).
Архитектура компьютера: принцип фон Неймана
Фон Нейман был вовлечен в «Проект Манхэттен» в Национальной лаборатории в Лос-Аламосе, который требовал огромного количества вычислений. Это привлекло его к проекту ENIAC летом 1944 года. Там он вступил в дискуссии по разработке компьютера EDVAC. В рамках этой группы он написал работу под названием «Первый проект доклада о EDVAC», основанную на работе Эккерта и Мочли. Она была незавершенной, когда его коллега Гольдштейн распространил проект с именем фон Неймана (к слову, Эккерт и Мочли были ошарашены такой новостью). Этот документ был прочитан десятками коллег фон Неймана в Америке и Европе и оказал серьезное влияние на следующий этап компьютерных разработок.
Основные принципы архитектуры фон Неймана, изложенные в «Первом проекте», набирали широкую известность, в то время как Тьюринг освещал свой доклад об электронном калькуляторе, который был подробно описан в технике и программировании. В нем было изложено и представление автора о машине, которая называлась Automatic Computing Engine (ACE). Он представил его исполнительному комитету британской Национальной физической лаборатории в 1946 году. Спустя некоторое время даже были произведены различные успешные реализации конструкции ACE.
Начало реализации проектов
И проект фон Неймана, и документы Тьюринга описывали компьютеры, хранящие в памяти определенную программу, но статья фон Неймана достигла большей циркуляции в обществе, и компьютерная архитектура стала известна как архитектура Джона фон Неймана.
В 1945 году профессор Нейман, который тогда работал в инженерной школе в Филадельфии, где и был построен первый ENIAC, выпустил от имени группы своих коллег доклад о логическом проектировании цифровых вычислительных машин. В докладе содержится довольно подробное предложение по конструкции машины, которая с тех пор стала известна как EDVAC. Она тогда только недавно была создана в Америке, но доклад вдохновил фон Неймана на создание EDSAC.
Maniacs и Joniacs
В 1947 году Беркс, Гольдштейн и фон Нейман опубликовали еще один доклад, в котором освещалась конструкция другого типа машины (на этот раз параллельная), которая должна была стать чрезвычайно быстрой, способной, возможно, осуществлять до 20 000 операций в секунду. Они отметили, что нерешенной проблемой при построении ее была разработка подходящей памяти, все содержимое которой должно быть мгновенно доступно. Сначала они предложили использовать специальную вакуумную трубку, называемую Selectron, которая была изобретена в Принстонской лаборатории. Такие трубки были дорогими, и сделать их очень трудно, особенно если используется данная архитектура. Фон Нейман впоследствии решил построить машину, основанную на памяти Williams. Эта машина, которая была завершена в июне 1952 года в Принстоне, стала широко известна MANIAC (или просто Maniacs). Ее дизайн вдохновил создателей на конструирование полудюжины или более аналогичных приборов, которые сейчас строятся в Америке и называются шуточно Johniacs.
Принципы создания
Один из самых современных цифровых компьютеров, воплощавших разработки и усовершенствования в технике автоматического электронного вычисления, был продемонстрирован в Национальной физической лаборатории в Теддингтоне, где он был спроектирован и построен небольшой группой математиков, электронщиков и инженеров-исследователей, при содействии ряда производственных инженеров из английской Electric Company Ltd. Оборудование до сих пор находится в лаборатории, но только как опытный образец гораздо большей установки, которая известна как Automatic Computing Engine. Но, несмотря на сравнительно небольшую массу и содержание только 800 термоионных клапанов, он является чрезвычайно быстрой и универсальной счетной машиной.
Основные понятия и абстрактные принципы расчета с помощью машины были сформулированы доктором Тьюрингом на базе все того же Лондонского математического общества еще в 1936 году, но работа над такими машинами в Великобритании была задержана войной. В 1945 году рассмотрение проблем создания таких устройств продолжилось в Национальной физической лаборатории доктором Вормсли, суперинтендантом лаборатории Отделения математики. Он присоединился к Тьюрингу со своим небольшим штатом специалистов, а к 1947 году предварительное планирование было достаточно продвинуто, чтобы оправдать создание специальной группы.
Первые компьютеры на архитектуре фон Неймана
Первый проект описывает схему, которая была использована многими университетами и корпорациями, чтобы построить свои компьютеры. Среди них только ILLIAC и ORDVAC имели совместимые наборы инструкций.
Классическая архитектура фон Неймана была воплощена в Манчестерской малой экспериментальной машине (SSEM) по прозвищу Baby из университета Манчестера, которая совершила свой первый успешный запуск как устройство, хранящее программу в памяти, 21 июня 1948 года.
EDSAC из Кембриджского университета, первый практический электронный компьютер такого типа, был запущен первый раз успешно в мае 1949 года.
Развитие созданных моделей
IBM SSEC имел возможность рассматривать инструкции как данные и был публично продемонстрирован 27 января 1948 года. Эта способность утверждалась в патенте США. Однако это была частично электромеханическая машина, а не полностью электронная. На практике инструкции были прочитаны с бумажной ленты из-за его ограниченной памяти.
Baby был первым полностью электронным компьютером для запуска сохраненных программ. Он запускал программу факторинга в течение 52 минут 21 июня 1948 года после запуска простого вычисления деления и расчета, который показывает, что два числа являются взаимно простыми.
ENIAC был изменен, чтобы работать в качестве примитивной ЭВМ только для чтения, но по той же архитектуре, и был продемонстрирован 16 сентября 1948 года, а запуск программы Адель Гольдштейн организовала с помощью фон Неймана.
BINAC провел несколько тестовых программ в феврале, марте и апреле 1949 года, хотя и не был завершен до сентября 1949 года. Кроме того, осуществлялись тестовые запуски (некоторые успешные) других электронно-вычислительных машин, для которых свойственна данная архитектура. Фон Нейман, к слову, продолжал работу и над проектом «Манхеттен». Вот такой универсальный человек.
Эволюция шинной системы архитектуры
Через десятилетия, уже в 60-е и 70-е годы, компьютеры в целом стали меньше и быстрее, что привело к некоторым эволюциям, которые претерпела архитектура ЭВМ по фон Нейману. Например, отображение в памяти ввода и вывода позволяет соответствующим устройствам, данные и инструкции по интеграции в систему которых будут обрабатываться, оставаться в памяти. Одна шинная система может быть использована для обеспечения модульной системы с меньшими. Это иногда называют «рационализацией» архитектуры. В последующие десятилетия простые микроконтроллеры иногда не используют некоторые черты типичной модели, чтобы снизить стоимость и размер. А вот большие компьютеры следуют установленной архитектуре, так как в них добавлены функции для повышения производительности.