Arhitectura cunoscut ca arhitectura von Neumann este un model pentru un calculator care utilizează o singură structură de stocare pentru a stoca atât instrucțiunile și datele solicitate sau produse de calcul. Astfel de mașini sunt, de asemenea, cunoscute sub numele de computere cu programe înregistrate . Separarea dintre stocare și procesor este implicită în acest model.
Această arhitectură se numește așa cu referire la matematicianul John von Neumann care a dezvoltat în iunie 1945 ca parte a proiectului EDVAC prima descriere a unui computer al cărui program este stocat în memoria sa.
Alan Turing, John von Neumann, precum și John William Mauchly și John Eckert (în timpul lucrărilor lor despre ENIAC), au folosit acest concept în mod independent.
Herman Goldstine (un coleg cu John von Neumann) a difuzat o descriere neterminată, intitulată „ Primul proiect al unui raport despre EDVAC” bazată pe lucrările lui Eckert și Mauchly sub numele unic de von Neumann.
Documentul a fost citit de zeci de colegi ai lui von Neumann din America și Europa și a inspirat mai multe mașini în construcții.
Arhitectura von Neumann descompune computerul în patru părți distincte:
Tratând instrucțiunile la fel ca datele, un computer care are un program stocat în memorie poate modifica cu ușurință instrucțiunile. Un motiv important care a indus o astfel de posibilitate a fost nevoia unui program de a crește sau modifica câmpul de adresă al instrucțiunilor (de exemplu, pentru a face bucle). Acest motiv a devenit mai puțin important odată cu apariția utilizării registrelor index și a adresării indirecte ca o caracteristică standard a procesoarelor .
Arhitectura actuală a computerelor face inutilă modificarea instrucțiunilor programului - „codul” său - la scară mică, deoarece acest lucru ar face ca tehnicile de gestionare a cache-ului și a conductelor în procesor să fie ineficiente . Prin urmare, această practică este învechită până în prezent. Desigur, pe o scară mai mare, capacitatea de a trata instrucțiunile la fel ca datele este ceea ce permite compilarea compilatorilor . Aceasta este, de asemenea, o caracteristică exploatată de viruși atunci când adaugă o copie a propriului cod la un program existent. Problema copierii neautorizate a codului poate fi evitată prin utilizarea unui sistem de protecție a memoriei și, în special, de către managerul de memorie virtuală .