Неймановская архитектура компьютера — это методика общего сохранения кодов команд и информационных данных в памяти электронной вычислительной машины.
Общие сведения
Базовые понятия об архитектуре электронных вычислительных машин были сформулированы фон Нейманом в 1944 году, когда он был привлечён к разработке проекта первого компьютера на ламповой основе ЭНИАК. При работе над этой машиной в Пенсильванском Университете фон Нейман участвовал в многочисленных дискуссиях со своими коллегами, в итоге которых появилась мысль о создании ЭВМ с более высокими характеристиками, названной EDVAC.
Далее работы по проектированию двух этих машин специалисты продолжали в параллельном режиме. В начале 1945 года основные моменты логического построения архитектуры ЭВМ были представлены в отчёте военному руководству спец. Лаборатории армии США, которая спонсировала эти работы. Отчёт был для внутреннего пользования, и там были изложены лишь наброски основных идей, но куратор проекта от армейского руководства распространил его среди широкого круга специалистов для рецензирования. Но поскольку на первом листе отчёта была только фамилия фон Неймана, то все, кто читал его, решили, что именно он автор документа и изложенных в нём положений.
В этом документе содержалось достаточное количество информации, которое позволяло любому специалисту, прочитавшему его, реализовать электронную вычислительную машину, аналогичную по принципам и архитектуре EDVAC. По этой причине в дальнейшем эта архитектура получила называние «архитектура фон Неймана».
В середине 1946 года фон Нейман, совместно с Голдстайном и Бёрксом, написал статью «Предварительное изучение логических построений электронного вычислительного устройства», где были подробно описаны основы конструктивного исполнения ЭВМ.
С того времени минуло уже более половины века, но изложенные в той работе идеи и основополагающие методы актуальны даже в наше время. В ней очень доказательно приведено обоснование применения бинарного кодирования, хотя до этого момента все вычислительные устройства работали с числами в десятичной системе счисления. Авторами статьи были наглядно представлены все достоинства двоичных кодов применительно к ЭВМ, показано насколько просто и удобно выполнять в них арифметические и логические действия. Впоследствии, в вычислительных системах начали использовать обработку всех информационных данных (не только чисел), но основным способом кодирования всё равно остались бинарные коды. Хотя следует отметить, что были машины, которые работали в троичной системе кодирования.
Троичная система, применительно к компьютерной технике, обладает некоторыми преимуществами по сравнению с двоичной, но есть у нее и ряд недостатков. Преимуществом, например, является повышение скорости выполнения операций (сложение осуществляется быстрее в 1,5 раза), недостатком считается усложнение конструкции компьютера при использовании троичных кодов.
Помимо двоичного кодирования, была ещё одна идея, которая по своей значимости близка к революционной. Этой идеей была методика «сохранённой программы». Изначально задавать программу надо было перемычками на специальной панели коммутаций. Эта процедура была достаточно трудоёмкой и отнимала большое количество времени. К примеру, чтобы поменять программу вычислительной машины ЭНИАК, необходимо было более одного дня, но при этом само выполнение программы продолжалось, как правило, несколько минут и затем останавливалось по причине неисправности одной из ламп, которых было несметное число. Но ведь возможно сохранить программу в двоичном коде в той же памяти, где хранятся информационные данные. Поскольку нет принципиальных различий между программными кодами и кодами данных, то это позволяет самой машине скомпоновать себе программное обеспечение по результатам предыдущих операций.
Присутствие полного комплекта команд и программных модулей стало отличительной особенностью вычислительных систем того времени. В современных устройствах такая структура используется, чтобы упростить конструкцию вычислительного аппарата. Примером могут служить простые калькуляторы, в которых изначально заложены все возможные команды. Они применимы для арифметических вычислений, но использовать их для других компьютерных целей практически не реально. Заменить внутреннюю программу работы таких аппаратов, возможно, только их абсолютной переделкой, что практически не представляется возможным. Но установка новых программ на ранние электронные вычислительные машины, тем не менее, производилась, но для этого требовался очень большой объём ручных работ по выпуску новых документов, изменению коммутации перемычек, перенастройке модулей и другой аппаратуры.
Ситуацию поменял принцип сохранения управляющих программ в совместной памяти. Когда он появился, применение архитектурных построений, которые основывались на комплектах выполняемых инструкций и описании процесса вычислений как выполнение этих инструкций, представленных в программе, очень существенно повысило вариативность ЭВМ в смысле переработки информации. Одинаковые методы в обработке данных и инструкций упростили задачи корректировки самих программ.
Принципы Неймана
Фон Нейман сформулировал следующие принципы:
- Однородность памяти. Информационные коды и коды команд не отличаются ничем при записи в одни области памяти. Отличить из возможно лишь по методике применения, что означает возможность использования записанных в ячейке памяти кодов, как в качестве данных, так и в качестве адреса или команды. Всё определяется способом обращения к этому коду. Такой подход даёт возможность выполнять над кодами команд такие же операции, как и над числовыми данными, что даёт много новых возможных действий. Например, если менять в цикле адресную часть команд, то это позволит обращаться последовательно к ряду данных в массиве.
- Адресный принцип. Структура памяти — это пронумерованные ячейки и процессору в любой момент времени доступны все.
- Программное управление. Любые вычислительные процессы должны иметь вид программы, которая состоит из ряда команд.