Arhitectura von Neumann este una din arhitecturile posibile
(cuprinzând conceptele constructive de bază) ale calculatoarelor numerice,
arhitectură care are în centrul ei o unitate centrală de procesare (în engleză:
CPU) și o unitate separată de memorare (în care se stochează atât date
cât și instrucțiuni). Datează la origină din anii 1940.
Numele provine de la John von Neumann, un renumit matematician și pionier al
informaticii american de origine austro-ungur evreu, primul care a stabilit (în
scris, în „Discurs preliminar asupra proiectării logice a unui instrument de
calcul electronic”, împreună cu Arthur W. Burks și Hermann H. Goldstine)
cerințele pentru un calculator electronic de uz general (
general purpose).
Arhitectura s-a înrădăcinat, iar majoritatea calculatoarele construite până
acum au avut și au această arhitectură.
Principalul obiectiv al lui von Neumann a fost să construiască un sistem de
calcul de uz general în care datele de prelucrat și rezultatele calculelor
intermediare să fie stocate alături de instrucțiuni într-o memorie comună
suficient de mare. Conform acestei arhitecturi, într-un sistem de calcul
general chiar și instrucțiunile însele trebuie să poată fi modificate la fel de
ușor ca și numerele („operanzii”) cu care lucrează și pe care le modifică ele.
Astfel, instrucțiunile sunt codificate numeric și stocate în aceeași memorie ca
și datele. Pentru accesul la instrucțiunile codificate se definește un
subsistem de prelucrare a informației care încarcă instrucțiunile din memorie
pentru a fi executate, acolo unde este nevoie realizându-se diferențierea între
număr (operand) și instrucțiune, deși nu există diferențe formale între ele.
Este necesar și un contor program (contor de instrucțiuni) care conține
permanent adresa instrucțiunii următoare, ce va fi și ea încărcată din memorie
și apoi și executată (după execuția instrucțiunii actuale). Arhitectura permite
ca instrucțiunile să poată prelucra și modifica nu numai date, dar chiar și
alte instrucțiuni, sau altfel spus, la nevoie programul se poate automodifica,
căpătând astfel un caracter dinamic.
Deși designul și performanțele calculatoarelor s-au îmbunătățit dramatic în
comparație cu anii 1940, principiile arhitecturii von Neumann sunt în
continuare la baza aproape tuturor mașinilor de calcul contemporane.
Această arhitectură descrie un calculator cu patru module importante: unitatea
aritmetică-logică (UAL), unitatea de control (UC), memoria centrală și
dispozitivele de intrare/ieșire (prescurtat I/E). Acestea sunt interconectate
cu un mănunchi de fire numit magistrală (
bus) pe care circulă datele de
calcul și datele de program (instrucțiuni) și sunt conduse în tactul unui ceas
(șir permanent de impulsuri regulate).
Conceptual, memoria unui calculator poate fi văzută ca un șir de celule
numerotate. Fiecare celulă primește drept adresă un număr unic propriu,
asemănător cu numerele caselor de pe o stradă. Celulele pot înmagazina o
cantitate mică, prestabilită de informație. Informația poate fi interpretată și
ca instrucțiune, și ca date propriu-zise. Instrucțiunile prescriu
calculatorului ce să facă, iar datele sunt acele informații care trebuie
prelucrate conform cu instrucțiunile. În principiu orice celulă poate stoca
(memora) atât instrucțiuni cât și date. Importantă este posibilitatea ca una
sau mai multe instrucțiuni, deja stocate în memorie, să fie privite de către
alte instrucțiuni drept date de prelucrat/modificat dinamic („în mers”), după
necesitate.
UAL este din multe puncte de vedere „inima” calculatorului. Aceasta este
capabilă să efectueze mai multe tipuri de operații, de exemplu operații
aritmetice (adunare, înmulțire ș.a.), operații de comparație, operații de
manevrare a datelor (duplicare, mutare, trunchiere ș.a.) precum și operații
care influențează ordinea și fluxul instrucțiunilor.
Sistemele de I/E sunt dispozitive prin care calculatorul preia informații
din lumea exterioară și raportează înapoi rezultatele. Într-un calculator
personal obișnuit dispozitive de intrare sunt de exemplu tastatura și mouse-ul,
iar dispozitive de ieșire sunt monitorul și imprimanta. Există și dispozitive
I/E combinate, atât pentru intrare cât și pentru ieșire, de exemplu modemul, placa
de rețea și discul dur magnetic.
Unitatea de control este un modul central care comandă și leagă toate
celelalte module între ele. Rolul ei este să culeagă („citească“)
instrucțiunile și datele din memorie sau de la dispozitivele I/E
(intrare/ieșire), să decodeze instrucțiunile, să ofere UAL (unității
aritmetico-logice) date de intrare corecte conform cu instrucțiunea, să comande
UAL ce anume operație să efectueze asupra intrărilor, precum și să trimită
(scoată afară) rezultatele, adică să „scrie” în memorie sau către dispozitivele
de ieșire, „E”. O componentă cheie a unității de control este un contorul
(numărătorul) de instrucțiuni. El conține la orice moment adresa instrucțiunii
curente din secvența de program în execuție, și numără instrucțiunile, fiind
astfel în permanentă schimbare. Fizic, începând din anii 1980, UAL și unitatea
de control se plasează unitar în același circuit integrat numit „unitate
centrală de procesare” (
central processing unit,
CPU ) sau microprocesor
sau și procesor. Miniaturizarea continuă a dus printre altele și la apariția
așa numitelor unități grafice de procesare, (
graphic processing unit,
GPU),
care comandă și coordonează toate operațiunile de afișare pe ecranul
calculatorului - în locul plăcii de extensie pentru grafică.
Pentru arhitectura calculatoarelor s-au adoptat numeroase standarde. Un prim
standard de acest fel, care mai este utilizat și în prezent, este ISA (Industry
Standard Architecture), care a fost elaborat de IBM odată cu primul IBM PC (
Personal
Computer, computer personal), apărut la începutul anilor 1980.
Sistemele de calcul rapide pot avea înglobate mai multe procesoare, vezi și
articolul supercomputer. Fiecare procesor (CPU) include o unitate de control
precum și unul sau mai multe nuclee de proces logic-aritmetic, fiecare
dispunând de o UAL proprie.