Istoric au existat 2 tipuri de calculatoare:
- Calculatoare cu program fix – Funcția lor este foarte specifică și nu pot fi programate, de exemplu calculatoarele.
- Calculatoare cu program stocat – Acestea pot fi programate pentru a îndeplini multe sarcini diferite, aplicațiile sunt stocate pe ele, de unde și numele.
Computerele moderne se bazează pe un concept de program stocat introdus de John Von Neumann. În acest concept de program stocat, programele și datele sunt stocate într-o unitate de stocare separată numită memorii și sunt tratate la fel. Această idee nouă a însemnat că un calculator construit cu această arhitectură va fi mult mai ușor de reprogramat.
Structura de bază se prezintă astfel:
Este cunoscut și sub numele de calculator IAS și are trei unități de bază:
- Unitatea centrală de procesare (CPU)
- Unitatea de memorie principală
- Dispozitivul de intrare/ieșire
Să le analizăm în detaliu.
- Unitatea de control –
O unitate de control (UC) gestionează toate semnalele de control ale procesorului. Ea direcționează toate fluxurile de intrare și ieșire, preia codul pentru instrucțiuni și controlează modul în care datele se deplasează în sistem.
- Unitatea aritmetică și logică (ALU) –
Unitatea aritmetică logică este acea parte a procesorului care se ocupă de toate calculele de care poate avea nevoie procesorul, de exemplu: adunare, scădere, comparații. Ea efectuează operații logice, operații de schimbare de biți și operații aritmetice.
Figura – Structura de bază a CPU, ilustrând ALU - Unitatea de memorie principală (registre) –
- Acumulator: Stochează rezultatele calculelor efectuate de ALU.
- Program Counter (PC): Ține evidența locației de memorie a următoarelor instrucțiuni ce urmează a fi tratate. PC-ul transmite apoi această adresă următoare către Registrul de adrese de memorie (MAR).
- Registrul de adrese de memorie (MAR): Stochează locațiile de memorie ale instrucțiunilor care trebuie să fie preluate din memorie sau stocate în memorie.
- Registrul de date de memorie (MDR): Acesta stochează instrucțiunile preluate din memorie sau orice date care trebuie transferate și stocate în memorie.
- Registrul de instrucțiuni curente (CIR): Acesta stochează cele mai recente instrucțiuni preluate în timp ce așteaptă să fie codificate și executate.
- Instruction Buffer Register (IBR): Instrucțiunea care nu trebuie executată imediat este plasată în registrul tampon de instrucțiuni IBR.
- Dispozitive de intrare/ieșire – Programul sau datele sunt citite în memoria principală de la dispozitivul de intrare sau de la memoria secundară sub controlul instrucțiunii de intrare a CPU. Dispozitivele de ieșire sunt utilizate pentru ieșirea informațiilor de la un calculator. Dacă unele rezultate sunt evaluate de calculator și sunt stocate în calculator, atunci, cu ajutorul dispozitivelor de ieșire, le putem prezenta utilizatorului.
- Busuri – Datele sunt transmise de la o parte la alta a unui calculator, conectând toate componentele interne majore la CPU și memorie, prin intermediul Busurilor. Tipuri:
- Bus de date: Transportă date între unitatea de memorie, dispozitivele I/O și procesor.
- Bus de adrese: Transportă adresa datelor (nu datele efective) între memorie și procesor.
- Bus de control: Transportă comenzi de control de la CPU (și semnale de stare de la alte dispozitive) pentru a controla și coordona toate activitățile din cadrul calculatorului.
Von Neumann bottleneck –
Cu orice am face pentru a îmbunătăți performanța, nu putem scăpa de faptul că instrucțiunile pot fi executate doar una câte una și pot fi efectuate doar secvențial. Amândoi acești factori frânează competența procesorului. Acest lucru este denumit în mod obișnuit „gâtul de îmbulzeală Von Neumann”. Putem dota un procesor Von Neumann cu mai multă memorie cache, mai multă memorie RAM sau cu componente mai rapide, dar dacă se dorește obținerea unor câștiguri originale în ceea ce privește performanța CPU, atunci trebuie să aibă loc o inspecție influentă a configurației CPU.
Această arhitectură este foarte importantă și este utilizată în PC-urile noastre și chiar în supercomputere.