Джон Фон- Нейман

Содержание 
 

Введение…………………………………………………………………………3

1. Подходы  к  архитектуре Фон- Неймана

1.1. Историческая справка...................................................          ............4

1.2.Осново-полагающия работа А.Беркса, Г.Голдстайна и Д.Неймана …...7

1.3. Основные компоненты машины……………………………………….…...9

2. Основные  принципы архитектуры Фон-Неймана

2.1. Принцип двоичного кодирования…………………………………..…...15

2.2.Принцип хранимой программы ……………………………………….....18

2.3.Принцип адресности……………………………………………………......24

Заключение  ………………………………………………………………………30

Список  использованной литературы и источников………………………….34 
 
 
 
 
 
 
 
 
 
 
 
 

 

      Введение 

     Практически каждый грамотный пользователь слышал, что современные компьютеры имеют фоннеймановскую архитектуру. Многие знают о том, что ее фундаментальные принципы были изложены еще в 1946 году в статье "Предварительное рассмотрение логической конструкции электронного вычислительного устройства" и применяются на практике до сих пор. Первое, что бросается в глаза -  это то огромное (в масштабах истории вычислительной техники) время, в течение которого принципы сохраняют свою актуальность. В самом деле, за данный период успело развиться и исчезнуть три поколения ЭВМ и расцвело четвертое; чуть ли не ежегодно мы узнаем об очередных "прорывах" в области компьютерных технологий; калейдоскопически мелькают модели процессоров и внешних устройств — и вдруг идеи 1946 года... Сразу же приходят на ум профессиональные педагогические мысли: а не тот ли это фундаментальный материал, который с такими ожесточенными спорами пытаются найти в самых разнообразных областях знаний для молодого и потому постоянно переписываемого учебного курса информатики?

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

    1. Историческая  справка
 

     Таблицу Менделеева создал Д.И. Менделеев. Теорию Дарвина развил Ч.Дарвин. Формулу  Эйнштейна написал А.ЭЙнштейн. Метод Рунге —- Кутты разработали математики К.Рунге, В.Кутта и некоторые другие. Закон Бойля — Мариотга первоначально экспериментально установил английский ученый Р.Бойль, а затем, независимо от него через 14 лет—французский аббат Э.Мариотт. Нетрудно догадаться, кому принадлежит формулировка принципа относительности Галилея. А принципы фон-неймановской архитектуры.., — нет-нет, давайте не будем спешить с выводами.

     Приоритет в вопросах разработки и построения первой вычислительной машины вообще дело тонкое. В 1973 году даже состоялось судебное заседание, на котором было признано, что изобретателем электронного вычислителя является Джон Атанасов, а не Джон Эккерт и Джон Моучли, реализовавшие широко известный проект ENIAC {Electronic Numerical Integrator And Computer), результатом которого явилось реально работавшее вычислительное устройство. Несмотря на столь представительное официальное решение, до сих пор далеко не все специалисты по истории науки согласны с такой точкой зрения. Высказываются, например, аргументы, что компьютер ABC (AtanasoffBerry Computer), разработанный Джоном Атанасовым и реализованный талантливым инженером Клиффордом Берри, не был завершен. Как писал в своем письме сам К.Берри, "основная вычислительная часть машины была закончена и работала более года, но от нее было мало толку без средств для хранения промежуточных результатов". Кроме того, ABC был узкоспециализированным устройством и предназначался исключительно для решения систем линейных уравнений методом Гаусса. Ситуация еще более усложняется тем, что Д.Моучли был лично знаком с Д.Атанасовым, видел его машину и документацию к ней.

     Отечественная ЭВМ "МЭСМ",1созданная под руководством выдающегося специалиста в области вычислительной техники С.А. Лебедева, тоже имела сходные принципы устройства. По имеющимся свидетельствам современников, С.А. Лебедеву в то время не были известны работы фон Неймана, так что он пришел к реализации этих принципов независимым образом.

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

     Джон  фон Нейман родился в Будапеште  в 1903 году в семье банкира. Уже в детстве он полюбил математику и постоянно стремился приспосабливать ее логику к окружающему миру. Позднее он говорил, что если люди не верят, что математика проста, то это только потому, что они не понимают, как сложна жизнь. Нейман получил прекрасное разностороннее образование: он в разные годы учился в высших учебных заведениях Будапешта, Берлина, Цюриха и Геттингена, слушая лекции известных профессоров (известно, в частности, что среди них был даже Альберт Эйнштейн). После завершения образования фон Нейман работал преподавателем и написал серию разнообразных научных статей, что сразу выдвинуло его в число ведущих математиков того времени. В 1930 году Д.Нейман переехал в Соединенные Штаты, где стал читать лекции в одном из самых престижных университетов США в Принстоне.

     Нейман  всегда отличался поразительной памятью и необыкновенными способностями к вычислениям в уме, это был совершенно неординарный и талантливый ученый.

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

     А далее вступил в действие Его  величество случай. На платформе, где Нейман ожидал поезда, к нему подошел Герман Голдстайн, математик и военный офицер, участник секретного проекта ENIAC. В разговоре с известным научным авторитетом Голдстайн упомянул о возможности выполнения 333 умножений в минуту с помощью машины. Стоит ли говорить, что это вызвало поток вопросов со стороны фон Неймана и что через некоторое время он стал высокопоставленным консультантом проекта.

     Описанные события произошли в 1944 году, когда  работы над вычислительной машиной ENIAC были уже в самом разгаре. Более того, полученный опыт показал имеющиеся в устройстве данной ЭВМ недостатки, и даже существовал усовершенствованный проект EDVAC (Electronic Discrete Variable A utomatk Computer). Ознакомившись с работой группы Д.Эккерта и Д.Моучли, Д.Нейман прекрасно понял значение компьютеров для научных исследований. В июне 1945 года он подготовил отчет, который назывался "Предварительный отчет о машине EDVAC", где описал устройство и логику работы будущего компьютера. Отчет предназначался для служебного пользования. Тем не менее Г.Голдстайн без ведома авторов проекта Моучли и Эккерта размножил доклад и разослал его многим ученым. В результате научный мир узнал об идеях устройства вычислительной машины из работы, написанной великим Джоном фон Нейманом. Как мы уже знаем, проект был засекречен, поэтому в тот момент никакой другой открытой информации о нем не было. В сочетании с огромным авторитетом Неймана это привело к тому, что вопрос о приоритете изложенного даже не возник.

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

    1. Осново-полагающая работа А.Беркса, Г.Голдстайна и Д.Неймана
 

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

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

     Тем не менее, ни в коем случае не стоит  из сказанного выше делать вывод о центральной роли ОЗУ в архитектуре ЭВМ: как отчетливо следует из дальнейшего изложения, ОЗУ работает под управлением специальных управляющих узлов (в современной терминологии это устройство управления УУ, т.е. составная часть процессора). Механизм обеспечения согласованной работы функциональных блоков ЭВМ рассматривается уже после того, как главные компоненты подробно рассмотрены.

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

     Приведем  несколько примеров. О преимуществах  использования двоичной системы счисления речь идет в связи с описанием "арифметического органа" (в оригинале использован термин "arithmetic organ"), которое является пятым, предпоследним, пунктом статьи. Тем не менее, в любой современной книге принцип двоичного кодирования всегда называется одним из первых. В этом отношении принципу хранимой программы, также обычно открывающему список фундаментальных признаков фоннеймановской архитектуры, повезло гораздо больше: поскольку он связан с хранением кодов программы в памяти вычислительного устройства, он обсуждается во втором пункте статьи (напомним, что первый посвящен обоснованию общего списка устройств). В то же время тесно связанный с данным принцип программного управления, описывающий механизм автоматического выполнения программы, следует искать в последнем разделе статьи, где речь идет об устройстве управления.

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

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

    1. Основные  компоненты машины
 

     Так как законченное устройство будет  универсальной вычислительной машиной, оно должно содержать несколько основных органов, таких, как орган арифметики, памяти, управления и связи с оператором. Мы хотим, чтобы машина была полностью автоматической, т.е. после начала вычислений работа машины не зависела от оператора.

     Именно  так называется самый первый пункт  статьи "Предварительное рассмотрение...", который, как уже говорилось в предыдущем разделе, фактически определяет ее структуру.

     Классика. Несмотря на принципиальную важность обсуждаемого раздела статьи, он очень короткий — всего пара страничек. Приятно поражают точность и логичность обоснования структуры ЭВМ. По правде говоря, перед нами тот самый случай, когда лучше классиков не скажешь. "Очевидно, что машина должна быть способна запоминать некоторым образом не только цифровую информацию, необходимую для данного вычисления..., но также и команды, управляющие программой, которая должна производить вычисления над этими числовыми данными. В специализированной вычислительной машине эти команды являются неотъемлемой частью устройства и составляют часть его конструкции. В универсальной машине должна быть возможность отдать приказ устройству произвести вообще любое вычисление... Следовательно, в машине должен быть некоторый орган, способный хранить эти приказы программы. Кроме того, должно быть устройство, которое может понимать эти команды и управлять их выполнением". "Выше мы в принципе указали на два различных вида памяти — память чисел и память приказов. Если, однако, приказы машине свести к числовому коду..., то орган памяти можно использовать для хранения как чисел, так и приказов". "Если память для приказов является просто органом памяти, то должен существовать еще орган, который может автоматически выполнять приказы, хранящиеся в памяти. Мы будем называть этот орган управлением".

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

     Таким образом, первые ЭВМ проектировались  из самых необходимых узлов, существование  которых является наиболее естественным и необходимым. Однако наиболее замечательным является то, что современные компьютеры сохранили такую же самую структуру. Давайте сравним приведенное выше описание со строением современных компьютеров. Итак, компьютеры, которыми мы сейчас пользуемся, состоят из следующих функциональных частей:

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

     Мы  видим, что, несмотря на активные поиски в области создания все новых и новых вычислительных машин, большинство компьютеров по-прежнему построено согласно классическим идеям, предложенным в середине XX века.

     Для дальнейшего сопоставления полезно  рассмотреть функциональную схему предложенной фон Нейманом ЭВМ. К сожалению, в явном виде она в статье не нарисована, хотя все сведения для ее построения в тексте имеются. На рис. 1 приведена такая схема:

     Рис.1

     

     

     Память  машины предполагалась состоящей из 4096 слов (ячеек), каждое из которых содержало по 40 бит. Для обозначения массива ячеек в оригинальной работе использован весьма специфический термин "селектрон" (selectron) — от англ. select, т.е. выбирать. Адреса ячеек представляли собой целые числа от 0 до 4095 = 2'2 - 1, и для их записи, как вы уже поняли из показателя степени, требуется 12 бит.

     В предлагаемой конструкции система  команд была одноадресной, так что в одну стандартную 40-разрядную ячейку вполне помещались две 20-битные команды. Каждая из них содержала 12-битный адрес информации и 6-битный код операции (потенциально возможно до 26 - 64 различных операций; реально требовалось значительно меньше ). Оставшиеся 2 бита просто не использовались.

     Внутри  арифметико-логического устройства находился специальный 40-разрядный регистр — аккумулятор, предназначенный для осуществления арифметических действий. Через этот же регистр производился обмен с внешними устройствами, что имело четкое обоснование: "поскольку уже существует канал передачи чисел между селектронами и аккумулятором, то аккумулятор может быть использован для передачи чисел с проволоки и на проволоку" (магнитная проволока — это носитель внешней памяти, прообраз будущих накопителей на магнитной ленте). Интересно, что Нейман отвергал арифметику с плавающей запятой, считая ее техническую реализацию слишком сложной, и еще потому, "что любой сведущий математик был способен держать плавающую запятую в голове»

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

     Некоторые подробности функционирования архитектуры, приведенной нa puc. 3.1, будут рассмотрены позднее.

     Развитие

     Что же изменилось за полвека? Прежде всего, обычно бросается в глаза совершенствование производственных технологий и как следствие — резкое уменьшение размеров и повышение быстродействия вычислительной техники. Но не менее важно и еще одно изменение, которое мы сейчас рассмотрим подробнее. Это совершенствование структуры ЭВМ и изменение принципов взаимодействия ее основных узлов. Начало названных изменений относится к третьему поколению ЭВМ.

     Как известно, появление третьего поколения  ЭВМ было обусловлено переходом от транзисторов к интегральным микросхемам. Значительные успехи в миниатюризации электронных схем не просто способствовали уменьшению размеров базовых функциональных узлов ЭВМ, но и создали предпосылки для заметного роста быстродействия процессора. Возникло существенное противоречие между высокой скоростью обработки информации внутри машины и медленной работой устройств ввода-вывода, в большинстве своем содержащих механически движущиеся части. Если бы процессор руководил работой внешних устройств по классической схеме (как описано выше), то значительную часть времени он был бы вынужден простаивать в ожидании информации "из внешнего мира", что существенно снижало бы эффективность работы всей ЭВМ в целом. Для решения этой проблемы возникла тенденция к освобождению центрального процессора от функций обмена информацией и к передаче их специальным электронным схемам управления работой внешних устройств.

     На  рис. 2 приведена функциональная схема одной из младших моделей серии "Ряд-2" [5]. По своей архитектуре и набору команд ЭВМ этой серии "были близки" к серии IBM/370 (серия "Ряд-1" — к 1ВМ/360). Центральными устройствами ЕС ЭВМ являются процессор и оперативная память. Они соединяются с остальными (периферийными) устройствами с помощью специальных каналов — мультиплексного для медленных устройств (типа перфокарточных или алфавитно-цифрового печатающего устройства АЦПУ) и нескольких селекторных, обслуживающих магнитные диски и ленты. "Мультиплексный и селекторный каналы представляли собой небольшие вычислительные машины, управляющие выполнением процедур ввода-вывода параллельно с работой центрального процессора" . Благодаря принципиально новой архитектуре данные теперь способны поступать в память без участия центрального процессора. Наличие автономно работающих интеллектуальных каналов ввода-вывода стало важной отличительной чертой машин третьего и в дальнейшем четвертого поколений.

       
 
 
 
 
 
 
 
 
 
 

     Рис.2. Название  

     Еще одной чертой, характерной для  внутренней структуры ЭВМ четвертого поколения, является то, что для связи между отдельными функциональными узлами появилось принципиально новое устройство — общая шина (часто ее называют магистралью). Работа такой архитектуры подробно описана в широко известном (самом первом) учебнике информатики. Отметим, что магистральная архитектура, как и рассмотренная выше архитектура ЕС ЭВМ, позволяет организовать поток данных от некоторых устройств в память, минуя центральный процессор. Такой режим называется прямым доступом к памяти и осуществляется под руководством специального контроллера ПДП. Важно подчеркнуть, что ПДП не является единственным способом ввода информации и даже возможен не для всех устройств (например, по своей сути он не может быть реализован для клавиатуры).

     Таким образом, хотя состав функциональных узлов, предложенный в "Предварительном рассмотрении..,", до сих пор сохранился, их связи и взаимодействие были существенным образом усовершенствованы. 

     2.1.Принцип двоичного кодирования 

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

         При создании механических счетных устройств использовались зубчатые колеса с десятью нарисованными цифрами, так что проблем с представлением чисел не возникало. Они начались при переходе к электронным вычислительным машинам. Дело в том, что создать электронное устройство с десятью состояниями гораздо сложнее, чем изготовить колесико с произвольным количеством зубчиков. И тем не менее первые ЭВМ для удобства человека все же были десятичными. В частности, ENIAC тоже "не использовал двоичную систему, упрощая работу операторов, читающих результаты сразу же, без преобразования из двоичных кодов".

     Классика

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

     "Элементарная  ячейка нашей памяти естественно  подходит для двоичной системы, так как мы не собираемся измерять уровни зарядов в отдельной точке селектрона, а довольствуемся различием двух состояний. Триггер тоже является чисто двоичным устройством. На магнитной проволоке или ленте и в акустических линиях задержки мы также ограничиваемся распознаванием наличия или отсутствия импульса или (при использовании несущей частоты) пачки импульсов или знака импульса".

     Еще раз внимательнее рассмотрим ситуацию с наглядностью представления чисел. Мы уже говорили, что двоичные числа, получаемые из нулей и единиц, оказываются очень длинными. В шестнадцатеричной системе эти же числа существенно (точнее говоря, в 4 раза) короче, зато необходимо уже 16 различных цифр. Очевидно, что чем короче представление числа, тем больше при этом должно использоваться различных цифр. Легко догадаться, что даже суперкороткое число в 60-ричной системе будет читаться с трудом, поскольку необходимо будет постоянно помнить значения и написание 60 различных цифр.

     Итак, при небольшом числе цифр в  системе счисления числа получаются слишком длинными, а если взять много цифр, то, несмотря на короткие результирующие числа, воспринимать их будет неудобно из-за чрезмерного разнообразия цифр. Очевидно, что должна существовать ''золотая середина". Интересно, где она?

     Сформулированная  проблема называется в математике экономичностью систем счисления. Под экономичностью системы счисления понимается "то количество чисел, которое можно записать в данной системе с помощью определенного числа цифр". Следуя предложенной  методике, возьмем небольшое фиксированное число цифр — 12 и посмотрим, сколько чисел удастся записать с их помощью в различных системах счисления. В двоичной системе, где есть только 2 различные цифры: 0 и 1, из 12 цифр получится 6 разрядов, что позволит представить 26 = 64 неповторяющихся числа. В троичной системе 12 цифр придется разбить на 4 разряда, но количество чисел будет больше: З4 = 81. Результаты для некоторых систем счисления представлены в таблице 1.

     Таб

     Назва 

     Основание системы  счисления (р) 2 3 4 6 12
     Разрядность числа =  12/р) 6 4 3 2 1
     Общее количество различных  чисел к) 26=64 34 = 81 43=64 62 =36 12'- 12
Джон Фон- Нейман