Я понимаю, что различие между двумя архитектурами заключается в отделении инструкций от данных в архитектуре Гарварда. Но как мне узнать, какой тип системы я использую? Можно ли написать программу так, чтобы она определяла, является ли система фон Неймана или Гарварда? Может ли существовать другая архитектура или известны только эти архитектуры?
12
Ответы:
Ваш компьютер - машина фон Неймана. Все компьютеры общего назначения есть. Единственным исключением являются специализированные сопроцессоры, такие как графические процессоры. Дело не в том, что у вас не может быть гарвардской машины (или любой другой архитектуры). Просто их никто не строит, особенно не для продажи (по модулю сопроцессоров, конечно).
источник
Большинство современных универсальных процессоров используют Модифицированную Гарвардскую Архитектуру . Ядра процессора могут получать доступ к программе и данным независимо в отдельных кэшах L1. Снаружи нет отдельной памяти программ и данных (и другие уровни кэша не разделены).
Все остальные архитектуры довольно ограничены в использовании. Из-за чрезвычайной сложности и затрат, связанных с разработкой процессора, я не думаю, что кто-то попробует это снова серьезно.
Тем не менее, хотя современные процессоры в основном принадлежат фон Нейману, они включают в себя множество идей, таких как Dataflow Architecture .
источник
Архитектура фон Неймана и Гарварда относится к парадигме потока управления.
Есть еще одна парадигма - Поток данных .
Типичным примером вычислений потоков данных, хотя и реализованных на компьютерах потоков управления, является электронная таблица (от Visicalc и Multiplan до Excel).
Нейронные сети также относятся к этой категории.
ПЛИС являются еще одним примером архитектуры потоков данных. Они запрограммированы на языках описания оборудования, таких как VHDL .
источник
Архитектура Гарварда обычно используется только во встроенных микропроцессорах, где программа хранится во встроенной памяти EEPROM. Единственный, что вы, вероятно, увидите, - это Atmel AVR, используемый в Arduino.
источник
Когда вы программируете это: измените область памяти, а затем перейдите туда и выполните ее.
Если это Хавард, ты не сможешь это сделать.
источник