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

Модель калькулятора (1958 г.) с архитектурой фон Неймана в Дрезденской технической коллекции

Архитектура фон Неймана ( VNA ) - это эталонная модель для компьютеров , согласно которой общая память хранит как инструкции компьютерных программ, так и данные . Согласно классификации Флинна, системы фон Неймана относятся к классу архитектур SISD ( одна инструкция, отдельные данные ) , в отличие от параллельной обработки .

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

Конкурирующая архитектура, которая часто используется в преподавании, - это гарвардская архитектура .

разработка

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

Многие из архитектурных идей фон Неймана были разработаны Конрадом Цузе в 1936 году , задокументированы в двух патентах в 1937 году, и большинство из них были механически реализованы в машине Z1 еще в 1938 году . 1941 Конрад Цузе построил в сотрудничестве с Хельмутом Шрейер с Цузе Z3 в первый рабочий цифровой компьютер в мире. Однако маловероятно, что фон Нейман знал о творчестве Цузе, когда представлял свою архитектуру в 1945 году.

Большинство компьютеров, используемых сегодня, основаны на базовом принципе архитектуры фон Неймана, т.е. ЧАС. их свойства соответствуют характеристикам ВАЦ. Однако это обычно больше не означает, что они имеют внутреннюю структуру, как простой анализатор цепей с несколькими функциональными группами. Со временем многие из изначально задуманных как простые компьютерные архитектуры VNA, например. B. Архитектура x86 , за ее пределами дифференцированная и гораздо более сложная, получившая дальнейшее развитие. Это было сделано для того, чтобы добиться прироста производительности без отказа от легко управляемой модели VNA; ЧАС. с точки зрения программного обеспечения, чтобы оставаться совместимым с этим, чтобы иметь возможность продолжать использовать его преимущества.

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

концепция

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

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

Компоненты

Компоненты компьютера фон Неймана
Схематическая структура компьютера фон Неймана с соответствующей шинной системой

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

ALU ( Arithmetic Logic Unit ) арифметический блок
редко также называемый центральным процессором или процессором, выполняет арифметические и логические операции. (Термины центральный процессор и процессор обычно используются в разных значениях.)
Контроллер блока управления или стабилизатор
интерпретирует инструкции программы и соответственно связывает источник данных, приемник и необходимые компоненты ALU; блок управления также регулирует последовательность команд.
Автобусная система
служит для связи между отдельными компонентами (шина управления, адресная шина, шина данных)
Память - (RAM) блок хранения
сохраняет как программы, так и данные , доступные для калькулятора.
I / O Unit - блок ввода / вывода
управляет вводом и выводом данных пользователю (клавиатура, экран) или другим системам (интерфейсам).

Принципы модели

Эти компоненты обрабатывают команды программы в соответствии со следующими правилами.

  • Принципы сохраненной программы:
  • Принципы последовательного выполнения программы (см. Также цикл фон Неймана ):
    • Инструкции считываются из ячейки памяти и затем выполняются.
    • Обычно содержимое счетчика команд увеличивается на единицу.
    • Есть одна или несколько команд перехода, которые изменяют содержимое счетчика команд на значение, отличное от +1.
    • Есть одна или несколько инструкций перехода, которые, в зависимости от значения бита решения, увеличивают счетчик инструкций на единицу или выполняют инструкцию перехода.

характеристики

преимущества

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

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

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

Сам термин, «узкое место фон Неймана» (англ. Von Neumann bottleneck ), был придуман Джоном В. Бэкусом , который представил его в 1977 году в своей лекции по случаю вручения премии Тьюринга :

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

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

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

Автор Нойманн

Архитектура фон Неймана позволяет считывать кодовое слово команды, считывать слово данных или записывать слово данных. Чтение командного кода и чтение и запись данных конкурируют друг с другом.

Гарвард

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

          CPU-Kern
          ^      ^
          |      v
      RAM-Ctrl RAM-Ctrl

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

Супер Гарвард

Архитектуры Super Harvard часто встречаются в DSP с двумя или четырьмя шинными системами. Примерами являются Motorola 56001 и Texas Instruments TMS320 .

           CPU-Kern
       ^      ^      ^
       |      v      v
 RAM-Ctrl RAM-Ctrl RAM-Ctrl

Также принято ослаблять разделение шинных систем. Каждая шина может передавать как код, так и данные. Столкновения снижают производительность. Помимо обработки команд ядром ЦП, обычным явлением является доступ к другой памяти контроллеров DMA и видеоконтроллеров.

        CPU-Kern + Dma-Ctrl
       ^      ^      ^      ^
       v      v      v      v
RAM-Ctrl RAM-Ctrl RAM-Ctrl RAM-Ctrl

1993 г.

          CPU Kern
      zwei Rechenwerke
       ^          ^
       |          v
      L1I        L1D
       |          |
       +-----+----+
      RAM-Controller

