Як я можу визначити, чи є мій комп'ютер Гарвардом чи фон Нейманом?


12

Я розумію, що різниця між двома архітектурами полягає в відокремленні інструкцій від даних гарвардської архітектури. Але як я можу знати, на якому типі системи я ввімкнувся? Чи можливо написати програму такою, щоб програма визначала, чи є система фон Ноймана чи Гарвард? Чи може бути інша архітектура чи відомі ці архітектури?


3
Сучасні види гарвардської архітектури . Все інше в типовому використанні - Фон Нойман.
Роберт Харві

1
У той час як сучасні системи теж не строго фон Неймана. думаючи про графічні процесори та всі інші речі :)
johannes

1
Є й інші типи архітектури. Архітектура потоків даних - моя улюблена. Але ви навряд чи побачите це в дикій природі.
Мартін Йорк

1
Якщо ви робите щось дійсно по-справжньому низького рівня, я не впевнений, чому вам потрібно знати різницю (ви пишете самомодифікуючий код?). Незважаючи на те, що більшість сучасних машин є фон-Нойман, ОС зазвичай позначає кодові сторінки по-різному від сторінок даних, щоб запобігти випадковим (зловмисним) модифікаціям коду.
Мартін Йорк

Відповіді:


13

Ваш комп’ютер - це машина фон Неймана. Усі комп'ютери загального призначення є. Виняток становлять спеціалізовані спільні процесори, такі як GPU. Справа не в тому, що ви не можете мати гарвардську машину (чи будь-яку іншу архітектуру). Просто ніхто їх не будує, особливо не продається (модульні співпроцесори, звичайно).


3
Це, безумовно, залежить від визначення. Якщо замінити досить застарілу дихотомію трихотомією , то більшість сучасних комп'ютерів загального призначення - це модифікована Гарвардська архітектура.
maaartinus

3
Багато вбудованих мікроконтролерів використовують гарвардські архітектури. Вони, як правило, запускають код з якихось типів чи ПЗУ або флеш-пам’яті, і мало що можна отримати, використовуючи загальну шину для коду та даних.
supercat

6

Більшість поточних процесорів загального призначення використовують модифіковану Гарвардську архітектуру . Ядра CPU можуть отримати доступ до програми та даних незалежно в окремих кешах L1. Зовні немає окремої пам'яті програми та даних (ані інші рівні кешу не розділені).

Чи може бути інша архітектура чи відомі ці архітектури?

Усі інші архітектури є досить обмеженими у використанні. Через надзвичайну складність та витрати, пов’язані з розробкою процесора, я не думаю, що хтось повторить це серйозно.

Однак, хоча сучасні процесори в основному є фон Неймана, вони містять у собі багато ідей, таких як Dataflow Architecture .


4

І архітектура Фон Ноймана, і Гарвардська належать до парадигми контрольного потоку.

Існує ще одна парадигма - « Потік даних» .

Поширений приклад обчислень потоку даних, хоча і реалізований на комп'ютерах управління потоком, - це електронна таблиця (від Visicalc та Multiplan до Excel).

Нейронні мережі також належать до цієї категорії.

FPGA - ще один приклад архітектури потоку даних. Вони запрограмовані за допомогою апаратних мов опису, таких як VHDL .


3

Гарвардська архітектура, як правило, використовується лише у вбудованих мікропроцесорах, де програма зберігається в бортовій пам'яті eeprom. Єдиний, який ви, швидше за все, побачите - це Atmel AVR , який використовується в Arduino


1

Коли ви програмуєте його: Змініть область пам'яті, а потім перейдіть туди і виконайте її.

Якщо це Гавард, ви не можете цього зробити.


Або це може бути машина Фон Ноймана з менеджером пам'яті W ^ X.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.