Архитектура фон Неймана - von Neumann architecture

редактировать
компьютерная архитектура, в которой код и данные имеют общую шину

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

Фон Архитектура Неймана - также известная как модель фон Неймана или архитектура Принстона - это компьютерная архитектура, основанная на описании 1945 года, сделанном Джоном фон Нойман и другие в Первом проекте Отчета о EDVAC. В этом документе описывается проектная архитектура электронного цифрового компьютера с такими компонентами:

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

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

Цифровой компьютер с хранимой программой хранит как программные инструкции, так и данные в чтении-записи, оперативной памяти (RAM). Компьютеры с хранимыми программами были продвижением по сравнению с компьютерами с программным управлением 1940-х годов, такими как Colossus и ENIAC. Они были запрограммированы путем установки переключателей и вставки соединительных кабелей для маршрутизации данных и сигналов управления между различными функциональными блоками. Подавляющее большинство современных компьютеров используют одну и ту же память как для данных, так и для программных инструкций, но имеют кеши между ЦП и памятью, а для кешей, ближайших к ЦП, имеют отдельные кеши для инструкций и данных. так что большинство команд и выборок данных используют отдельные шины (архитектура с разделенным кешем ).

Содержание

  • 1 История
  • 2 Возможности
  • 3 Развитие концепции хранимых программ
  • 4 Ранние компьютеры с архитектурой фон Неймана
  • 5 Ранние компьютеры с хранимыми программами
  • 6 Эволюция
  • 7 Ограничения конструкции
    • 7.1 Узкое место фон Неймана
      • 7.1.1 Меры по устранению
    • 7.2 Самомодифицирующийся код
  • 8 См. Также
  • 9 Ссылки
  • 10 Дополнительная литература
  • 11 Внешние ссылки

История

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

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

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

Возможности

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

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

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

Развитие концепции хранимой программы

Математик Алан Тьюринг, который был предупрежден о проблеме математической логики лекциями Макса Ньюмана в Кембриджском университете, в 1936 г. написал статью «О вычислимых числах с приложением к Entscheidungsproblem, которая была опубликована в Proceedings of the London Mathematical Society. В нем он описал гипотетическую машину, которую он назвал универсальной вычислительной машиной, теперь известной как «Универсальная машина Тьюринга ». Гипотетическая машина имела бесконечное хранилище (память в современной терминологии), содержащее как инструкции, так и данные. Джон фон Нейман познакомился с Тьюрингом, когда он был приглашенным профессором в Кембридже в 1935 году, а также во время курса доктора философии Тьюринга в Институте перспективных исследований в Принстоне, Нью-Джерси. в период с 1936 по 1937 год. Неясно, знал ли он тогда о работе Тьюринга 1936 года.

В 1936 году Конрад Цузе также ожидал в двух патентных заявках, что машинные инструкции могут храниться в том же хранилище, которое используется для данных.

Независимо, Дж. Преспер Эккерт и Джон Мочли, которые разрабатывали ENIAC в Школе электротехники Мура, в Университете Пенсильвании, писал о концепции хранимых программ в декабре 1943 года. Планируя новую машину, EDVAC, Эккерт писал в январе 1944 года, что они будут хранить данные и программы в новом адресуемом запоминающем устройстве, металлической ртути память линии задержки. Это был первый случай, когда была предложена конструкция практической машины с хранимой программой. В то время он и Мочли не знали о работе Тьюринга.

Фон Нейман участвовал в Манхэттенском проекте в Национальной лаборатории Лос-Аламоса, который требовал огромных вычислений. Это привлекло его к проекту ENIAC летом 1944 года. Там он присоединился к продолжающимся обсуждениям дизайна этого компьютера с хранимой программой, EDVAC. В составе этой группы он написал описание под названием «Первый проект отчета о EDVAC», основанное на работе Эккерта и Мочли. Оно было незаконченным, когда его коллега Герман Гольдстайн распространил его только с именем фон Неймана, к ужасу Эккерта и Мокли. Этот доклад был прочитан десятками коллег фон Неймана в Америке и Европе и оказал влияние на следующий виток компьютерных разработок.

