Arhitectură von Neumann

De la Wikipedia, enciclopedia liberă
Schema arhitecturii von Neumann

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ă din anii 1940.

Numele provine de la John von Neumann, un renumit matematician și pionier al informaticii american de origine austro-ungar evreu, primul care a stabilit (în scris, în lucrarea „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 calculatoarelor 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, altfel spus, la nevoie programul se poate automodifica, căpătând astfel un caracter dinamic.

Funcționarea arhitecturii von Neumann[modificare | modificare sursă]

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/O). Acestea sunt interconectate printr-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ă fie ca instrucțiune, fie 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 „creierul” 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/O 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 mausul, iar dispozitive de ieșire sunt monitorul și imprimanta. Există și dispozitive I/O combinate, atât pentru intrare cât și pentru ieșire, de exemplu modemul, placa de rețea și discul dur (harddisk) 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/O (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 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 (Output). 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, respectiv procesor. Miniaturizarea continuă a dus printre altele 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 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.

Vezi și[modificare | modificare sursă]