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?
12
Odpowiedzi:
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).
źródło
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).
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.
źródło
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 .
źródło
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
źródło
Podczas programowania: Zmodyfikuj region pamięci, a następnie wskocz tam i uruchom go.
Jeśli to Havard, nie możesz tego zrobić.
źródło