Опубликован: 08.11.2022 | Доступ: свободный | Студентов: 107 / 0 | Длительность: 06:05:00
Лекция 2:

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

< Лекция 1 || Лекция 2: 123 || Лекция 3 >

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

ПРИНЦИПЫ АРХИТЕКТУРЫ ФОН НЕЙМАНА

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

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

Большинство современных ЭВМ созданы на основе архитектуры фон Неймана, предложенной Джоном фон Нейманом и его коллегами из университета Принстона. Эта архитектура была создана для ЭВМ под названием EDVAC, разрабатываемого в рамках Манхэт-тенского проекта (проект по созданию атомной бомбы в США, осуществлялся в конце второй миро-вой войны). Отчет, описывающий основные принципы организации этого компьютера, был написан фон Нейманом в 1945 году и, с разрешения американских военных, разослан в основные ведущие мировые университеты. Этот отчёт оказал решающее влияние на развитие индустрии и исследований в компьютерной сфере. Ниже представлены основные принципы архитектуры фон Неймана.

  1. Программное управление работой ЭВМ.
  2. Принцип хранимой программы.
  3. Принцип адресуемости памяти.
  4. Использование двоичной системы исчисления.
  5. Иерархичность запоминающих устройств.
  6. Использование условных переходов.
  7. Детально рассмотрим эти принципы.

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

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

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

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

Один из пионеров вычислительной техники Чарльз Бэббидж пытался реализовать данный принцип ещё в XIX веке, но потерпел неудачу. Технологии XX века позволили успешно создать сложные программируемые устройства. Соответственно, для них стали разрабатываться специаль-ные "понятные" им языки (машинные языки), с помощью которых стало возможно выра-зить вычислительные алгоритмы.

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

Наличие оперативной памяти, в которой хранится как программа, так и её данные, была новаторской идеей. Например, компьютер Mark I представлял собой, фактически, мощный электромеханический калькулятор, снабжённый управляющим устройством. Исполняемая программа непосредственно считывалась с перфоленты, а не загружалась в оперативную память це-ликом перед запуском, то есть принцип хранимой программы архитектуры фон Неймана нарушался. Затраты на покомандное считывание сильно влияли на скорость исполнения программы. Однако на тот момент (40-х годы XX века) это всех устраивало: тот факт, что вычислительное устройство мож-но было программировать, а не подавать ему на вход каждую команду вручную, уже был значитель-ным шагом вперёд. Менее знаменитый современник компьютера Mark I, немецкий компьютер Z3, созданный и утерянный во время Второй мировой войны, был устроен аналогичном образом.

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

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

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

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

Именно использование двоичной системы позволил наладить индустриальное производ-ство ЭВМ. Дело в том, что поскольку в двоичной системе имеются только две цифры (0 и 1), поэто-му для их представления может быть использована любая физическая система c двумя стабильными состояниями. Например, триод и транзистор (открытое или закрытое состояния), триггер c двумя устойчивыми состояниями, импульсная схема (наличие или отсутствие электрического импульса) и т. п. Предпринимались попытки конструирования ЭВМ на основе других систем исчисления (например, троичной и десятичной), и были достигнуты интересные результаты. Но лишь для двоичной системы удалось создать электронные схемы, надёжные и недорогие при массовом производстве.

Этот принцип также не был очевидным. Альтернативой двоичной системе исчисления была в первую очередь традиционная десятичная система. Для неё существовало много средств, например, алгоритмы для арифмометров, широко использовавшихся в 40-50 годы XX века. Арифмо-метры - это небольшие механические вычислители, позволявшие выполнять 4 главных арифмети-ческих действия и помещавшиеся на письменном столе. Были также созданы, опубликованы и широко использовались таблицы значений функций и физических величин с достаточно высокой точностью в форме десятичных дробей и т.д.2Люди старшего поколения помнят таблицы Владимира Брадиса, в которых были собраны значения тригонометрических функций, логарифмов и прочие величины для использования в математических расчётах с точностью четыре знака после запятой. Таким образом, при переходе на двоичную систему требовалось преобразовать налаженные десятилетиями средства и процедуры расчётов, применяемые в большом количестве областей промышленности и науки.

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

Сначала сфокусируемся на долгосрочной и оперативной памяти.

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

  • механические магнитные диски (жесткие диски, которые часто называют "винчестерами"),
  • твердотельные накопители (SSD),
  • внешние запоминающие устройства - гибкие и оптические диски, твердотельная флэш-память, магнитные ленты.

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

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

Разделение памяти компьютера на оперативную и долгосрочную было одной из главных инноваций архитектуры фон Неймана. Однако в современных компьютерах иерархия памяти значи-тельно сложнее. Кратко рассмотрим следующие виды памяти:

  • регистры процессора,
  • кэш-память процессора,
  • внешние устройства памяти (дискеты, лазерные диски, флэш-карты),
  • память для хранения настроек компьютера.
< Лекция 1 || Лекция 2: 123 || Лекция 3 >
Наталья Ра
Наталья Ра

Здравствуйте! Когда появится возможность сдать экзамен на сертификат?