Как я могу определить, является ли мой компьютер архитектурой Гарварда или фон Неймана?

12

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

Никлас
источник
3
Современное использование Гарвардской архитектуры . Все остальное в типичном использовании - это фон Нейман.
Роберт Харви
1
Хотя современные системы тоже не совсем фон Неймана. думать о графических процессорах и обо всем этом :)
Йоханнес
1
Есть и другие типы архитектуры. Архитектура потока данных - моя любимая. Но вы вряд ли увидите это в дикой природе.
Мартин Йорк
1
Если вы не делаете что-то действительно очень низкого уровня, я не уверен, почему вам нужно было бы знать разницу (вы пишете самоизменяющийся код?). Несмотря на то, что большинство современных машин являются фон Неймана, ОС обычно помечает кодовые страницы не так, как страницы данных, чтобы предотвратить случайные (злонамеренные) изменения кода.
Мартин Йорк

Ответы:

13

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

Росс Паттерсон
источник
3
Это, безусловно, зависит от определения. Если вы замените довольно устаревшую дихотомию на трихотомию , большинство современных компьютеров общего назначения - это модифицированная гарвардская архитектура.
Maaartinus
3
Многие встроенные микроконтроллеры используют гарвардские архитектуры. Как правило, они запускают код из какого-либо вида, из ПЗУ или флэш-памяти, и мало что можно получить, если использовать общую шину для кода и данных.
суперкат
6

Большинство современных универсальных процессоров используют Модифицированную Гарвардскую Архитектуру . Ядра процессора могут получать доступ к программе и данным независимо в отдельных кэшах L1. Снаружи нет отдельной памяти программ и данных (и другие уровни кэша не разделены).

Может ли существовать другая архитектура или известны только эти архитектуры?

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

Тем не менее, хотя современные процессоры в основном принадлежат фон Нейману, они включают в себя множество идей, таких как Dataflow Architecture .

maaartinus
источник
4

Архитектура фон Неймана и Гарварда относится к парадигме потока управления.

Есть еще одна парадигма - Поток данных .

Типичным примером вычислений потоков данных, хотя и реализованных на компьютерах потоков управления, является электронная таблица (от Visicalc и Multiplan до Excel).

Нейронные сети также относятся к этой категории.

ПЛИС являются еще одним примером архитектуры потоков данных. Они запрограммированы на языках описания оборудования, таких как VHDL .

mouviciel
источник
3

Архитектура Гарварда обычно используется только во встроенных микропроцессорах, где программа хранится во встроенной памяти EEPROM. Единственный, что вы, вероятно, увидите, - это Atmel AVR, используемый в Arduino.

Мартин Беккет
источник
1

Когда вы программируете это: измените область памяти, а затем перейдите туда и выполните ее.

Если это Хавард, ты не сможешь это сделать.

пользователь
источник
Или это может быть машина фон Неймана с менеджером памяти W ^ X.