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

Автор: Пользователь скрыл имя, 22 Декабря 2011 в 21:02, курсовая работа

Краткое описание

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

Оглавление

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

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

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

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

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

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

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

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

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

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

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

Файлы: 1 файл

курсовая.doc

— 149.20 Кб (Скачать)
 

     Из  таблицы следует, что наиболее экономичной  оказывается троичная система (хотя двоичная уступает ей не очень сильно). С применением правил дифференцирования можно доказать, что максимум "функции экономичности" получается при р = е, где е = 2,718 — это основание натурального логарифма. Очевидно, что ближайшее целое число, которое можно использовать в качестве основания дня заинтересовавшей нас наиболее экономичной системы счисления, есть 3. Итак, мы с математической достоверностью показали, что с точки зрения параметра экономичности троичная система является наилучшей (в этом смысле она лучше двоичной!).

      Но это еще не все. Имеются и  другие свойства, по ко торым троичная система объективно лучше двоичной. Рассмотрим так называемую "троичную уравновешенную систему", в которой используются три цифры — 1, 0 и --1 (для последней принято использовать символ "1" со знаком надчеркивания сверху). Оказывается, в этой системе не требуется дополнительного двоичного разряда для хранения знака числа: он совпадает со значением старшего разряда. Более того, многие математические операции в этой системе выполняются проще, чем в двоичной. Как писал Николай Петрович Брусенцов, создатель первого в мире троичного компьютера,

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

     Подобные  особенности троичной системы не могли не привлечь внимания конструкторов. В 1958 году в нашей стране была построена модель машины, арифметика которой базировалась на базе троичной уравновешенной системы. Руководителем разработки был цитированный выше Н.П. Брусенцов. В 1962—1965 годах промышленным образом было выпущено более 50 экземпляров ЭВМ "Сетунь", получившей свое название в честь протекавшей неподалеку от университета подмосковной речки. В качестве базового троичного элемента в ЭВМ использовалась пара магнитных усилителей. По словам Н.П. Брусенцова, "троичные устройства получаются существенно более быстрыми и структурно более простыми, чем двоичные устройства, реализованные на тех же элементах". Естественно, троичные разряды назывались не битами, а тритами; машинное слово "Сетуни" состояло из 9 тритов.

     Говоря  о троичной ЭВМ, хочется особо  отметить, что математики задолго до появления ЭВМ предусмотрели не только булевскую логику для переменных с двумя значениями, но и трехзначную логику. Так что троичная машина не только способна выполнять арифметические, но и логические операции. Интересно, что трехзначная логика (со значениями правда, ложь и неизвестно) используется в СУБД "Access".

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

     Рис.3

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

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

     Классика

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

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

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

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

     Так неужели машина действительно не различает программу и данные? Как ни парадоксально, правильным будет отрицательный ответ! И вот в доказательство небольшой практический пример для IBM PC.

     Пусть в памяти в адресах 100 и 101 хранятся два байта с шестнадцатеричным содержимым 49 и 46.

     Если  считать, что это коды команд программы, то перед нами две вполне правдоподобные инструкции для процессора Intel — DEC CX и INC SI, выделенные на рисунке прямоугольной рамочкой. Но одновременно эти же данные и в этих же самых байтах могут расшифровываться как два числа, шестнадцатеричные значения которых, как уже указывалось ранее, 49 и 46. Кроме того, можно объединить эти два байта в единое целое число (поскольку тут есть некоторые технические тонкости, не будем здесь подсчитывать его конкретное значение). Наконец, можно трактовать их как два символа, и тогда при тех же самых условиях мы будем иметь дело с коротким словом IF. А как же на самом деле? Однозначного ответа не существует: каждый вариант возможен в зависимости от обстановки. 

 

      Развитие

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

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

     Завершая  разговор о хранении программы, рассмотрим, возможны ли альтернативные технические решения. Это не праздный вопрос, так как принцип хранимой программы, кроме подробно описанных выше достоинств, имеет и недостаток.

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

     Иногда  для преодоления указанного недостатка, а также по другим соображениям, память для команд и данных разделяют на два самостоятельных устройства, каждое из которых осуществляет информационный обмен по собственной шине. Подобную архитектуру принято называть гарвардской12, поскольку она появилась в 40-х годах XX века в университете Гарварда (Говард Айкен, машина "Марк III"). Такая альтернативная архитектура в целом не получила большого распространения, хотя в некоторых устройствах современной вычислительной техники она может использоваться. Например, кэш-память обычно реализуется раздельно для программы и данных, "поскольку сейчас широко используются процессоры с конвейерами, а при такой организации должна быть возможность одновременного доступа и к командам, и к их данным (операндам). Разделенная кэш-память позволяет осуществлять параллельный доступ, а общая — нет. К тому же, поскольку команды обычно не меняются во время выполнения, содержание командной кэш-памяти никогда не приходится записывать обратно в основную память". Тем не менее, основное ОЗУ по-прежнему содержит и команды, и данные вместе.

     Некоторое увеличение интереса к гарвардской  архитектуре связано в последнее время с развитием специализированных микросхем, работающих в режиме реального времени. К ним относятся цифровые процессоры обработки сигналов и микроконтроллеры, встраиваемые в различную аппаратуру — от стиральных машин до мобильных телефонов. Тем не менее, она оказалась востребованной не потому, что принципиально лучше классической фоннеймановской. Все дело в том, что в работающих в режиме реального времени процессорах огромное значение приобретает скорость исполнения команд. В такой ситуации две области памяти, каждая из которых работает через свою шину, существенно ускоряет исполнение инструкций процессора. В качестве подтверждения своих слов сошлюсь на ту же самую книгу, где сказано, что в некоторых процессорах (например, фирм Motorola и Lucent) память данных для ускорения обработки делится на части X и Y. Да и само разделение весьма относительно — например, в памяти программ большинства микрочипов можно хранить данные. Так что в описанном случае важно не столько выделение специальной памяти под программу, сколько создание нескольких независимых устройств ОЗУ, способных работать параллельно.

       Выводы

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

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

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

     Классика

     Как мы уже знаем, по предложениям фон  Неймана память электронного вычислительного устройства должна состоять из отдельных слов (words). Каждое слово имеет свой порядковый номер, по которому оно и ищется в ОЗУ. Этот номер в оригинальной статье имеет достаточно нестандартное и труднопереводимое название memory location-number. В русском переводе в "Кибернетическом сборнике", о котором говорилось во вводной части, использован перевод, близкий к дословному, — "число-позиция", правда, с немедленной оговоркой, что в современной терминологии это адрес. Гораздо более удачным и точным переводом термина будет (как с технической, так и с филологической точки зрения) все же "номер позиции" или "номер местоположения". Действительно, слова памяти пронумерованы, и, значит, каждому из них соответствует свой вполне определенный номер (конечно же числовой).

Информация о работе Джон Фон- Нейман