stringtranslate.com

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

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

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

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

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

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

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

История

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

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

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

Возможности

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

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

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

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

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

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

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

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

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

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

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

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

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

В 1945 году профессор Дж. фон Нейман, работавший тогда в Инженерной школе Мура в Филадельфии, где был построен ЭНИАК, опубликовал от имени группы своих сотрудников доклад о логическом проектировании цифровых компьютеров. . В отчете содержалось подробное предложение по конструкции машины, которая с тех пор стала известна как ЭДВАК (электронный дискретно-регулируемый автоматический компьютер). Эта машина только недавно была завершена в Америке, но отчет фон Неймана вдохновил на создание EDSAC (электронного автоматического калькулятора с задержкой памяти) в Кембридже (см. стр. 130).

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

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

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

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

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

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

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

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

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

Эволюция

Эволюция архитектуры единой системной шины

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

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

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

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

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

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

Смягчения

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

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

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

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

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

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

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

  1. ^ abc von Neumann, Джон (1945), Первый проект отчета о EDVAC (PDF) , заархивировано из оригинала (PDF) 14 марта 2013 г. , получено 24 августа 2011 г..
  2. ^ Ганесан 2009.
  3. ^ Маркграф, Джоуи Д. (2007), Узкое место фон Неймана, заархивировано из оригинала 12 декабря 2013 г..
  4. ^ Коупленд 2006, с. 104.
  5. ^ Запись MFTL (My Favorite Toy Language), жаргонный файл 4.4.7 , получено 11 июля 2008 г..
  6. ^ Тьюринг, Алан М. (1936), «О вычислимых числах с применением к проблеме Entscheidungs», Труды Лондонского математического общества , 2 (опубликовано в 1937 г.), том. 42, стр. 230–265, doi : 10.1112/plms/s2-42.1.230, S2CID  73712и Тьюринг, Алан М. (1938), «О вычислимых числах с применением к проблеме Entscheidungs. Исправление», Труды Лондонского математического общества , 2 (опубликовано в 1937 г.), том. 43, нет. 6, стр. 544–546, doi :10.1112/plms/s2-43.6.544..
  7. ^ Уильямс, ФК; Килберн, Т. (25 сентября 1948 г.), «Electronic Digital Computers», Nature , 162 (4117): 487, Бибкод : 1948Natur.162..487W, doi : 10.1038/162487a0 , S2CID  4110351, заархивировано из оригинала в апреле. 6, 2009 г. , получено 10 апреля 2009 г..
  8. ^ Луков, Герман (1979). От цифр к битам: личная история электронного компьютера . Портленд, Орегон: Robotics Press. ISBN 0-89661-002-0. LCCN  79-90567.
  9. ^ Администратор проекта ENIAC Грист Брейнерд в отчете о ходе работы за первый период разработки ENIAC за декабрь 1943 года неявно предлагал концепцию хранимой программы (одновременно отвергая ее реализацию в ENIAC), заявляя, что «чтобы иметь самый простой проект и не усложнять ситуацию «ЭНИАК будет построен без какого-либо «автоматического регулирования».
  10. ^ Коупленд 2006, с. 113.
  11. Коупленд, Джек (2000), Краткая история вычислений: ENIAC и EDVAC , получено 27 января 2010 г..
  12. Коупленд, Джек (2000), Краткая история вычислений: ENIAC и EDVAC , получено 27 января 2010 г.(работа, в которой цитируются Рэнделл, Брайан (1972), Мельцер, Б .; Мичи, Д. (ред.), «Об Алане Тьюринге и происхождении цифровых компьютеров», Machine Intelligence , Эдинбург: Edinburgh University Press , 7:10 ). , ISBN 0-902383-26-4.
  13. ^ Коупленд 2006, стр. 108–111.
  14. ^ Боуден 1953, стр. 176, 177.
  15. ^ Боуден 1953, с. 135.
  16. ^ «Проект «Электронный компьютер»». Институт перспективных исследований . 11 сентября 2009 года . Проверено 26 мая 2011 г.
  17. ^ аб Кэмпбелл-Келли, Мартин (апрель 1982 г.). «Развитие компьютерного программирования в Великобритании (1945–1955 гг.)». IEEE Анналы истории вычислений . 4 (2): 121–139. дои : 10.1109/MAHC.1982.10016. S2CID  14861159.
  18. ^ Робертсон, Джеймс Э. (1955), Illiac Design Techniques , номер отчета UIUCDCS-R-1955–146, Лаборатория цифровых компьютеров, Университет Иллинойса в Урбана-Шампейн.
  19. ^ Электронный калькулятор выборочной последовательности (веб-сайт USPTO) .
  20. ^ Электронный калькулятор выборочной последовательности (патенты Google) .
  21. ^ Грош, Герберт Р.Дж. (1991), Компьютер: фрагменты из жизни, Книги третьего тысячелетия, ISBN 0-88733-085-1.
  22. ^ Лавингтон, Саймон, изд. (2012). Алан Тьюринг и его современники: создание первых в мире компьютеров . Лондон: Британское компьютерное общество . п. 61. ИСБН 978-1906124908.
  23. ^ Джонсон, Роджер (апрель 2008 г.). «Школа компьютерных наук и информационных систем: краткая история» (PDF) . Биркбекский колледж . Лондонский университет . Проверено 23 июля 2017 г.
  24. ^ Белл, К. Гордон ; Кэди, Р.; МакФарланд, Х.; О'Лафлин, Дж.; Нунан, Р.; Вульф, В. (1970), «Новая архитектура для мини-компьютеров - DEC PDP-11» (PDF) , Весенняя совместная компьютерная конференция , стр. 657–675..
  25. ^ Нуль, Линда; Лобур, Джулия (2010), Основы компьютерной организации и архитектуры (3-е изд.), Jones & Bartlett Learning, стр. 36, 199–203, ISBN 978-1-4496-0006-8.
  26. ^ Бэкус, Джон В. «Можно ли программирование освободиться от стиля фон Неймана? Функциональный стиль и его алгебра программ». дои : 10.1145/359576.359579 . {{cite journal}}: Требуется цитировать журнал |journal=( помощь )
  27. ^ Дейкстра, Эдсгер В. «Архив EW Дейкстры: обзор лекции о премии Тьюринга 1977 года» . Проверено 11 июля 2008 г.
  28. ^ Бэкус, Джон (август 1978 г.). «Можно ли программирование освободиться от стиля фон Неймана? Функциональный стиль и его алгебра программ» (PDF) . Коммуникации АКМ . 21 (8): 613–641. дои : 10.1145/359576.359579 . S2CID  16367522 . Получено 19 сентября 2020 г. - через Карла Крэри, Школа компьютерных наук Университета Карнеги-Меллон.
  29. ^ Сайты, Ричард Л. (5 августа 1996 г.). «Архитекторы смотрят на процессоры будущего» (PDF) . Отчет микропроцессора . 10 (10). Это Память, Глупый!.
  30. Патт, Йельский университет (5 августа 1996 г.). «Архитекторы смотрят на процессоры будущего» (PDF) . Отчет микропроцессора . 10 (10). Во-первых, давайте разберемся с однопроцессором правильно.

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

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