Архитектура фон Неймана

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Схематичное изображение машины фон Неймана

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

Именно фон Нейман заложил основы учения об архитектуре вычислительных машин, подключившись к созданию первой в мире ламповой ЭВМ ENIAC в 1944 году, когда ее конструкция была уже выбрана. В процессе работы, во время многочисленных дискуссий со своими коллегами Г.Голдстайном и А.Берксом, Джон фон Нейман высказал идею принципиально новой ЭВМ. В 1946 году ученые изложили свои принципы построения вычислительных машин в ставшей классической статье «Предварительное рассмотрение логической конструкции электронно-вычислительного устройства». С тех пор прошло более полувека, но выдвинутые в ней положения сохраняют свою актуальность и сегодня.

В статье убедительно обосновывается использование двоичной системы для представления чисел, в ведь ранее все вычислительные машины хранили обрабатываемые числа в десятичном виде. Авторы продемонстрировали преимущества двоичной системы для технической реализации, удобство и простоту выполнения в ней арифметических и логических операций. В дальнейшем ЭВМ стали обрабатывать и нечисловые виды информации – текстовую, графическую, звуковую и другие, но двоичное кодирование данных по-прежнему составляет информационную основу любого современного компьютера.

Помимо машин, работавших с двоичным кодом, существовали и существуют троичные машины. Троичные компьютеры имеют ряд преимуществ и недостатков перед двоичными. Среди преимуществ можно выделить быстродействие (операции сложения выполняются примерно в 1.5 раза быстрее), наличие двоичной и троичной логики. К недостатком - сложная реализация по сравнению с двоичными машинами. Но машины с троичной логикой имеют посредственное отношение к архитектуре фон Неймана.

Ошибочным так же является мнение, что машины с десятичной логикой совершеннее и быстрее двоичных. Десятичной логики не существует, в отличие от двоичной (алгебра Буля).

Еще одной революционной идеей, значение которой трудно переоценить, является предложенный фон Нейманом принцип «хранимой программы». Первоначально программа задавалась путем установки перемычек на специальной коммутационной панели. Это было весьма трудоемким занятием: например, для изменения программы машины ENIAC требовалось несколько дней, в то время как собственно расчет не мог продолжаться более нескольких минут – выходили из строя лампы, которых было огромное количество. Нейман первым догадался, что программа может также храниться в виде набора нулей и единиц, причем в той же самой памяти, что и обрабатываемые ею числа. Отсутствие принципиальной разницы между программой и данными дало возможность ЭВМ самой формировать для себя программу в соответствии с результатами вычислений.

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

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

Содержание

Принципы фон Неймана [править]

В 1946 году трое учёных[1][2] — Артур Бёркс (англ.), Герман Голдстайн и Джон фон Нейман — опубликовали статью «Предварительное рассмотрение логического конструирования электронного вычислительного устройства»[3][4]. В статье обосновывалось использование двоичной системы для представления данных в ЭВМ (преимущественно для технической реализации, простота выполнения арифметических и логических операций — до этого машины хранили данные в десятичном виде[5]), выдвигалась идея использования общей памяти для программы и данных. Имя фон Неймана было достаточно широко известно в науке того времени, что отодвинуло на второй план его соавторов, и данные идеи получили название «принципы фон Неймана».

Принцип однородности памяти 
Команды и данные хранятся в одной и той же памяти и внешне в памяти неразличимы. Распознать их можно только по способу использования. Это позволяет производить над командами те же операции, что и над числами, и, соответственно, открывает ряд возможностей. Так, циклически изменяя адресную часть команды, можно обеспечить обращение к последовательным элементам массива данных. Такой прием носит название модификации команд и с позиций современного программирования не приветствуется. Более полезным является другое следствие принципа однородности, когда команды одной программы могут быть получены как результат исполнения другой программы. Эта возможность лежит в основе трансляции — перевода текста программы с языка высокого уровня на язык конкретной вычислительной машины.
Принцип адресности 
Структурно основная память состоит из пронумерованных ячеек, причем процессору в произвольный момент доступна любая ячейка. Двоичные коды команд и данных разделяются на единицы информации, называемые словами, и хранятся в ячейках памяти, а для доступа к ним используются номера соответствующих ячеек — адреса.
Принцип программного управления 
Все вычисления, предусмотренные алгоритмом решения задачи, должны быть представлены в виде программы, состоящей из последовательности управляющих слов - команд. Каждая команда предписывает некоторую операцию из набора операций, реализуемых вычислительной машиной. Команды программы хранятся в последовательных ячейках памяти вычислительной машины и выполняются в естественной последовательности, то есть в порядке их положения в программе. При необходимости, с помощью специальных команд, эта последовательность может быть изменена. Решение об изменении порядка выполнения команд программы принимается либо на основании анализа результатов предшествующих вычислений, либо безусловно.
Принцип двоичного кодирования 
Согласно этому принципу, вся информация, как данные, так и команды, кодируются двоичными цифрами 0 и 1. Каждый тип информации представляется двоичной последовательностью и имеет свой формат. Последовательность битов в формате, имеющая определенный смысл, называется полем. В числовой информации обычно выделяют поле знака и поле значащих разрядов. В формате команды можно выделить два поля: поле кода операции и поле адресов.

