stringtranslate.com

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

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

Архитектура фон Неймана , также известная как модель фон Неймана или архитектура Принстона , представляет собой компьютерную архитектуру , основанную на описании, сделанном в 1945 году Джоном фон Нейманом и другими авторами в регистре r.

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

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

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

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

История

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

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

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

Возможности

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

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

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

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

Математик Алан Тьюринг , которого натолкнули на проблему математической логики лекции Макса Ньюмена в Кембриджском университете , написал в 1936 году статью под названием « О вычислимых числах с приложением к проблеме Entscheidungsproblem» , которая была опубликована в Трудах Лондонского математического общества . [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 году профессор Дж. фон Нейман, работавший тогда в Школе инженерии Мура в Филадельфии, где был построен ENIAC, от имени группы своих коллег опубликовал отчет о логическом проектировании цифровых компьютеров. Отчет содержал подробное предложение по проектированию машины, которая с тех пор стала известна как EDVAC (электронный дискретно-переменный автоматический компьютер). Эта машина была только недавно завершена в Америке, но отчет фон Неймана вдохновил на создание 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 в 1977 году . По словам Бэкуса:

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

Смягчение последствий

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

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

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

Самоизменяющийся код

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

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

Ссылки

  1. ^ ab von Neumann, John (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), «О вычислимых числах с приложением к проблеме Entscheidungsproblem», Труды Лондонского математического общества , 2, т. 42 (опубликовано в 1937 г.), стр. 230–265, doi :10.1112/plms/s2-42.1.230, S2CID  73712и Тьюринг, Алан М. (1938), «О вычислимых числах с приложением к проблеме Entscheidungsproblem. Исправление», Труды Лондонского математического общества , 2, т. 43, № 6 (опубликовано в 1937 г.), стр. 544–546, doi :10.1112/plms/s2-43.6.544.
  7. ^ Уильямс, ФК; Килберн, Т. (25 сентября 1948 г.), «Электронные цифровые компьютеры», Nature , 162 (4117): 487, Bibcode : 1948Natur.162..487W, doi : 10.1038/162487a0 , S2CID  4110351.
  8. ^ Лукофф, Герман (1979). От Dits to 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), Мельцер, Б.; Мичи, Д. (ред.), «Об Алане Тьюринге и происхождении цифровых компьютеров», Machine Intelligence , 7 , Эдинбург: Edinburgh University Press : 10, ISBN 0-902383-26-4.
  13. Коупленд 2006, стр. 108–111.
  14. Боуден 1953, стр. 176, 177.
  15. Боуден 1953, стр. 135.
  16. ^ "Electronic Computer Project". Institute for Advanced Study . 11 сентября 2009 г. Получено 26 мая 2011 г.
  17. ^ ab Campbell-Kelly, Martin (апрель 1982 г.). «Развитие компьютерного программирования в Великобритании (1945–1955 гг.)». IEEE Annals of the History of Computing . 4 (2): 121–139. doi :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. ISBN 978-1906124908.
  23. ^ Джонсон, Роджер (апрель 2008 г.). «Школа компьютерных наук и информационных систем: краткая история» (PDF) . Колледж Биркбек . Лондонский университет . Получено 23 июля 2017 г. .
  24. ^ Белл, К. Гордон ; Кэди, Р.; Макфарланд, Х.; О'Лафлин, Дж.; Нунан, Р.; Вульф, В. (1970), «Новая архитектура для мини-компьютеров – DEC PDP-11» (PDF) , Весенняя объединенная компьютерная конференция , стр. 657–675.
  25. ^ Null, Линда; Lobur, Джулия (2010), Основы организации и архитектуры компьютера (3-е изд.), Jones & Bartlett Learning, стр. 36, 199–203, ISBN 978-1-4496-0006-8.
  26. ^ Бэкус, Джон В. (август 1978 г.). «Можно ли освободить программирование от стиля фон Неймана? Функциональный стиль и его алгебра программ». Сообщения ACM . 21 (8): 613–641. doi : 10.1145/359576.359579 . S2CID  16367522.
  27. ^ Дейкстра, Эдсгер В. "Архив Э. В. Дейкстры: обзор лекции о вручении премии Тьюринга 1977 года" . Получено 11 июля 2008 г.
  28. ^ Сайтс, Ричард Л. (5 августа 1996 г.). «Архитекторы смотрят на процессоры будущего» (PDF) . Microprocessor Report . 10 (10). Это память, глупый!.
  29. ^ Патт, Йель (5 августа 1996 г.). «Архитекторы смотрят на процессоры будущего» (PDF) . Отчет о микропроцессорах . 10 (10). Сначала давайте разберемся с однопроцессором.

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

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