Джек Коупленд считает, что "исторически неуместно называть электронные цифровые компьютеры с хранимой программой" машинами фон Неймана ". Его коллега из Лос-Аламоса Стэн Франкель сказал об уважении фон Неймана к идеям Тьюринга:

Я знаю, что примерно в 1943 или 1944 году фон Нейман хорошо осознавал фундаментальную важность статьи Тьюринга 1936 года... Фон Нойман познакомил меня с этой статьей, и по его настоянию я внимательно ее изучил. Многие люди провозглашали фон Неймана «отцом компьютера» (в современном понимании этого слова), но я уверен, что он никогда бы сам не совершил эту ошибку. Возможно, его вполне можно было бы назвать акушеркой, но он твердо подчеркнул для меня и других, я уверен, что основная концепция принадлежит Тьюрингу - в той мере, в какой это не предвосхищение Бэббиджа... И Тьюринг, и фон Нейман, конечно,, также внес существенный вклад в «приведение к практике» этих концепций, но я бы не считал их сопоставимыми по важности с введением и объяснением концепции компьютера, способного хранить в своей памяти свою программу действий и изменять ее. программа в ходе этих мероприятий.

В то время, когда был распространен «Первый проект» отчета, Тьюринг составлял отчет, озаглавленный «Предлагаемый электронный калькулятор». В нем подробно описывалась разработка и программирование, его идея машины, которую он назвал Automatic Computing Engine (ACE). Он представил это Исполнительному комитету Британской Национальной физической лаборатории 19 февраля 1946 года. Хотя Тьюринг знал из своего военного опыта в Блетчли-парке, что то, что он предложил, было осуществимо, секретность, окружавшая Колосса, которая впоследствии сохранялась в течение нескольких десятилетий, не позволила ему сказать это. Были произведены различные успешные реализации конструкции ACE.

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

Машина Института перспективных исследований, Принстон

В 1945 году профессор Дж. Фон Нейман, который тогда работал в инженерной школе Мура в Филадельфии, где ENIAC был построен, выпущен от имени группы его сотрудников, отчет о логическом проектировании цифровых компьютеров. Отчет содержал подробное предложение по конструкции машины, которая с тех пор стала известна как E.D.V.A.C. (электронный автомат с дискретными переменными). Эта машина была построена в Америке совсем недавно, но отчет фон Неймана вдохновил на создание E.D.S.A.C. (электронный автоматический калькулятор отложенного хранения) в Кембридже (см. стр. 130).

В 1947 году Беркс, Голдстайн и фон Нейман опубликовали еще один отчет, в котором описывалась конструкция другого типа машины (на этот раз параллельной машины), которая была бы чрезвычайно быстрой и способной, возможно, выполнять 20 000 операций в секунду. Они указали, что нерешенной проблемой при создании такой машины является разработка подходящей памяти с мгновенно доступным содержимым. Сначала они предложили использовать специальную вакуумную лампу, названную «Selectron », которую изобрели Принстонские лаборатории RCA. Эти лампы были дорогими и сложными в изготовлении, поэтому фон Нейман впоследствии решил построить машину на основе памяти Вильямса. Эта машина, построенная в июне 1952 года в Принстоне, стала широко известна как Маньяк. Дизайн этой машины вдохновил по крайней мере полдюжины машин, которые сейчас строятся в Америке, и все они известны как «Джоньяки».

В той же книге первые два абзаца главы, посвященной ACE, читаются следующим образом:

Автоматические вычисления в Национальной физической лаборатории

Один из самых современных цифровых компьютеров, который воплощает в себе разработки и усовершенствования техники Автоматические электронные вычисления были недавно продемонстрированы в Национальной физической лаборатории в Теддингтоне, где они были спроектированы и построены небольшой группой математиков и инженеров-исследователей электроники из сотрудников лаборатории при содействии ряда инженеров-технологов из English Electric Company, Ограниченное. Оборудование, установленное на данный момент в Лаборатории, является лишь пилотной моделью гораздо более крупной установки, которая будет известна как Автоматическая вычислительная машина, но, несмотря на сравнительно небольшие размеры и содержащую всего около 800 термоэмиссионных клапанов, как можно судить по Таблице XII, XIII и XIV, это чрезвычайно быстрая и универсальная вычислительная машина.