Компьютеры, построенные на принципах фон Неймана [править]

В середине 1940-х проект компьютера, хранящего свои программы в общей памяти, был разработан в Институте Мура (англ.) в Пенсильванском Университете. Подход, описанный в этом документе, стал известен как архитектура фон Неймана, по имени единственного из названных авторов проекта Джона фон Неймана, хотя на самом деле авторство проекта было коллективным. Архитектура фон Неймана решала проблемы, свойственные компьютеру ENIAC, который создавался в то время, за счёт хранения программы компьютера в его собственной памяти. Информация о проекте стала доступна другим исследователям вскоре после того, как в 1946 году было объявлено о создании ENIAC. По плану предполагалось осуществить проект силами Муровской школы в машине EDVAC, однако до 1951 года EDVAC не был запущен из-за технических трудностей в создании надёжной компьютерной памяти и разногласий в группе разработчиков. Другие научно-исследовательские институты, получившие копии проекта, сумели решить эти проблемы гораздо раньше группы разработчиков из Муровской школы и реализовали их в собственных компьютерных системах. Первыми семью компьютерами, в которых были реализованы основные особенности архитектуры фон Неймана, были:

  1. прототип — Манчестерская малая экспериментальная машинаМанчестерский университет, Великобритания, 21 июня 1948 года;
  2. EDSACКембриджский университет, Великобритания, 6 мая 1949 года;
  3. Манчестерский Марк IМанчестерский университет, Великобритания, 1949 год;
  4. BINAC — США, апрель или август 1949 года;
  5. CSIR Mk 1 — Австралия, ноябрь 1949 года;
  6. SEAC — США, 9 мая 1950 года
  7. EDVAC — США, август 1949 года — фактически запущен в 1952 году;

Узкое место архитектуры фон Неймана [править]

Совместное использование шины для памяти программ и памяти данных приводит к узкому месту архитектуры фон Неймана, а именно ограничению пропускной способности между процессором и памятью по сравнению с объёмом памяти. Из-за того, что память программ и память данных не могут быть доступны в одно и то же время, пропускная способность является значительно меньшей, чем скорость, с которой процессор может работать. Это серьезно ограничивает эффективное быстродействие при использовании процессоров, необходимых для выполнения минимальной обработки на больших объёмах данных. Процессор постоянно вынужден ждать необходимых данных, которые будут переданы в память или из памяти. Так как скорость процессора и объём памяти увеличивались гораздо быстрее, чем пропускная способность между ними, узкое место стало большой проблемой, серьезность которой возрастает с каждым новым поколением процессоров[источник не указан 242 дня].

См. также [править]

Литература [править]

Примечания [править]

  1. Юрий Полунов. Автора!!! // PC Week/Russian Edition. — 2006. — № 20 (530).
  2. Cragon, H. G. Computer Architecture and Implementation. — Cambridge University Press, 2000. — P. 2. — 238 p. — ISBN 978-0-521-65168-4
  3. Burks A. W., Goldstine H. H., Neumann J. Preliminary Discussion of the Logical Design of an Electronic Computing Instrument. — Institute for Advanced Study, Princeton, N. J., July 1946.
  4. Смирнов А. Д. Архитектура вычислительных систем : Учебное пособие для вузов. — М.: Наука, 1990. — С. 104. — 320 с. — ISBN 5-02-013997-1
  5. Юрий Полунов. Электронная, универсальная… // PC Week/Russian Edition. — 2006. — № 13 (523).