1997 г.

          CPU Kern
    mehrere Rechenwerke
       ^         ^ |
       |         | v
      L1I        L1D
       |          |
       +-----+----+
             L2
             |
       RAM-Controller

2008 г.

     CPU Kern 1             CPU Kern 2             CPU Kern 3     ...     CPU Kern N
 mehrere Rechenwerke    mehrere Rechenwerke    mehrere Rechenwerke    mehrere Rechenwerke
  ^        ^ ^ |         ^        ^ ^ |         ^        ^ ^ |         ^        ^ ^ |
  |        | | v         |        | | v         |        | | v         |        | | v
 L1I        L1D         L1I        L1D         L1I        L1D         L1I        L1D
  |          |           |          |           |          |           |          |
  +----L2----+           +----L2----+           +----L2----+           +----L2----+
       |                      |                      |                      |
  +----L3---------------------L3---------------------L3---------------------L3-----+
  |                                                                                |
  +--------------------------------------+-----------------------------------------+
                                    RAM-Controller

Двухпроцессорная серверная система

                                        Sockel 1                                                                                        Sockel 2
     CPU Kern 1             CPU Kern 2             CPU Kern 3     ...     CPU Kern N                 CPU Kern 1             CPU Kern 2             CPU Kern 3     ...     CPU Kern N
 mehrere Rechenwerke    mehrere Rechenwerke    mehrere Rechenwerke    mehrere Rechenwerke         mehrere Rechenwerke    mehrere Rechenwerke    mehrere Rechenwerke    mehrere Rechenwerke
  ^        ^ ^ |         ^        ^ ^ |         ^        ^ ^ |         ^        ^ ^ |             ^        ^ ^ |         ^        ^ ^ |         ^        ^ ^ |         ^        ^ ^ |
  |        | | v         |        | | v         |        | | v         |        | | v             |        | | v         |        | | v         |        | | v         |        | | v
 L1I        L1D         L1I        L1D         L1I        L1D         L1I        L1D             L1I        L1D         L1I        L1D         L1I        L1D         L1I        L1D
  |          |           |          |           |          |           |          |               |          |           |          |           |          |           |          |
  +----L2----+           +----L2----+           +----L2----+           +----L2----+               +----L2----+           +----L2----+           +----L2----+           +----L2----+
       |                      |                      |                      |                          |                      |                      |                      |
  +----L3---------------------L3---------------------L3---------------------L3-----+              +----L3---------------------L3---------------------L3---------------------L3-----+
  |                                                                                +--------------+                                                                                |
  +--------------------------------------+-----------------------------------------+              +---------------------------------------+----------------------------------------+
                                    RAM-Controller                                                                                   RAM-Controller

Стена памяти

Поскольку в архитектуре фон Неймана, в отличие от архитектуры Гарварда, для данных и команд используется только общая шина , они должны совместно использовать максимальный объем данных, который может быть передан. В ранних компьютерах , то процессор был медленный блок в компьютере; Другими словами, время предоставления данных составляло лишь небольшую часть от общего времени обработки арифметической операции. Однако в течение некоторого времени скорость обработки процессора росла значительно быстрее, чем скорость передачи данных по шинам или памяти, что усугубляет влияние узкого места фон Неймана. Термин «стена памяти» описывает этот растущий дисбаланс между скоростью ЦП и памятью вне микросхемы ЦП.

С 1986 по 2000 год скорость ЦП росла на 55% ежегодно, в то время как скорость передачи памяти увеличивалась только на 10%. Следуя этой тенденции, задержка памяти стала узким местом в вычислительной мощности. В качестве первой меры регистры данных были введены на раннем этапе. Сегодня трехуровневый кэш занимает около половины площади чипа в высокопроизводительных процессорах и выполняет подавляющее большинство команд загрузки и записи без первоначального задействования основной памяти.

По сравнению с архитектурой Гарварда

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

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

Смотри тоже

  • Johnny Simulator , программная реализация компьютера фон Неймана с десятью предопределенными командами.

веб ссылки

Сноски

  1. ^ Джон фон Нейман: Первый проект отчета о EDVAC. В: IEEE Annals of the History of Computing. Том 15, выпуск 4, 1993 г., DOI: 10.1109 / 85.238389 , стр. 27-75 ( PDF, 9,556 МБ )
  2. ^ Джон Бэкус: Можно ли освободить программирование от стиля фон Неймана? Функциональный стиль и его алгебра программ. В: Сообщения ACM. Т. 21, вып. 8, август 1978 г., стр. 615 ( PDF, 3,0 МБ )
  3. ^ Уильям А. Вульф, Салли А. Макки: Удар стены памяти: последствия очевидного. В: Новости компьютерной архитектуры. Том 23, выпуск 1, март 1995 г., DOI: 10.1145 / 216585.216588 , стр. 20–24 ( PDF, 20 КБ )