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

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

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

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

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

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

История

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

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

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

Возможности

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

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

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

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

Математик Алан Тьюринг, который был предупрежден о проблеме математической логики лекциями Макс Ньюман на Кембриджский университет, написал в 1936 году статью под названием О вычислимых числах с приложением к Entscheidungsproblem, который был опубликован в Труды Лондонского математического общества.[6] В нем он описал гипотетическую машину, которую назвал универсальная вычислительная машина, теперь известный как "Универсальная машина Тьюринга ". Гипотетическая машина имела бесконечное хранилище (память в сегодняшней терминологии), содержащее как инструкции, так и данные. Джон фон Нейман познакомился с Тьюрингом, когда он был приглашенным профессором в Кембридже в 1935 году, а также во время курса доктора философии Тьюринга в университете. Институт перспективных исследований в Принстон, Нью-Джерси в течение 1936 - 1937 гг. Неясно, знал ли он тогда о работе Тьюринга 1936 г.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Эволюция

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

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

Ограничения дизайна

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

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

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

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

Смягчения

Существует несколько известных методов устранения узких мест, связанных с производительностью фон Неймана. Например, все следующее может улучшить производительность[Зачем? ]:

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

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

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

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

Смотрите также

Рекомендации

  1. ^ а б c фон Нейман, Джон (1945), Первый проект отчета о EDVAC (PDF), заархивировано из оригинал (PDF) 14 марта 2013 г., получено 24 августа, 2011
  2. ^ Ганешан 2009
  3. ^ Маркграф, Джоуи Д. (2007), Узкое место фон Неймана, заархивировано из оригинал 12 декабря 2013 г.
  4. ^ Коупленд 2006, п. 104
  5. ^ MFTL (Мой любимый язык игрушек) запись Файл жаргона 4.4.7, получено 11 июля, 2008
  6. ^ Тьюринг, Алан М. (1936), "О вычислимых числах, в приложении к Entscheidungsproblem", Труды Лондонского математического общества, 2 (опубликовано в 1937 г.), 42, стр. 230–265, Дои:10.1112 / плмс / с2-42.1.230Тьюринг, Алан М. (1938), «О вычислимых числах в приложении к Entscheidungsproblem. Исправление», Труды Лондонского математического общества, 2 (опубликовано в 1937 г.), 43 (6), стр. 544–546, Дои:10.1112 / плмс / с2-43.6.544)
  7. ^ «Электронно-цифровые компьютеры», Природа, 162: 487, 25 сентября 1948 г., Дои:10.1038 / 162487a0, заархивировано из оригинал 6 апреля 2009 г., получено 10 апреля, 2009
  8. ^ Луков, Герман (1979). От Dits к Bits: личная история электронного компьютера. Портленд, Орегон, США: Robotics Press. ISBN  0-89661-002-0. LCCN  79-90567.
  9. ^ Администратор проекта ENIAC Грист Брейнерд в декабре 1943 года в отчете о ходе первого периода разработки ENIAC неявно предлагал концепцию хранимой программы (одновременно отвергая ее реализацию в ENIAC), заявляя, что «для того, чтобы иметь самый простой проект и не усложнять ситуацию, «ENIAC будет построен без какого-либо« автоматического регулирования ».
  10. ^ Коупленд 2006, п. 113
  11. ^ Коупленд, Джек (2000), Краткая история вычислительной техники: ENIAC и EDVAC, получено 27 января, 2010
  12. ^ Коупленд, Джек (2000), Краткая история вычислительной техники: ENIAC и EDVAC, получено 27 января, 2010 который цитирует Рэнделл, Брайан (1972), Meltzer, B .; Мичи, Д. (ред.), "Об Алане Тьюринге и происхождении цифровых компьютеров", Машинный интеллект, Эдинбург: Издательство Эдинбургского университета, 7: 10, ISBN  0-902383-26-4
  13. ^ Коупленд 2006, стр. 108–111
  14. ^ Боуден 1953, стр. 176,177
  15. ^ Боуден 1953, п. 135
  16. ^ «Электронный компьютерный проект». Институт перспективных исследований. Получено 26 мая, 2011.
  17. ^ а б Кэмпбелл-Келли, Мартин (апрель 1982 г.). «Развитие компьютерного программирования в Великобритании (1945-1955)». IEEE Annals of the History of Computing. 4 (2): 121–139. Дои:10.1109 / MAHC.1982.10016.
  18. ^ Робертсон, Джеймс Э. (1955), Техники дизайна Illiac, номер отчета UIUCDCS-R-1955-146, Лаборатория цифровых компьютеров, Университет Иллинойса в Урбана-Шампейн.
  19. ^ Электронный калькулятор выборочной последовательности (веб-сайт USPTO)
  20. ^ Электронный калькулятор выборочной последовательности (Google Patents)
  21. ^ Грош, Герберт Р. Дж. (1991), Компьютер: кусочки жизни, Книги третьего тысячелетия, ISBN  0-88733-085-1
  22. ^ Лавингтон, Саймон, изд. (2012). Алан Тьюринг и его современники: создание первых в мире компьютеров. Лондон: Британское компьютерное общество. п. 61. ISBN  9781906124908.
  23. ^ Джонсон, Роджер (апрель 2008 г.). «Школа компьютерных наук и информационных систем: краткая история» (PDF). Биркбек колледж. Лондонский университет. Получено 23 июля, 2017.
  24. ^ Белл, К. Гордон; Cady, R .; McFarland, H .; О'Лафлин, Дж .; Noonan, R .; Вульф, В. (1970), «Новая архитектура для мини-компьютеров - DEC PDP-11» (PDF), Весенняя совместная компьютерная конференция, стр. 657–675
  25. ^ Null, Линда; Лобур, Юлия (2010), Основы организации и архитектуры компьютера (3-е изд.), Джонс и Бартлетт Обучение, стр. 36, 199–203, ISBN  978-1-4496-0006-8
  26. ^ Бэкус, Джон В. «Можно ли вывести программирование из стиля фон Неймана? Функциональный стиль и его алгебра программ». Дои:10.1145/359576.359579. Цитировать журнал требует | журнал = (Помогите)
  27. ^ Дейкстра, Эдсгер В. "Архив Э. В. Дейкстры: обзор лекции о премии Тьюринга 1977 года". Получено 11 июля, 2008.
  28. ^ Бэкус, Джон (Август 1978 г.). «Можно ли вывести программирование из стиля фон Неймана? Функциональный стиль и его алгебра программ» (PDF). Коммуникации ACM. Vol. 21, № 8: 613–641. Получено 19 сентября, 2020 - через Карла Крари, Школа компьютерных наук, Университет Карнеги-Меллона.
  29. ^ Сайты, Ричард Л .; Патт, Йель. «Архитекторы смотрят в будущее». Отчет микропроцессора. 1996 г.

дальнейшее чтение

внешняя ссылка