Jak mogę sprawdzić, czy mój komputer to architektura Harvarda czy von Neumanna?

12

Rozumiem, że różnica między dwiema architekturami polega na oddzieleniu instrukcji od danych w architekturze Harvarda. Ale skąd mam wiedzieć, jakiego rodzaju systemu używam? Czy można napisać program, który określa, czy system to von Neumann czy Harvard? Czy może istnieć inna architektura, czy te architektury są jedynymi znanymi?

Niklas
źródło
3
Nowoczesne zastosowania architektury Harvarda . Wszystko inne w typowym użyciu to Von Neumann.
Robert Harvey,
1
Podczas gdy nowoczesne systemy również nie są ściśle von-Neumann. myśląc o procesorach graficznych i wszystkich innych rzeczach :)
John
1
Istnieją inne typy architektury. Architektura przepływu danych jest moim ulubionym. Ale raczej nie zobaczysz tego na wolności.
Martin York,
1
Chyba, że ​​robisz coś naprawdę naprawdę niskiego poziomu, nie jestem pewien, dlaczego musisz znać różnicę (czy piszesz kod modyfikujący?). Mimo że większość nowoczesnych maszyn to von-Neumann, system operacyjny zwykle oznacza strony kodowe inaczej niż strony danych, aby zapobiec przypadkowym (złośliwym) modyfikacjom kodu.
Martin York,

Odpowiedzi:

13

Twój komputer to maszyna von Neumanna. Wszystkie komputery ogólnego przeznaczenia są. Jedynymi wyjątkami są wyspecjalizowane koprocesory, takie jak procesory graficzne. Nie chodzi o to, że nie możesz mieć maszyny Harvarda (ani żadnej innej architektury). Po prostu nikt ich nie buduje, zwłaszcza nie na sprzedaż (oczywiście koprocesory modulo).

Ross Patterson
źródło
3
Z pewnością zależy to od definicji. Jeśli zastąpisz raczej przestarzałą dychotomię trikotomią , większość współczesnych komputerów ogólnego przeznaczenia ma zmodyfikowaną architekturę Harvarda.
maaartinus,
3
Wiele wbudowanych mikrokontrolerów korzysta z architektur Harvarda. Generalnie uruchamiają kod z jakiegoś rodzaju pamięci ROM lub flash i niewiele można by uzyskać, używając wspólnej magistrali dla kodu i danych.
supercat
6

Większość współczesnych procesorów ogólnego zastosowania wykorzystuje zmodyfikowaną architekturę Harvarda . Rdzenie CPU mogą niezależnie uzyskiwać dostęp do programu i danych w swoich oddzielnych pamięciach podręcznych L1. Na zewnątrz nie ma osobnych pamięci programów i danych (ani innych poziomów pamięci podręcznej nie są oddzielone).

Czy może istnieć inna architektura, czy te architektury są jedynymi znanymi?

Wszystkie pozostałe architektury są raczej ograniczone w użyciu. Ze względu na ogromną złożoność i koszty związane z opracowywaniem procesorów, nie sądzę, aby ktokolwiek spróbował ponownie.

Jednak chociaż współczesne procesory są w zasadzie von Neumann, zawierają wiele pomysłów, takich jak architektura przepływu danych wewnętrznie.

maaartinus
źródło
4

Zarówno architektura Von Neumann, jak i Harvard należą do paradygmatu kontroli przepływu.

Istnieje inny paradygmat, którym jest przepływ danych .

Typowym przykładem obliczeń przepływu danych, chociaż zaimplementowanym na komputerach z przepływem kontrolnym, jest arkusz kalkulacyjny (od Visicalc i Multiplan do Excela).

Sieci neuronowe również należą do tej kategorii.

FPGA to kolejny przykład architektury przepływu danych. Są programowane przy użyciu języków opisu sprzętu, takich jak VHDL .

mouviciel
źródło
3

Architektura Harvard jest zwykle stosowana tylko w wbudowanych mikroprocesorach, w których program jest przechowywany w wewnętrznej pamięci eeprom. Jedyny, co prawdopodobnie zobaczysz, to Atmel AVR, używany w Arduino

Martin Beckett
źródło
1

Podczas programowania: Zmodyfikuj region pamięci, a następnie wskocz tam i uruchom go.

Jeśli to Havard, nie możesz tego zrobić.

Użytkownik
źródło
Lub może to być maszyna Von Neumann z menedżerem pamięci W ^ X.