Основные концепции и абстрактные принципы машинных вычислений были сформулированы доктором А. М. Тьюрингом, F.R.S., в статье. читали в Лондонском математическом обществе в 1936 году, но работа над такими машинами в Великобритании была отложена из-за войны. В 1945 году, однако, исследование этих проблем было проведено в Национальной физической лаборатории г-ном Дж. Р. Уомерсли, в то время руководителем математического отдела лаборатории. К нему присоединился доктор Тьюринг и небольшой штат специалистов, и к 1947 году предварительное планирование было достаточно продвинуто, чтобы оправдать создание уже упомянутой специальной группы. В апреле 1948 года последний стал Отделом электроники лаборатории, которым руководил г-н Ф. М. Колбрук.

Ранние компьютеры с архитектурой фон Неймана

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

Ранние компьютеры с сохраненными программами

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

  • IBM SSEC обладал способностью обрабатывать инструкции как данные и был публично продемонстрирован 27 января 1948 года. Эта способность была заявлена ​​в патенте США. Однако он был частично электромеханическим, а не полностью электронным. На практике инструкции считывались с бумажной ленты из-за ее ограниченной памяти.
  • ARC2, разработанный Эндрю Бутом и Кэтлин Бут в Биркбек, Лондонский университет официально был введен в эксплуатацию 12 мая 1948 года. В нем было представлено первое запоминающее устройство с вращающимся барабаном .
  • Manchester Baby был первым полностью электронным компьютером, который работал сохраненная программа. 21 июня 1948 г. он запустил программу факторинга в течение 52 минут после выполнения программы простого деления и программы, показывающей, что два числа относительно простые.
  • ENIAC был изменен для работы как примитивный компьютер с хранимой программой только для чтения (с использованием функциональных таблиц для программы ROM ) и был продемонстрирован как таковой 16 сентября 1948 года, выполняя программу Адель Голдстайн для фон Неймана.
  • BINAC запускал несколько тестовых программ в феврале, марте и апреле 1949 г., но не был завершен до сентября 1949 г.
  • Manchester Mark 1 разработан на основе проекта Baby. Промежуточная версия Mark 1 была доступна для запуска программ в апреле 1949 года, но не была завершена до октября 1949 года.
  • EDSAC запустил свою первую программу 6 мая 1949 года.
  • EDVAC был доставлен в августе 1949 года, но у него были проблемы, которые не позволяли ввести его в регулярную эксплуатацию до 1951 года.
  • CSIR Mk I запустил свою первую программу в ноябре 1949 года.
  • SEAC был продемонстрирован в апреле 1950 года.
  • Pilot ACE запустил свою первую программу 10 мая, 1950 и был продемонстрирован в декабре 1950 года.
  • SWAC был завершен в июле 1950 года.
  • Whirlwind был завершен в декабре 1950 года и был Фактически использовался в апреле 1951 года.
  • Первый ERA Atlas (позже коммерческий ERA 1101 / UNIVAC 1101) был установлен в декабре 1950 года.

Evolution

Single системная шина эволюция архитектуры

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

Проектные ограничения

Узкое место фон Неймана

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

Узкое место фон Неймана было описано Джоном Бэкусом в его лекции 1977 года ACM Премии Тьюринга. Согласно Бэкусу:

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

Меры по устранению

Есть несколько известных методов для устранения узких мест, связанных с производительностью фон Неймана. Например, все следующее может повысить производительность:

Проблему также можно несколько обойти, используя параллельные вычисления, например, неравномерный доступ к памяти Архитектура (NUMA) - этот подход обычно используется суперкомпьютерами. Менее ясно, изменилось ли интеллектуальное узкое место, которое критиковал Бэкус, с 1977 года. Предлагаемое решение не оказало большого влияния. Современное функциональное программирование и объектно-ориентированное программирование гораздо меньше ориентировано на «перемещение огромного количества слов вперед и назад», чем предыдущие языки, такие как FORTRAN, но внутренне, этим по-прежнему занимаются компьютеры, даже суперкомпьютеры с высокой степенью параллелизма.

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

Самомодифицирующийся код

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

См. Также

Ссылки

Дополнительная литература

Внешние ссылки

На Викискладе есть материалы, связанные с архитектурой фон Неймана.
Последняя правка сделана 2021-06-18 05:27:13
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте