Sunteți pe pagina 1din 104

Arhitectura Calculatoarelor

T.1 – NOŢIUNI INTRODUCTIVE


Noțiuni Introductive. Obiectivele disciplinei. Schema de bază a unui calculator. Rolurile componentelor de
bază, Principiul de funcționare a lor, Schema nivelelor conceptuale a calculatoarelor.

Scopul Lecției: De a face cunoștință cu noțiunile de bază din Arhitectura Calculatoarelor, de a înțelege
noțiunea de nivele conceptuale, de a înțelege structura unui sistem de calcul și funcțiile componentelor lui.

Studentul trebuie să cunoască:


§ Schema de bază a calculatoarelor digitale;
§ Rolurile componentelor de bază a calculatorului
§ Schema nivelelor conceptuale a unui calculator

Conf. Univ. Dr. Crețu Vasilii


Noţiunea de sistem
Sistem (definiţie) = Un ansamblu de elemente inter-relaţionate ce compun un întreg.
Termenul de „system” in latinǎ şi greacǎ înseamnǎ „a pune împreunǎ, a combina”.
Un subsistem este o parte a unui sistem.
În mod tipic un sistem este alcǎtuit din componente (elemente) care sunt interconectate şi interacţioneazǎ pentru a facilita fluxul
de informaţie.
În funcţie de tipul sistemului acesta se poate diferenţia de elemente, maşini, procese.
Tipuri de sisteme:
• Sisteme deschise – Sisteme care pot fi influenţate de evenimentele din afara graniţelor lor.
• Sisteme închise - Sisteme care nu sunt influenţate de evenimentele din afara graniţelor lor.
• Sisteme dinamice – Sisteme cu componente sau fluxuri care se schimbǎ în timp.
O distincţie care trebuie specificatǎ este între sistemele fizice şi cele conceptuale.
Cele conceptuale sunt abstracte şi au la bazǎ idei, ajutând la modelarea sistemelor fizice.
Arhitectura sistem = dispunerea si interconectarea componentelor pentru a obtine functionalitatea dorita a sistemului.
Conceptul de cutie neagrǎ (black box)
Definitie. Un sistem cu intrari (I), iesiri(E) si transformari (F(x)) cunoscute, dar cu conţinut necunoscut se numeste black-box.
Proprietatea cea mai importanta a cutiei negre este utilizabilitatea. I.e. utilizare fără a cunoaste detalii de implementare.

Conceptul de cutie neagra este utilizat in proiectarea si realizarea sistemelor de calcul.


Sistemele sunt proiectate modular folosind cutii negre dupa urmatoarea regula: “ori de cite ori este necesara o functie intr-un sistem se foloseste o
cutie neagra care realizeaza aceasta functie”. Modul in care este implementata respectiva functie nu intereseaza pe utilizator, ci doar
functionalitatea cutiei negre si modaliatatea de folosire a ei.
Pentru a facilita construcţia sistemelor din module cu funcţionalitate cunoscutǎ (black box) acestea au fost standardizate.
Un standard cuprinde o descriere a modului de utilizare a unui modul (specificaţii de utilizare).
Organizaţiile internationale de standarde: ISO (International Standard Organization), IEEE (Institute of Electrical and Electronics Engineers),
IETF (Internet Engineering Task Force) au elaborat o serie de standarde, respectate de producatori, în realizarea modulelor respective.

Un sistem de calcul este un sistem care execută programe stocate în memorie în interacţiune cu mediul extern.
Componentele sistemului de calcul sunt
- hardware – echipamente
- software - programe
Arhitectura sistemelor de calcul
Arhitectura sistemelor de calcul sau arhitectura calculatoarelor este teoria din spatele construcţiei unui calculator. În acelaşi mod în care un
arhitect stabileşte principiile şi obiectivele construirii unui proiect ca baze ale unor planuri de construcţie, în acelaşi mod un arhitect de
calculatoare stabileşte arhitectura sistemului de calcul ca bazǎ a specificaţiilor de proiectare.
Obiectivul principal în arhitectura unui sistem de calcul îl reprezintǎ un raport cost/performanţǎ cât mai bun.
Componenta sistem = cutie neagra.
Arhitectura sistem = dispunerea si interconectarea componentelor pentru a obtine functionalitatea dorita a sistemului.

Arhitecturi generale
1. Arhitectura multistrat – niveluri ierarhice. Un nivel inferior ofera suport nivelului superior pentru executia functiilor sale
2. Decompozitia functionala – descompunere a componentelor dupa functiile realizate
3. Decompozitia conceptuala – descompunere a sistemului dupa entitatile identificate (ce inglobeaza toata functionalitatea obiectului).

Descrierea sistemului de calcul


Definiţie. Masina de calcul care executa secvential programe scrise in limbajul masinii respective, stocate in memorie, in interactiune cu mediul
extern.
Un program = solutie algoritmica a unei probleme scrisa intr-un limbaj, numit limbaj de programare.
Un algoritm=solutie secventiala a unei probleme.
Limbajul de programarelimbajul masina.
Limbajul masina este limbajul executat de masina.
Limbajul de programare este translatat in limbaj masina pentru executie.
Sunt doua forme de executie:
- compilare si executie
- interpretare (masina virtuala care interpreteaza si executa programul)
Elemente componente:
- de procesare (prelucrare)
- de memorare
- de comunicatie
• cu mediul extern
• suport de comunicaţie
Program = succesiune de instructiuni ce implementeaza un algoritm.

Din punct de vedere perceptiei, sistemul de calcul este impartit in doua mari parti:
• partea hardware – reprezentata de circuitele electronice, placi, cabluri, memorii, etc. care reprezinta echipamentul propriu-
zis de calcul si care sunt tangibile.
• partea software – reprezentata prin programe care implementeaza algoritmi si reprezinta idei abstracte.
Diferenta dintre hardware si software pina nu demult a fost evidenta, cu timpul insa ele au devenit logic echivalente. Ambele
putind realiza aceleasi functii, iar alegerea implementarii facindu-se dupa criterii pret/performanta
Partile componente ale sistemului de calcul.
Fluxul informaţiei
Pentru a intelege functionarea calculatorului vom introduce notiunea de informatie care, furnizata de utilizator sau mediu, este convertita în
format binar, intern, prelucrat de sistemul de calcul (date).
Adoptarea reprezentarii binare a fost impusa de utilizarea in constructia calculatoarelor a dispozitivelor cu doua stari stabile, notate conventional
cu 0 si 1. Unitatea de masura pentru numerele binare este bit-ul (binary digit).
Prezentare succinta a componentelor sistemelor de calcul cu referire directa la calculatoare. Numeroasele componente ale unui sistem de calcul pot
fi grupate in unitati avind functii mai complexe bine precizate. In figura urmatoare denumirea fiecarei unitati indica functia ei, iar sagetile de
legatura arata modul de transmitere a informatiei de la una la alta.

Informatia, furnizata de mediul extern (utilizator), este preluată de dispozitivul de intrare, codificată (convertită în format binar) şi transmisă
unităţii de intrare care realizează interfaţa cu unitatea de procesare (unitatea centrală de procesare = UCP) .
Exemple de dispozitive de intrare: tastatura, mouse, scanner, MODEM, etc. Astfel, la tastatura, apasarea unei taste produce codului binar
corespunzator al tastei apăsate.
Scannerul preia o imagine şi o transformă într-o succesiune de coduri binare. MODEM-ul preia datele transmise de la distanţă.
Unitatea de intrare realizează interfaţa cu UCP a.î. dispozitivele de intrare pot fi diferite. Informatia este inregistrata si pastrata în memoria
primară. De aici ea poate fi transmisa ulterior altor unitati functionale. Informatia este supusa prelucrarii in UCP. UCP este formată din unitatea
de calcul şi unitatea de comandă. Unitatea de calcul efectueaza operatii simple, aritmetice si logice, asupra unor operanzi din memorie,
inregistrind rezultatele tot in memorie. Unitatea de comanda are ca rol coordonarea functionarii celorlalte unitati, pe baza unor instructiuni sau
comenzi.
Informatia care nu este prelucrata la un moment dat poate fi pastrata in unitati de memorie externa (de obicei discuri magnetice), mai lente
decit memoria interna ( operativa) dar cu o capacitate mai mare. Informatia poate fi transmisa, daca este cazul,de la o memorie la alta.
Din punct de vedere al localizării, memoria sistemului de calcul este împărţită în:
- memorie internă
- memorie externă
Memoria internă este formată din:
- RAM (Read Only Memory) – volatila (îşi pierde conţinutul dacă nu este alimentată cu curent electric) = memoria primară a sistemului de
calcul (indispensabilă)
- PROM (Programmable Read Only Memory) - nevolatila = memorie care poate fi doar citită şi care cuprinde programe ale fabricanţilor
sistemului de calcul
- CMOS (Complementar Metal Oxid Siliciu) – memorie asemănătoare memoriei RAM, de capacitate foarte mică, alimentată permanent de
la o baterie, care păstrează setările de configurare a sistemului de calcul.

Memoria externa - discuri magnetice şi optice.


Rezultatele prelucrarilor sint transmise utilizatorului prin unitatea de iesire către dispozitivul de ieşire. Dispozitivul de ieşire realizeaza
conversia datelor din format binar în formatul necesar reprezentarii informatiei. Exemple de dispozitive de ieşire : monitor, imprimnată,
MODEM, plotter, etc. De exemplu, o imprimanta converteste codurile binare ale caracterelor in formatul tiparit. Similar, un monitor (display)
transforma reprezentarile binare ale informatiei in formatul afişat.
SCHEMA DE BAZĂ A UNUI CALCULATOR

Orice calculator are în componenţă patru


mari unităţi fundamentale:
-Unitatea centrală (UC).
-Unitatea de memorie (UM).
-Unitatea de Intrare/Ieşire (U I/E).
-Magistrale de interconectare (BUS-uri).

Rolurile acestor componente sunt:


-Unitatea centrală (UC) controlează toate componentele, executând instrucţiunile unui program; efectuează calcule aritmetice şi
logice.
-Memoria (UM) păstrează programele în curs de execuţie şi datele asociate lor.
-Unitatea de Intrare/Ieşire (U I/E) leagă sistemul cu lumea externă prin intermediul unităţilor periferice: ecran, tastatură, discuri,
benzi magnetice, reţele etc.
-Magistralele sunt de trei feluri:
• magistrale de adresă, care vehiculează adresa memorie sau a unităţii I/E generată de UC (sau, în unele cazuri de alte unităţi
de control);
• magistrale de date, care vehiculează informaţia (instrucţiuni, date) între UC, memorie şi unităţile I/E;
• magistrale de control, care vehiculează semnalele utilizate de UC pentru controlul sistemului (adresă, memorie validă,
adresă I/E validă, citire/scriere, aşteptare, întrerupere etc.).
Principiul de funcţionare a unui calculator este relativ simplu. În UM există programe, fiecare program având un număr de
instrucţiuni. Ciclurile de executare a unei instrucţiuni sunt următoarele:
-Ciclul extragere instrucţiune (instruction fetch). UC face o citire a memoriei la adresa la care se află instrucţiunea.
Instrucţiunea are un număr de biţi, în funcţie de arhitectura calculatorului, de obicei multiplu de 8. Instrucţiunea citită este adusă pe
magistrală şi depusă într-un registru al UC-ului.
-Ciclul de aflare a operanzilor. Oricare instrucţiune lucrează cu operanzi. Între operanzi se petrece o operaţie dată de un câmp
al instrucţiunii, numit codul instrucţiunii. În această fază trebuie depistaţi operanzii, mai precis adresele unde se găsesc operanzii.
Aceştia se pot găsi în două tipuri de locaţii:
-în registrele generale ale UC-ului;
-la o adresă de memorie.
Există mai multe tipuri de adresare pentru determinarea adreselor de operanzi. La sfârşitul acestui ciclu, în UC trebuie să se
existe adresele fizice ale operanzilor participanţi la instrucţiune.
-Ciclul de aducere a operanzilor în UC. În acest ciclu se aduc operanzii participanţi la instrucţiune de la adresele determinate
în ciclul anterior. Ei sunt aduşi din registrele generale sau de la adresele de memorie în registrele funcţionale.
-Ciclul de execuţie propriu zisă. În acest ciclu are loc execuţia propriu zisă a instrucţiunii, dată de codul instrucţiunii.
-Ciclul de depunere a rezultatului. Orice instrucţiune are ca scop final aflarea unui rezultat care poate fi un operand în cazul
instrucţiunilor aritmetice(de exemplu suma pentru cod de adunare, produsul pentru cod de înmulţire) sau poziţionarea unor
indicatori în cazul instrucţiunilor logice (de exemplu, în cazul unui cod de comparaţie între doi operanzi, poziţionarea
indicatorului z=1 pentru identitatea celor doi operanzi).
La sfârşitul acestui ciclu, care înseamnă şi sfârşitul executării instrucţiunii, se calculează adresa instrucţiunii următoare şi
adresa de la care va fi adusă instrucţiunea următoare.
Execuţia unui program înseamnă execuţia succesivă a instrucţiunilor din care este alcătuit. Programele care compun sistemul
de operare asigură gestiunea resurselor (procesor, memorie, I/E) şi fac legătura cu programele de aplicaţie.
SCHEMA NIVELELOR CONCEPTUALE A UNUI CALCULATOR
Un calculator virtual actual are şapte nivele conceptuale.
Nivelurile conceptuale ale maşinii virtuale corespunzătoare
calculatoarelor actuale.
Maşina virtuală este organizată pe niveluri iar între
două niveluri pot exista două operaţii:
-translatarea şi
-interpretarea.
Utilizarea limbajului inferior este greoaie şi de aceea s-a creat un limbaj superior, mult mai aproape de gândirea umană. Se pot scrie
programe atât în Lsup cât şi în Linf dar calculatorul va executa totdeauna setul de instrucţiuni din Linf pentru care a fost proiectat fizic.
Translatarea înseamnă transformarea programului din Lsup în întregime într-un program din Linf . Programul din Lsup este abandonat iar noul
program din Linf este încărcat în memorie şi executat. Translatarea seamănă cu compilarea.
Interpretarea înseamnă execuţia instrucţiunilor din Lsup , pas cu pas, fiecare instrucţiune fiind executată imediat. Este scrierea unui program
în Linf care preia programe din Lsup ca date de intrare şi le execută examinând fiecare instrucţiune pe rând şi executând secvenţa echivalentă de
instrucţiuni direct în Linf , dar fără să genereze un nou program în Linf .
Diferenţa fundamentală între cele două tehnici este că în translatare un program mai întâi este transformat în totalitate în alt program şi apoi
executat programul translat, în timp ce în interpretare se execută fiecare instrucţiune pas cu pas.
Faţă de interpretare, translatarea are avantajul unei viteze de execuţie mult mai mari.
Nivelurile au următoarele semnificaţii:
Nivelul 1 este hard pur. Este format din circuite electrice şi electronice. cuprinde si nivelul echipamentelor (care se afla
la cel mai scazut nivel si in care utilizatorul poate vedea tranzistoarele). La nivelul digital se afla obiectele numite porti(gates) care sunt
construite din tranzistoare, dar au intrari si iesiri digitale (semnale ce reprezinta "0" sau "1"). Portile pot fi combinate pentru a forma o memorie
de un bit care poate stoca "0" sau "1", iar memoriile de 1 bit pot fi combinate pentru a forma grupuri de 16, 32 sau 64 biti, numite registre.
Nivelul 2 este nivelul microprogram care interpretează instrucţiunile nivelului 3 şi le execută în nivelul 1. Fiecare instrucţiune a
nivelului 3 este executată de un microprogram. La nivelul microarhitecturii se afla registre, o memorie locala si un circuit numit UAL
(Arithmetic and Logic Unit) care poate executa operatii simple aritmetice si logice. UAL este o unitate combinationala cu doua intrari si o
iesire. Aici se poate distinge o cale de date, prin care circula datele, una de adrese si una de control si stare. La unele calculatoare operatiile caii
de date sunt controlate prin microprogram, iar la altele direct prin hardware. Microprogramul este un interpretor al instructiunilor nivelului
superior.
Nivelul 3 este nivelul setului de instrucţiuni al maşinii, instrucţiuni executate pe nivelul hard. numit si ISA (Instruction Set
Architecture) reprezinta primul nivel programabil de catre utilizator. Aici gasim instructiunile masina furnizate de producator, care la rindul lor
sunt interpretate sau executate prin hardware-ul de la nivelul inferior.
Nivelul 4 . Sistemul de operare este hibrid deoarece cuprinde atât instrucţiuni interpretate de nivelul patru cât şi instrucţiuni
interpretate de nivelul trei. sistemului de operare este hibrid, adica se intilnesc si instructiuni ISA si instructiuni noi ale sistemului de operare
care sunt interpretate de sistemul de operare sau direct de microprogram.
Primele trei nivele nu sunt utilizate de programatorul obisnuit, ci de programatorii de sistem care realizeaza sau intretin
interpretoarele sau translatoarele pentru masina virtuala. De la nivelul 4 in sus masina virtuala este folosita de programatorii de aplicatie.
Nivelurile 2 si 3 sunt de obicei interpretate, iar de la 4 in sus translatate, desi exista si exceptii. Alta deosebire este ca limbajele primelor trei
niveluri sunt numerice (i.e. Sunt alcatuite din siruri de numere). La nivelul 5 limbajul de programare se numeste de asamblare si reprezinta o
scriere simbolica pentru nivelul inferior. Programul care interpreteaza limbajul de asmblare se numeste asamblor.
Nivelul 5 este nivelul limbajului de asamblare, destinat programatorilor de aplicaţii. Dacă primele niveluri erau interpretate, acesta este
translatat de către un program numit asamblor.
Nivelul 6 este nivelul de limbaj înalt. Programele scrise în acest nivel sunt translatate către nivelele cinci şi şase de către programe
specializate numite compilatoare. limbaje de nivel inalt (HLL = High Level Language) si sunt realizate pentru programatorul de aplicatii. Aici
gasim: C, C++, Pascal, Prolog, Java, LISP, etc. Aceste limbaje sunt traduse prin translatoare numite compilatoare (exista si exceptii: Java este
interpretat).
Nivelul 7 conţine limbaje destinate unor domenii foarte speciale cum ar fi proiectarea asistată, administraţia, grafica etc.
Arhitectura Calculatoarelor
T.5 –Procesorul
Cipul microprocesorului. Unităţi funcţionale. Unitatea centrală de prelucrare. Caracteristicile microprocesorului. Istoric al
evolutiei microprocesoarelor. Caracteristicile ultimelor microprocesoare. Exemple de microprocesoare – Intel. UltraSPARC II.
INTEL 8086. ARHITECTURA ŞI FUNCŢIONAREA UCP. Descrierea unităţilor funcţionale. Caracteristici arhitecturale. Schema
generală a unui microprocesor 8086 Modelul programatorului de asembler. Ciclul instrucţiune. Registrele microprocesorului
Adresarea memoriei. Segmentarea memoriei. Formatul instrucţiunii. Moduri de adresare
Scopul Lecției: De a face cunoștință cu istoricul dezvoltării microprocesoarelor. Caracteristicile lor de bază și
Schema generală a microprocesorului i8086
Studentul trebuie să cunoască:
§ Noțiunea de microprocesor
§ Caracteristicile microprocesoarelor
§ Arhitectura și funcționarea i8086
§ Modelul programatorului asembler
§ Registrele microprocesorului i8086
§ Segmentarea memoriei. Formatul instrucţiunii. Moduri de adresare

Conf. Univ. Dr. Crețu Vasilii


Cipul microprocesorului
Microprocesorul este “creierul” calculatorului. El este o unitatate centrală de procesare încorporată într-o singură pastilă de circuit
integrat (un cip sau chip) care citeşte instrucţiunile unui program depus în memoria principală, le decodifică şi le execute
secvenţial (una după alta).

Cipurile microprocesor comunica cu lumea exterioara prin pini. In


functie de directia pe care circula semnalele acestia se clasifica in:
- pini de intrare – prin care microprocesorul primeste semnale de la
celelalte unitati functionale ale sistemului de calcu
- pini de iesire – prin care microprocesorul transmite semnale celorlalte
unitati functionale
- pini de intrare/iesire – prin care microprocesorul poate primi si
transmite semnale.

In functie de tipul datelor vehiculate prin pini avem:


- pini de adresa
- pini de date
- pini de control (magistrala, intreruperi, semnalizare, etc.)
pini de stare
- pini de alimentare si masa
Unităţi funcţionale
Unitatile functionale componente ale microprocesoarelor actuale sunt:

CPU (Central Processing Unit) – unitatea centrală de prelucrare. Reprezintă unitatea de procesare (execuţie) a instrucţiunilor,
aritmetica numerelor întregi şi de coordonare a întregului sistem.

FPU (Floating Point Unit) – unitatea în virgulă mobilă, specializată în aritmetica numerelor reale reprezentate în format virgulă
mobilă (standard IEEE 754)

MMU (Memory Management Unit) – unitatea de gestiune a memoriei, realizează automat gestiunea memoriei.

MMX (MultiMedia eXtension) – unitate multimedia specializată în prelucrări grafice


Unitatea centrală de prelucrare
CPU include următoarele unităţi funcţionale:

- UAL (Unitatea Aritmetica si Logica) reprezinta o unitate combinaţională cu două intrări şi o ieşire care executa operaţii
aritmetice si logice.
- UC (Unitatea de Comanda) este unitatea functionala care programează execuţia secvenţială a tuturor operaţiilor necesare
efectuării instrucţiunilor, generând semnale de comandă pentru tot sistemul, dirijând fluxul de date, corelând viteza de lucru a
unităţii centrale de prelucrare cu memoria, etc.. Activitatea unităţii de comandă este pilotată de un semnal de ceas a cărui
frecvenţa este acum de ordinul sutelor de MHz.

- Registrii Aceştia reprezintă elemente de memorare în care se stochează temporar date sau adrese. Unii sunt folosiţi pentru
urmărirea execuţiei instrucţiunilor (registrul contor de program), alţii sunt folosiţi în calcule (regiştri cu scop general), altul
păstrează starea programului în execuţie (registru de stare), alţii pentru calculul adreselor de memorie (regiştri de adresă). Aceştia
reprezintă cea mai rapidă formă de memorie din sistem fiind direct conectaţi la UAL.

Efectuarea transferurilor de date şi comenzi intre unitatile functionale ale microprocesorului se face pe magistrala internă de
date a microprocesorului. Semnalele electrice prin care microprocesorul dă comenzi de execuţie către memorie şi către celelalte
componente din sistem se numesc semnale de comandă. Semnalele electrice prin care microprocesorul culege informatii privind
starea componentelor din sistem se numesc semnale de stare.
Lungimea (numărul de biţi) regiştrilor interni se corelează de obicei cu lăţimea (numărul de linii) ale magistralei de date. Aceasta e
măsura numărului de biţi ai microprocesorului. Microprocesoarele cu structură fixă sunt de 8,16,32,64 biţi. Lungimea
de cuvânt a microcalculatoarelor realizate cu microprocesoare « bit slice » (felii de bit), a căror structură e flexibilă, va fi un
multiplu întreg al numărului de biţi ai unei felii. Registrul de adrese, respectiv lăţimea magistralei de adrese defineşte spaţiul de
memorie adresabil direct de microprocesor. O magistrală de adrese de 16 biti permite adresarea a 216=65536 celule distincte, iar 20
linii de adresă ne duc în lumea megaocteţilor: 220=1.048.576 celule adresabile.

Memoria adresata direct de microprocesor se poate impartii in memorie program si memorie de date. Memoria program contine
instructiuni executabile de catre microprocesor, iar memoria de date date utilizate de instructiunile programului.
Datele utilizate in program pot fi adrese (de adresare) sau date stocate in memorie (adresate).

Caracteristicile microprocesorului :
• Frecventa ceasului
• Laţimea magistralei de date
• Laţimea magistrala de adrese
• Setul de instructiuni
• Arhitectura UCP
Istoric al evolutiei microprocesoarelor
Microprocesoare INTEL
1964 Gordon Moore – enunt lege “numarul de tranzistori planari pe pastiala de siliciu se dubleaza anual”
⇒1986 primul CI pe 222 elemente (de 4 biti)
firma Intel a luat fiinta (Robert Noyce  Gordon Moore)
1968
inventator al CI
1969 primul RAM static – INTEL
1970 primul RAM dynamic – INTEL
- primul microprocessor – INTEL 4004 pe 45 date, 125 adrese, ceas de 740 KHz, PMOS
- primul EPROM – avantajul posibilitatii stergerii informatiei cu raze ultraviolete TED HOFF - inventator al
1971
microprocesorului
- microprocesorul a fost privit ca un circuit programabil ce poate inlocui logica cablata
1972 - microprocesorul 8008 Intel:
- 8 biţi date, 14 biţi adrese (16 Koct memorie adresabila), ceas 800 KHz
- set de instructiuni simple pentru operatii aritmetice (adunare, scadere) si logice pentru operanzi pe 85
- stiva implementare hardware, mica
1973-1977
- perioada specifica microprocesorului pe 8 biţi si adrese 16 biţi
- set de instructiuni extins pentru manipulare date pe 16 biţi (se pot evalua adrese)
- stiva mutata din CPU in memorie ⇒ posibilitatea de manipulare a subrutinelor imbricate
- limbaj de programare  limbaj de asamblare
- posibilitate de utilizare a perifericelor specializate in aritmetica intregilor extinsa pe axa numerelor reale in format VM
 dar acestea aveau viteza mica ⇒ consumuri suplimentare (overhead) mari
- reprezentant tipic microprocesorul 8080 (1974) :
- domenii de aplicatie : sisteme in timp real, sisteme pentru conducerea proceselor industriale
- tehnologii de realizare NMOS ⇒ viteza mare ceas 2- 4 MHz ⇒ viteza mare de executie a instructiunilor
- alte microprocesoare – Intel 8085, Z80 (ZILOG)
- Intel 8086 - 16 biţi date, 20 biţi adrese, ceas 4 – 8 MHz
- intel 8088 - compatibil cu circuite existente la acea vreme(1979)⇒ idem 8086 dar date pe 8 biţi

Caracteristicile microprocesoarelor de la inceputul anilor ’80

- extinderea lungimii cuvintelor de date la 16 biţi si adrese 20 biţi (1 Moct adresabil)


- aritmetica numerelor intregi extinsa la 32 biti (usurinta in manipularea adreselor)
- s-au introdus instructiuni pentru manipularea sirurilor cu lungime variabila de biti
- s-a perfectionat mecanismul CALL/ RETURN, cu posibilitati sporite de implementare a limbajului HLL si recursive
- au aparut noi tipuri de coprocesoare pentru prelucrarea in VM
- avans in tehnologia de realizare CMOS
1982 - Intel 286 –16 biţi date, 24 biţi adrese (16 Moct), ceas 6 ÷ 16 MHz
1984 - apare primul calculator PC AT cu microprocesor 286 la baza
- cea mai importanta facilitate – cea legata de protectia memoriei ceea ce presupune o organizare hardware speciala
destinata oferirii de suport pentru taskuri specifice sistemului de operare
- s-au dezvoltat noi tipuri de aplicatii :
- legate de calculatoarele personale
- statii de lucru CAD
- sisteme functionand cu divizarea timpului (time sharing)
- aplicatiile datorita gradului de paralelism oferite in executia instructiunilor se scriu in limbaje de nivel inalt (HLL)
- posibilitatea accesarii de memorie virtuala – implementat deocamdata software ptr MMU
1985 - Intel 386 - 32 biţi date
- cu FPU integrat pe cip
- cache – incorporat
1989 - Intel 486 - viteza > 386
- cu FPU integrat pe cip
- cache – incorporat
1993 - Pentium - frecventa 60 – 233 MHz
- 2 benzi de asamblare
- componenta MMX – unele modele mai noi
1995 - Pentium Pro - memorie intermediara pe 2 nivele incorporata 150 – 200 MHz
1997 - Pentium II - Pentium PRO+ MMX
- >233 MHz → Celeron – performanta scazuta
→ Xeon – profesional
1999 - Pentium III - 400 - 700 MHz
2000 - Pentium IV (Itanium)
- frecventa > 1,4 GHz
- arhitectura Netburst (suport pentru Internetul vizual)
- ALU – se numeste Rapid Execution Engine
- se prelucreaza comenzi la jumatate de ciclu de tact
- Pentium IV la 1,4 GHz = 3x mai rapid la Pentium III la 1000 MHz = 7% mai rapid ca Pentium III la 1400 MHz (29
milioane tranzistori)
- 42 milioane tranzistori
- support Internet → schimburi de date direct intre PC- urile utlizatorului Internet
→ strategia Nepster
Caracteristicile ultimelor microprocesoare
- bazate pe existenta a 4unitati majore :
• CPU (unitatea centrala de prelucrare)
• FPU (unitatea de prelucrare in VM)
• MMU (unitatea de gestiune a memoriei)
• MMX (unitatea multimedia)

CPU - pentru executarea lucrarilor de uz general


FPU - specializata in operatii aritmetice in VM
MMU - suport pentru functii de memorie virtuala si suport hard pentru protectia memoriei
MMX - suport pentru functii multimedia de prelucrare video si sunet
- pe langa acestea, ultimele microprocesoare mai cuprind pe placheta circuite ce inainte erau

exterioare : - controller de memorie cache


- coprocesor de periferice pentru operatii rapide de I/O
- suport pentru grafica de mare viteza
- suport pentru multiprocesare

Aria disponibila a pastilei de siliciu s-a utilizat in 2 scopuri :


1. oferirea de suport pentru implementarea sistemelor complexe de operare prin introducerea de harware specializat si
instructiuni specifice
2. executia eficienta a programelor scrise in HLL prin utilizarea unor moduri de adresare si a unor instructiuni mai complexe.
Exemple de microprocesoare – Intel
Facilitati 286 - gestiunea memoriei virtuale
speciale: - implementarea de medii protejate pentru executie
- gestiunea task-urilor in regim de multiprocesare
- gestiunea memoriei - se face de MMU integrata cu implementări speciale pentru cod, date, stiva, date
suplimentare
- teste implementate hard - privind corectitudinea accesului la memorie :
- limita segmentelor
- separarea task-urilor de cele privilegiate
- validitatea indicatorilor si operatiilor cu subrutine

386 - viteza mai mare


- facilitati de optimizare in regim multitasking si suport SO
- spatiu de adresare marit
- posibilitati de testare si depanare
486 - conducta de execuţie (pipeline)
- cache pentru date
- coprocesor aritmetic pe chip
Pentium - integrare inalta (3 milioane tranzistori si trasee ≈ 0,5 µm)
- arhitectura superscalara – prin executarea instructiunilor cu tehnologie pipeline
2 conducte in 5 trepte → prefetch
→ de code1
→ de code2
→ executie
→ writeback
⇒ mai multe instructiuni pe ciclu instructiuni sunt executate
- anumite instructiuni sunt cablate nu microcodate
- cache suportat pentru cod si date de cate 8 Koct. – ascoiative cu 2 cai pentru cautarea datelor pe 32
biti fara a baleia intreaga memorie
cache de date – foloseste 2 tehnici:
→ writeback – ce transfera datele in memoria principala numai cand sunt solicitate prin metoda write
though – se transferau de cate ori erau rescrise in cache ⇒ performanta sistemului prin reducerea
utilizarii magistralelor
→ protocolul MESII (Modified Exclusive Shared Invalid) – pentru consistenta datelor
- predictia Branch – ce se refera la salturile pentru continuarea executiei unei branch sau iesirea din el si
se bazeaza pe predictia ca branch-ul anterior se va folosi din nou. Se folosesc doua buffere de prefetch
→ unul realizeaza prefetch-ul pentru urmatoarea instructiune
→ altul pentru adresa de la inceputul buclei
- FPU incorporat de mare performanta cu 8 trepte de conducta (3 trepte pentru instructiuni in VM sunt
adaugate celor 5 trepte ale conductelor intregilor)
- functiile comune + , *, / sunt cablate
- magistrale de date de 64 biti
- e implementat ciclul de magistrala in conducta (bus cycle pipeling) – pentru cresterea latimii de banda
a magistralei permite inceperea unui al doilea ciclu cand primul nu s-a terminat ⇒ memoria are mai
mult timp pentru decodificarea adresei → se poate folosi cu componente mai lente
- are 2 buffere pentru scriere corespunzator fiecarei conducte
- integritatea datelor prin protejarea si asigurarea integritatii lor. E asigurata de integrarea a doua
caracteristici
→ detectia erorilor interne – prin biti de paritate in memoria interna
→ testarea redundantei functionale FRC (Functional
Redundancy Check) – prin folosirea a 2 Pentium, unul master, altul checker (verificator), iesirile sunt
comparate si diferit anuntate
- suport pentru multiprocesare sporit prin:
→ controller de intreruperi pe chip
→ modul de lucru dual procesor - in care doua procesoare impart memoria cache secundara
- suport de paginare sporit (4 Koct. sau mai mult) pentru scaderea swapping-ului
Arhitectura - unitati componente :
CPU - IU – Instruction Unit - decodificare instructiuni si stocare in sirul de instructiuni
decodificate
- EU – Execution Unit – 8 registrii de uz general pentru manipulare date, adrese
……
MMU Memory Manager Unit
- SU – Submit Unit
- PU – Page Unit – pagina de 4 Koct. suprapuse peste segmente
BIU Bios Interface Unit
FPU Float Point Unit
Registre - de uz general
- segement
- flag-uri
- IP
- comanda CR∅ ÷ CR3
- adresa interna
- depanare
- testare TR6, TR7
Moduri de lucru → real
→ protejat
Tipuri de date - bit
- camp de biti
- intreruperi pe 16, 32, 64 biti
- offset 16, 32 biti
- indicator : selector + offset
- ASCII
- BCD impartit , neimpartit
- VM
directa prin registrii G(g)
cu autoincrementare M(M(PC)) ; PC=PC+1
imediata M(PC) ; PC=PC+1
Moduri de adresare
indirecta prin registrii M(G(g))
indirecta bazata cu deplasare M(G(g)+d)
indirecta bazata indexata M(G(g1 )+ G(g2)*Sb*N) unde
N= 0, 1, 2, 4
UltraSPARC II
1970 - Andy Bachtolsheim – la Univerisitatea Stanford a realizat prima statie de lucru in retea numita SUN 1 (Standford
University Network) → cu microprocessor
1982 - fondare Sun Microsystem SUN2, SUN3 – folosesc microprocessor Motorola
- cu placa de retea conexiune Ethernet, soft TCP/ IP
1987 - Sun realizeaza primul UCP propriu cu tehnologii RISC II numit SPARC (Scalable Processor ARChitecture = arhitectura
scalabila de procesor)
masina pe 32 biti la 36 MHz
instructiuni pentru intregi
1995 - UltraSPARC – versiunea 9 (V9)
- pe 64 biti
- prelucrare, imagini si semnale audio/video
- set de noi instructiuni numite VIS = Visual Instruction Set
- destinat aplicatiilor profesionale ca servere Web mulltiprocesor cu zeci de UCPuri si memorie fizica de ordinul 2 TB
(1 terabyte = 1012 octeti)
UltraSPA cu frecventa crescuta de ceas
RC I –
UltraSPA
RC II –
Cipuri PicoJava
- Sun defineste o masina virtuala numita JVM cu memorie de 32 biti, 226 instructiuni.
- exista compilator care compileaza ptr JVM.
- exista interpretor pentru masina compilatoare
(compilare + executie)

majoritatea browserelor au interpretor Java pentru a executa appleturi


- exista cipuri JVM hardware – pe care lucreaza direct programe executabile JVM fara a
necesita interpretare sau compilare

firma Sun – PicoJava II


INTEL 8086
ARHITECTURA ŞI FUNCŢIONAREA UCP
Componente funcţionale
UCP include următoarele unităţi funcţionale:

- UAL (Unitatea Aritmetica si Logica) reprezinta o unitate combinaţională cu două intrări şi o ieşire care executa operaţii
aritmetice si logice.

- UC (Unitatea de Comanda) este unitatea functionala care programează execuţia secvenţială a tuturor operaţiilor necesare
efectuării instrucţiunilor, generând semnale de comandă pentru tot sistemul, dirijând fluxul de date, corelând viteza de lucru a
unităţii centrale de prelucrare cu memoria, etc.. Activitatea unităţii de comandă este pilotată de un semnal de ceas a cărui frecvenţa
este acum de ordinul sutelor de MHz.

- Registrii Aceştia reprezintă elemente de memorare în care se stochează temporar date sau adrese. Unii sunt folosiţi pentru
urmărirea execuţiei instrucţiunilor (registrul contor de program), alţii sunt folosiţi în calcule (regiştri cu scop general), altul
păstrează starea programului în execuţie (registru de stare), alţii pentru calculul adreselor de memorie (regiştri de adresă). Aceştia
reprezintă cea mai rapidă formă de memorie din sistem fiind direct conectaţi la UAL.

Efectuarea transferurilor de date şi comenzi intre unitatile functionale ale microprocesorului se face pe magistrala internă de date
a microprocesorului. Semnalele electrice prin care microprocesorul dă comenzi de execuţie către memorie şi către celelalte
componente din sistem se numesc semnale de comandă. Semnalele electrice prin care microprocesorul culege informatii privind
starea componentelor din sistem se numesc semnale de stare.
Lungimea (numărul de biţi) regiştrilor interni se corelează de obicei cu lăţimea (numărul de linii) ale magistralei de date. Aceasta e
măsura numărului de biţi ai microprocesorului. Microprocesoarele cu structură fixă sunt de 8,16,32,64 biţi. Lungimea de cuvânt a
microcalculatoarelor realizate cu microprocesoare « bit slice » (felii de bit), a căror structură e flexibilă, va fi un multiplu întreg al
numărului de biţi ai unei felii.
Registrul de adrese, respectiv lăţimea magistralei de adrese defineşte spaţiul de memorie adresabil direct de microprocesor . O
magistrală de adrese de 16 biti permite adresarea a 216=65536 celule distincte, iar 20 linii de adresă ne duc în lumea
megaocteţilor: 220=1.048.576 celule adresabile.
Cuvantul instuctiune contine un numar de biti ce exprima cimpul codului operatiei (OPCODE) si un cimp corespunzator valorii
sau adresei operandului.

Funcţionarea UCP

Programul executat de microprocesor se află stocat în memorie în format codificat. Fiecare instrucţiune este codificată
corespunzător formatului anterior specificat (OPCODE şi operand). Instrucţiunile sunt memorate în ordinea de execuţie. Un
registru special păstrează ordinea de execuţie a instrucţiunilor prin adresa urmatoarei instrucţiuni de executat. Acesta este
registrul contor de instrucţiuni, numit şi PC (Program counter) sau numărător de adrese. Pentru executarea unui program, PC
se încarcă cu adresa primei instrucţiuni de executat. Acestă adresă este trimisă către memorie pentru a se obţine codul
instrucţiunii de executat. Pentru menţinerea liniilor de adresă pe durata citirii memoriei se foloseşte un registru tampon de
adrese AB (Address Buffer). Informaţia codificată, citită din memorie este depusă într-un registru tampon de date DB
(Data Buffer). Liniile electrice pe care se generează cuvântul binar de adresă formează magistrala de adrese, iar cele
dedicate datelor citite/scrise din memorie magistrală de date.
Din bufferul de date, instrucţiunea de executat se
încarcă în registrul de instrucţiuni (RI) şi PC se
incrementează/actualizează automat păstrând adresa
următoarei instrucţiuni de executat. RI păstrează
instrucţiunea pe toată durata ei. Codul operaţiei
(OPCODE) se transmite decodificatorului de
instrucţiuni pentru identificare şi apoi unităţii
de comandă pentru execuţie. Câmpul operand conţine
valoarea operandului, adresa sau alte informaţii
necesare pentru obţinerea valorii acestuia. In funcţie de
necesităţi valoarea din acest camp este transmisă în
sistem sau unităţii de comandă.
Când toate informaţiile necesare sunt disponibile,
unitatea de comandă execută instrucţiunea şi adresa
urmatoarei instrucţiuni este transmisă din PC pentru
executare.
Descrierea unităţilor funcţionale
UAL este circuitul din structura microprocesorului care proceseaza informatia realizând operatii aritmetice si logice. Este un
circuit combinational cu doua intrari si o iesire si necesita registre de memorare temporara atât pentru intrari cât si pentru iesire.
Rezultatul operatie este stocat in tot intr-unul din registrii de intrare. Acesti registrii se numesc de tip acumulator.

1. Numaratorul de adrese (program counter, PC) pastreaza adresa locatiei care contine urmatoarea instructiune executat.
Programul este stocat in memorie ca o succesiune de instructiuni ce trebuie executate secvential de catre microprocesor. La
executarea unei instructiuni, continutul PC este automat marit cu o unitate pentru a indica urmatoarea instructiune de executat.
Exista posibilitatea de prescriere a registrului PC, i.e. se introducere a altor valori decât celor obtinute prin ordinea naturala
(salturi in program necesare in decizii si bucle). Pentru initierea unui program H incarcat PC cu adresa de inceput
corespunzatoare .Prin comanda de RESET aplicata MICROPROCESORULUI, numaratorul de programe este incarcat cu o
adresa fixata de catre producator, in general aceasta este OOOOH. Comanda RESET ( initializare) se da automat la punerea in
functiune a microprocesorului dupa
conectarea tensiunii sau se aplica din exterior.

2. Registrul de adresare a memoriei. Acest registru tampon de adresare denumit buffer de adresare e conectat la magistrala de
adresare a memoriei, sau a posturilor de I/O. Continutul registrului PC e transferat in bufferul de iesire care va aplica pe
magistrala exterioara de adresare un cuvant binar de un bit ce reprezinta adresa unei locatii de memorie sau adresa unui port de
I/E. Dar incarcarea buffului de adresare se poate face nu numai la PC, cât si de la alte elemente ale microprocesorului rezulta
ca pe magistrala de adresare se pot aplica si cuvinte de adresa diferite de continutul registrului PC. Unele instructiuni pot
incarca registrele de iesire cu o adresa rezultata din continutul lui PC la care se adauga sau se scade un numar rezultat in urma
anumitor calcule (adesea generind multiple variante de adresare).
3. Registrul de I/O (buffer I/O). Prin acest buffer de I/O se realizeaza legatura dintre magistrala de date interioara a
microprocesorului si magistrala de date exterioara a sistemului, deci vehiculeaza curentele de date si instructiuni.

4. Registrul de instructiuni, RI. Dupa ce un cuvant instructiune e adus din memorie prin bufferul de I/O pe magistrala interna a
microprocesorului. O copie a acestui cuvant va fi inscrisa in registrul de instructiuni. Registrul RI pastreaza instructiunea pe
durata executarii acesteia. O data copiata instructiunea in RI continutul numaratorului de adrese este automat incrementat cu o
unitate PC+1. Instructiunea este divizata in 2 câmpuri: câmpul codului operatiei, OPCODE si câmpul operandului(sau adresei
operandului). Bitii din codul operatiei se aplica decodificatorului instructiunii care, apoi prin unitatea de control, va genera toate
semnalele de control necesare executiei instructiunii reprezentata de codul operatiei.
Câmpul adresa operandului se aplica bufferului de adresare pentru a forma adresa din memorie unde se afla operandul necesar
operatiei.

5. Regiştri de tip acumulator Acesştia sunt regiştri, din structura µp, cu cea mai frecventa utilizare. În acestia se pătrează
operanzii expresiilor aritmetice sau logice. Rezultatul operaţiei efectuate de UAL se depune in unul din registrii de intrare,
alterand continutul vechi al registrului. Microprocesorul permite efectuarea unor operatii (cu un singur operand ) folosind aceşti
regiştri: stergerea acumulatorului (toti bitii pusi pe 0), inscrierea tuturor bitilor cu valoarea 1 , deplasarea dreapta , stânga,
complementarea continutului etc.

6. Registrul indicatorilor de conditii.Prin aceastã denumire se intelege un grup de bistabile (flaguri, fanioane) asamblate sub
forma unui registru si citite simultan vor genera împreuna cuvântul de stare al programului PSW (Program Status Words).
Bitii cuvântului de stare sunt înscrisi la valoarea 1 in urma unor teste din timpul executiei operatiilor aritmetice si logice ale
programului. Setul de instructiuni contine si instructiuni condiţionale (instructiunea se execută numai dacã fanionul respectiv e
setat). O instrucţiune condiţională e utilizată pentru realizarea unei ramificaţii (salt) in program, adică se schimbă succesiunea de
citire din ordinea naturala a instructiunilor de memorie, prin încarcarea PC cu o anumitã adresă .
Unitatea de control - e partea care supervizeaza functionarea corecta a sistemului de calcul. Comenzile generate de unitatea de
control se obtin in urma decodificarii instructiunilor, a cererilor de intrerupere (primite de la elementele microsistemului) si a
impulsului de ceas.
Modalitatile de implementare a unitatii de control sunt:
- prin microprogramare. Instructiunile reprezintă microprograme, alcătuite din microinstructiuni (inscrise intr-o memorie speciala)
executate prin interpretare.
- Hardware – instructiunile sunt direct executate de harware. Se spune ca unitatea de comanda este cablata.

Caracteristici arhitecturale.
Caracteristicile ahitecturale cu cele mai puternice influenţe asupra eficienţei de execuţie a programelor scrise în limbaje de nivel
înalt sunt:
• tipurile de date – deoarece ele pot fi aceleaşi su cele ale maşinii
• modurile de adresare – ele definesc mecanismul de access la date şi pot fi utilizate eficient pentru reprezentarea structurilor
complexe de date
• setul de instrucţiuni – reflectă operaţiile tipice cerute de execuţia programului
Alte caracteristici arhitecturale ale microprocesoarelor sunt:
• organizarea registrelor
• aritmetica numerelor în virgulă mobilă
• întreruperi şi capcane
• mijloace de depanare.
Schema generală a unui microprocesor 8086 Modelul programatorului de asembler
Microprocesorul 8086 are două componente:
-Unitatea de execuţie (UE);
-Unitatea de interfaţă cu bus-urile(UI)
Structura acestui microprocesor este de tip pipeline, adică este o structură în bandă de asamblare cu două segmente: UE şi UI.
UE decodifică instrucţiunile numerice, elaborează comenzi interne pentru efectuarea calculelor şi comenzi externe către cea
de-a doua unitate. UE conţine 8 locaţii de memorie internă numite registre de uz general.
UI calculează adresele de memorie şi de intrare/ieşire, transferă datele între UE şi memorie, între UE şi I/O şi transferă către
UE codurile numerice ale instrucţiunilor citite în memorie.
Cele două segmente efectuează autonom secvenţe de operaţii proprii, transferându-şi în acelaşi timp informaţii. Secvenţele de
operaţii efectuate de cele două unităţi ale microprocesorului pentru a executa instrucţiunile se numesc cicluri de instrucţiune,
pentru UE şi cicluri maşină de bus, pentru UI.
a)Structura UE
UE are componentele:
-Unitatea aritmetică-logică (UAL), în engleză Arithmetic-Logic Unity (ALU), care execută operaţii aritmetice şi logice,
deplasări şi rotaţii.
-Registrele temporare (RT), care preiau operanzii de pe bus-ul intern şi îi oferă unităţii UAL. Împreună cu UAL formează un
automat.
-Registrul de flaguri, F, care conţine indicatorii de stare ALU ai ultimei operaţii; registrul este actualizat de către ALU.
-Blocul de comandă, care decodifică codul instrucţiunii curente, preluată din coada de aşteptare Q, execută operaţia şi
elaborează comenzi externe pentru UI.
UE este complet separată de exterior, toate sarcinile privind transferul cu exteriorul revenind UI-ului.
b)Structura UI

UI conţine componentele date în continuare.


1)Blocul de interfaţă între bus-uri, care face transferurile
UE.
Are următoarele cicluri:
-cicluri de scriere memorie sau I/E (UC→MEM , I/E)
-cicluri de citire memorie sau I/E (UC←MEM , I/E)

2)Coada de aşteptare a codurilor de instrucţiuni (Q), care:


-este încărcată de către UI cu coduri de instrucţiune, numai în
momentele de timp când UE nu are transferuri de date;
-este inactivă dacă este plină sau se cer transferuri pe bus;
-este ştearsă complet dacă instrucţiunea este de salt.

3)Blocul de calcul al adreselor fizice, care include:


-registrele de segment ce conţin componenta segment a
adresei locaţiei de memorie accesată;
-registrul indicator al instrucţiunii curente (IP) cu componenta
offset a adresei instrucţiunii curente;
-unitate de deplasare-adunare pentru calculul adresei fizice din
componentele segment şi offset
Ciclul instrucţiune
Executia instructiunilor se realizeaza intr-o secventa de pasi numita ciclu instructiune.
Un ciclu instructiune este compus din mai multe cicluri masina. Ciclul esential in functionarea oricarei instructiuni este ciclul
extrage-decodifica-executa (fetch-decodeexecute).
Secventa de pasi este urmatoarea:
1. Se transfera instructiunea urmatoare (indicata de PC) in registrul de instructiuni.
2. Se schimba PC a.i. sa contina adresa urmatoarei instructiuni de executat.
3. Se determina timpul instructiunii extrase.
4. Daca in instructiune se foloseste continutul unei locatii de memorie, se gaseste.
5. Se executa instructiunea
- prin interpretare - microprogram – care este continut in memorii rapide numai pentru citire numite memorii de control in care
se stocheaza microinstructiunile) sau
- direct de catre hardware (cablat).
6. Se reia pasul 1.
Microprocesorul mai executa si alte cicluri masina:
- ciclul de citire din memorie
- ciclul de scriere in memorie
- ciclul de calcul.
Registrele microprocesorului

Registrele microprocesorului 8086 au o capacitate de 16 biţi şi pot fi clasificate în patru grupe, în funcţie de rolul pe care îl
au în execuţia instrucţiunilor.
-Registre generale.
16 biţi 8 biţi 8 biţi
-Registre segment.
-Registru indicator al adresei instrucţiunii curente IP. Ax AH AL
-Registru de flaguri,F, şi registrul IP. Bx BH BL

Cx CH CL
Registre generale
Dx DH DL
Registrele generale se impart în două seturi de registre:
-Registre de date: Ax,Bx,Cx,Dx.
-Registre de adresare: SP, BP, SI, DI.

a)Registre de date

Există patru registre de date de 16 biţi:


Ax-acumulator;
Bx-baza în adresarea datelor;
Cx-contor;
Dx-date.
Fiecare din aceste registre pot fi împărţite în două registre de 8 biţi:
Registrele de date sunt utilizate în majoritatea instrucţiunilor aritmetice şi logice. Majoritatea instrucţiunilor aritmetice utilizează în acelaşi
mod toate registrele. Există şi instrucţiuni aritmetice pentru care anumite registre generale au întrebuinţări speciale. De exemplu:
Ax - operaţii de intrare/ieşire pe 16 biţi, înmulţiri şi împărţiri pe 16 biţi;
AL - operaţii de intrare/ieşire pe 8 biţi, translaţii, aritmetice BCD, înmulţiri şi împărţiri pe 8 biţi;
AH – înmulţiri şi împărţiri pe 8 biţi;
Bx – operaţii cu memoria, adresare indirectă, translaţii;
Cx – operaţii cu şiruri, bucle program;
CL – operaţii de deplasare sau rotaţie cu mai mult de o poziţie;
Dx – operaţii de intrare/ieşire, adresare indirectă, înmulţiri şi împărţiri pe 16 biţi.

b)Registre de adresare
Sunt de două tipuri:
1)Registre indicatoare de adresă în stivă (pointer):
-SP (Stack Pointer), care conţine adresa curentă a vârfului stivei;
-BP (Base Pointer), care conţine adresa bază pentru adresarea indirectă a stivei.
2)Registre indicatoare de adrese pentru şiruri (index):
-DI (Destination Index)–conţine adresa curentă pentru şirul destinaţie;
-SI (Source Index)–conţine adresa curentă pentru şirul sursei.
Registrele de adresare pot fi utilizate şi pentru anumite instrucţiuni aritmetico-logice.
Registrele pointer conţin componente offset ale adreselor de stivă (adresele relative în segmentul de stivă curent) .
Registrul BP poate fi utilizat şi pentru adresarea în cadrul altor segmente.
Registrele index conţin componente offset ale adreselor variabilelor (adrese relative în segmentul de date curent). Ele sunt utilizate ca
registre de adresare şi instrucţiunile de transfer sau prelucrări de şiruri de caractere. În acest ultim caz registrul SI conţine adresa relativă curentă a
şirului destinaţie în cadrul segmentului de date curent (DS), iar DI conţine adresa relativă curentă a şirului sursă în cadrul segmentului de date
suplimentar (ES).
Registrele segment

Spaţiul de memorie pe care poate să-l adreseze un microprocesor 8086 este împărţit în segmente logice de lungime 64KO.
Există patru registre segment:
-CS (Cod Segment), care conţine componenta segment a adreselor codului (instrucţiunile programului);
-DS (Data Segment), care conţine componenta segment a adreselor variabilelor (segment date curent);
-ES (Extra Segment), care conţine componenta segment a adreselor variabilelor (segment suplimentar);
-SS (Stack Segment), care conţine componenta segment a adreselor datelor din segmentul stivă.
Instrucţiunea care urmează să fie executată se găseşte în segmentul a cărui adresă se află în registrul CS, la adresa relativă
conţinută în IP.
Conţinutul registrului DS defineşte segmentul de date curent. Toate referirile la datele din memorie, cu excepţia celor prin
registrele BP şiSP sau registrul DI în instrucţiunile pentru şiruri, utilizează în mod implicit segmentul referit de DS.
Conţinutul registrul ES defineşte segmentul de date suplimentar. Referirile la date în instrucţiunile pentru şiruri utilizează în
mod implicit segmentul referit de ES.
Conţinutul registrului SS defineşte segmentul curent al stivei. Toate referirile la datele din memorie prin registrele BP şi SP
utilizează în mod implicit segmentul referit de registrul SS.
Registrele IP şi F
Registrul indicator al adresei curente, IP (Instrucţion pointer), este un registru de 16 biţi care conţine componenta ofset a
adresei instrucţiunii în segmentul de cod curent. Programele nu au acces direct la IP, dar există instrucţiuni care îl modifică şi îl
încarcă sau îl descarcă prin stivă. Registrul de flaguri F cuprinde biţii indicatori de stare şi control, numiţi şi flaguri. Aceste flaguri
sunt utilizate pentru a memora informaţii referitoare la rezultatul unor operaţii aritmetice şi logice (OF, SF, ZF, AF, PF, CF) şi
pentru memorarea unor informaţii de control al microprocesorului (TF, DF, IF). Semnificaţiile acestor flaguri sunt date în
continuare.
-CF (Carry Flag) reflectă transportul în exterior al bitului cel mai semnificativ al rezultatului operaţiilor aritmetice. CF=1
înseamnă un transport la operaţia de adunare. CF mai este modificat la operaţiile de rotaţie şi deplasare.
-PF (Parity Plag) este indicator de paritate, el fiind 1 dacă rezultatul are paritate pară; de asemenea acest indicator este utilizat şi
de instrucţiunile de aritmetică zecimală.
-AF (Auxiliary Cary Flag) este indicator de transport auxiliar şi este 1 dacă a fost transport de la jumătatea de octet inferioară la
jumătatea de octet superioară; este utilizat la instrucţiunile de aritmetică zecimală;. -ZF (Zero Flag) este indicatorul de zero, având
valoarea 1 dacă rezultatul operaţiei a fost zero;
-SF (Sign Flag), indicatorul de semn, este 1 dacă cel mai semnificativ bit al rezultatului este 1, adică, în reprezentarea numerelor
în complement faţă de 2, rezultatul este negativ.
-OF (Overflow Flag), indicatorul de depăşire aritmetică, a gamei de valori posibil de reprezentat, este 1 dacă dimensiunea
rezultatului depăşeşte capacitatea locaţiei memoriei.
-IF (Interrupt Flag), indicatorul de validare a întreruperilor, este 1 dacă se pot valida întreruperile externe mascabile şi 0 dacă
întreruperile externe sunt invalidate. De remarcat că acest flag nu afectează întreruperile interne sau pe cele externe nemascabile.
DF (Direction Flag) este utilizat de instrucţiunile pe şiruri de caractere şi specifică direcţia de parcurgere a lor:
0 – de la adrese mici spre adrese mari; 1 – de la adrese mari spre adrese mici.
-TF (Trace Flag) este utilizat pentru controlul execuţiei instrucţiunilor în regim pas cu pas în scopul depănării programelor. Dacă
este 1, după execuţia fiecărei instrucţiuni se va genera un semnal de întreruperi intern.
Adresarea memoriei. Segmentarea memoriei.

Intel 8086 poate adresa un spaţiu de memorie din memoria principală (MP) de 1 Moctet. Conform convenţiei INTEL, datele formate din mai
mulţi octeţi sunt memorate cu octetul cel mai semnificativ la locaţia de adresă cea mai mare, adică octetul cel mai puţin semnificativ este memorat
la adresa cea mai mică.
Intel 8086 vede memoria principală organizată ca un grup de segmente. Un segment este un bloc de memorie de dimensiune 64 Kocteţi.
Fiecare segment poate fi accesat, în scriere sau în citire, în mod independent.
Procesoarele pot lucra în două moduri: modul real şi modul protejat.
În modul real procesoarele adresează memoria principală printr-o adresă fizică directă.
În modul protejat, procesoarele adresează memoria principală ca pe o memorie virtuală. O adresă virtuală este, de fapt, un nume pentru o
locaţie de memorie pe care procesorul o translatează într-o adresă fizică corespunzătoare. O adresă virtuală are două componente: o adresă de bază
(segment) şi un deplasament (ofset). Notaţia consacrată pentru adresa logică este:
Segment : offset
Trecerea de la adresa logică la adresa fizică se face astfel:
Adresa logică → adresă fizică
Adresă fizică = segment x 10(+) + offset
Înmulţirea cu zece a unui număr în …. înseamnă deplasarea spre stânga cu o poziţie. Exemple:
1) adresa logică ABC4 : EFB8
adresa fizică = ABC40 + EFB8 = BACF8
1) adresa logică AB00 : CD00
adresa fizică = AB000 + CD00 = B7D00
Această adresă fizică este calculată în UI în funcţie de modul de adresare.
Structura pe segmente a memoriei face posibilă scrierea unor programe care sunt independente de poziţia lor în memorie, adică sunt
relocabile dinamic. Pentru ca un program să fie relocabil trebuie să fie scris astfel încât să nu altereze registrele sale segment şi să nu facă
transferuri directe de la o locaţie în afara segmentului de cod. Aceasta permite programului să fie mutat oriunde în memoria disponibilă, atâta timp
cât registrele segment sunt actualizate cu noua adresă de bază.
Formatul instrucţiunii
Instrucţiunile, codificate în binar, pot ocupa în memorie de la 1 la 6 octeţi. Codul instrucţiunii este format din:
-codul operaţiei care ocupă 1 sau 2 octeţi şi care specifică:
-tipul operaţiei;
-tipul operanzilor (8 sau 16 biţi);
-sursa operanzilor (internă sau externă);
-destinaţia rezultatelor operaţiilor ALU;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 OFFSET
-modul de calcul al EA;
-operanzii de tip imediat: date şi adrese. COD OPERAŢIE D W MOD REG R/M

Formatul instrucţiunii cu cod pe un octet.


Semnificaţiile câmpurilor din figura. sunt date în continuare.
D – destinaţie. Specifică direcţia rezultatului în combinaţie cu câmpurile MOD şi R/M.
W – word. Specifică tipul de transfer. W = 0 înseamnă transfer pe un octet iar W = 1, transfer pe 2 octeţi (1 cuvânt).
MOD este o codificare a modului de calcul al adresei efective sau lungimea deplasamentului. Este utilizat pentru a determina
adresa efectivă împreună cu câmpul r/m. registru
r/m
MOD = 1 1, câmpul r/m este un câmp de registru cu următoarele semnificaţii: (w=0)
cuvânt
(w=1)
octet
MOD = 00, câmpul deplasament nu este prezent
MOD = 01, câmpul deplasament are 8 biţi (low) 000 Ax AL
MOD = 10, câmpul deplasament are 16 biţi. 001 Cx CL
010 Dx DL
011 Bx BL
100 SP AH
101 BP CH
110 SI DH
111 DI BH
R/M conţine:
-adresa unui registru (pentru MOD=11)
-o codificare utilizată pentru calculul adresei efective.
R/M Adresa efectivă
000 BX + SI + deplasament
001 BX + DI + deplasament
010 BP + SI + deplasament
011 BP + DI + deplasament
100 SI + deplasament
101 DI + deplasament
110 BP + deplasament
111 BP + deplasament

Unitatea de execuţie (UE) are acces la operanziiimediaţi şi de registre; când este nevoie de un operand de memorie, se transmite
la UI deplasamentul acestuia şi registrul de segment IC determină adresa fizică a operandului în funcţie de modul de adresare.
Moduri de adresare
Există, în principal, cinci moduri de adresare.

Adresare directă
Adresa efectivă (AE) a operandului este reprezentată de deplasamentul conţinut în instrucţiune.

deplasament

MEMORIE

AE

+ AF
OPERAND

AS

Adresare directă. AE, adresă efectivă. AS, adresă segment. AF, adresă fizică.
Adresare indirectă prin registre

În câmpul calculat nu se află operandul, ca la adresarea directă, ci o altă adresă de operand.


Cod operaţie Deplasament

BX AE

BP

SI AF
+ OPERAND

DI

AS

Adresare indirectă prin registre.

Sintaxa instrucţiunilor în limbajul de asamblare utilizează pentru adresarea indirectă operatorul [ ]. De exemplu: mov
ax, [bx], se deplasează la adresa conţinută de bx.
Adresare indexată

La calculul adresei participă şi un registru index (SI sau DI în cazul procesoarelor 8086).
7 07 015

COD OP MOD R/M DEPLASAMENT

SI
AE
DI +

AF OPERAND
+

AS

Adresare indexată

Adresa se obţine din suma registrului index şi deplasamentul din Memorie

instrucţiune. Adresare efectivă V[6 ]

Acest mod de indexare este utilizat, în cele mai multe cazuri, V[5 ]

pentru referirea elementelor unui vector. Deplasamentul marchează Deplasament V[4 ]

începutul vectorului iar registrul index selectează elementul prin poziţia V[3 ]

sa relativă în cadrul vectorului. Deoarece toate elementele vectorului +


V[2 ]

sunt de aceeaşi lungime, prin operaţii aritmetice elementare asupra V[1 ]

registrului index se va selecta orice element. De aceea se poate Registru index


V[0 ]

specifica un factor de scală (1,2,3,4) pentru index, pentru a referi


vectori cu componente de lungime fixă de 1,2,3,4 octeţi.
Referirea vectorilor de lungime fixă în adresarea indexată.
Adresare imediată

În acest caz operandul se află chiar în instrucţiune.


OPERAND

AE

Adresare imediată.

Adresarea porturilor de intrare/ieşire


Porturile de intrare/ieşire se adresează unde aceeaşi adresă se găseşte în instrucţiune, pe 8 biţi, cu 256 de adrese.

COD OP SI AE sursă

DI AE destinaţie

Adresarea porturilor intrare/ieşire


Arhitectura Calculatoarelor
T.2 – Scurt istoric al dezvoltării calculatoarelor
Scurt istoric a dezvoltării calculatoarelor, Influenţa progresului tehnologic asupra dezvoltării calculatoarelor, Concepte
noi în evoluţia calculatoarelor

Scopul Lecției: De a face cunoștință principalele etape de dezvoltare a sistemelor de calcul determinate de
evoluția tehnologica și evoluția determinată de conceptele noi în Arhitectura Calculatoarelor

Studentul trebuie să cunoască:


§ Etapele de bază a dezvoltării calculatoarelor determinate sub forma de generații
§ Savanții care au contribuit la dezvoltarea sistemelor de calcul și formarea noțiunii de Calculator
§ Ideile de bază în Arhitectura Calculatoarelor care au condus la dezvoltarea Calculatoarelor

Conf. Univ. Dr. Crețu Vasilii


În decursul timpului, de la apariţia primului calculator şi până astăzi, dezvoltarea în acest domeniu s-a datorat celor doi factori principali:
-progresul tehnologic şi
-introducerea de noi concepţii în arhitectura calculatoarelor.
Influenţa progresului tehnologic asupra dezvoltării calculatoarelor
Generaţia zero, calculatoare mecanice,(1642-1945)
Primul care a construit o maşină de calcul funcţionabilă a fost Blaise Pascal (1623-1662) care, la numai 19 ani, a proiectat o
maşină mecanică. Maşina putea să facă numai adunări şi scăderi
Gottfried von Leibnitz (1646-1716) a contribuit, teoretic şi practic, la naşterea informaticii. El a perfecţionat maşina lui
Pascal, noua maşină reuşind să execute, pe lângă adunări şi scăderi, şi înmulţiri şi împărţiri.
Cel care poate fi considerat autorul precursorului calculatorului actual este Charles Babbage (1792-1871)
Maşina de calcul al diferenţelor (diferenţială) era o maşină specializată care, pe baza unui
algoritm, calcula tabele de numere utile în navigaţia maritimă prin metoda diferenţelor finite. Cea
mai interesantă caracteristică a acestei maşini era înscrierea rezultatelor pe o tablă de aramă
gravabilă cu o ştanţă de oţel, previzionând mediile periferice de inscripţionare de azi.

Maşina analitică avea patru componente: Ada de Lovelace


-magazia (memoria); primul programator din istoria
-moara (unitatea de calcul); calculatoarelor. În cinstea ei
-secţiunea de intrare (cititorul de cartele); limbajul de programare a fost
-secţiunea de ieşire (ieşire perforată şi imprimată). denumit ADA.
Magazia consta din 100 de cuvinte a câte 50 cifre zecimale,
fiecare fiind folosite pentru a memora variabile şi rezultate.
Moara putea accepta operanzi din magazie, pe care putea aduna,
scădea, înmulţi sau împărţi, pentru ca, în final, să întoarcă
rezultatul în magazie.
În 1930, un student german, Konrad Zuse, a construit o serie de maşini de calcul folosind relee electromagnetice.
În SUA, John Atanasoff, de la Colegiul Statului Yowa, a creat, pornind de la ideea lui Babbage, o maşină asemănătoare din
punct de vedere logic dar utilizând o altă tehnologie. Memoria era formată din capacităţi care se reîncărcau periodic, idee utilizată
astăzi la memoria dinamică RAM cu refresh. Ca şi maşina Babbage, maşina lui John Atanasoff era tributară tehnologiei şi nu a
funcţionat. Se pare, însă, că istoria a reţinut prototipul ABC (Atanasoff-Berry-Computer), Berry fiind un student a lui Atanasoff,
realizat în 1939.

George Stibitz, de la Bell Laboratories, a creat o maşină mai primitivă ca a lui Atanasoff dar care are marele merit că a
funcţionat, demonstraţia făcându-se, în 1940, la Colegiul Dartmouth.
În 1944, Howard Aiken a construit o maşină pornind de la maşina Babbage, pe care a studiat-o îndelung, creând o nouă
maşină pe bază de relee electromagnetice. Maşina avea 72 cuvinte, fiecare de câte 23 cifre zecimale, şi un timp de instrucţiune de
6 secunde. Intrarea şi ieşirea se făceau pe bază de hârtie perforată.
Generaţia întâi, maşini cu tuburi electronice (1945-1955)
Circuitele logice din generaţia întâi erau realizate cu tuburi electronice şi aveau un consum energetic foarte mare.
Principalele caracteristice ale acestor calculatoare au fost:
-memoria realizată cu tambur magnetic;
-utilizarea cititorului/perforator de hârtie;
-existenţa a 10-20 instrucţiuni simple care constituiau baza unui limbaj cod maşină.
Din punct de vedere logic nu era mare diferenţă faţă de maşina Babbage dar tehnologic se intra în era electronică.
Principalele calculatoare din această generaţie au fost:
ENIGMA, maşină realizată de Germania în timpul celui de-al doilea război mondial pentru transmiterea mesajelor codificate.
COLLOSUS, maşini fabricate de Englezi pentru
decodificarea mesajelor ENIGMA. De menţionat că la
fabricarea lor a contribuit şi Allan Turing, cunoscut mai târziu
drept creator al maşinii TURING.
ENIAC (Electronic Numerical Integrator And Computer), construit de către John Mauchley şi John Eckert (Universitatea
din Pensilvania), cu colaborarea lui John von Neumann. Era destinat rezolvării ecuaţiilor diferenţiale cu derivate parţiale şi a avut
aplicaţii în domeniul militar, la calcularea traiectoriilor balistice şi chiar la fabricarea bombei atomice în proiectul Manhatan. Avea
următoarele caracteristici:
-19000 tuburi electronice şi 1500 relee;
-30 unităţi separate care procesau datele;
-20 registre de câte 10 cifre zecimale destinate rezultatelor finale şi parţiale;
-efectua 5000 operaţii pe secundă.
EDVAC (Electronic Discrete Variable Automatic Computer), calculator cu numai
4000 tuburi electronice. Este important pentru că în echipa care l-a proiectat s-a aflat şi
John von Neumann care în 1947 a publicat principiile calculatorului modern, valabile
şi astăzi. Maşina lui von Neumann este un model de maşină universală, nespecializată,
cu următoarele elemente:
-o memorie conţinând programe (instrucţiuni) şi date;
-o unitate aritmetică şi logică(UAL);
-o unitate care permite schimbul de informaţie cu perifericele (U I/E)
-o unitate de comandă (UC).
Aceste dispozitive realizează funcţiile de bază ale unui calculator
Bazele aritecturii calculatoarelor de astazi au fost puse de John von Neumann care a realizat masina IAS. El a propus inlocuirea
aritmeticii zecimale seriale cu aritmetica binara paralela. Masina von Neumann a fost realizata de Wikes si s-a numit EDSAC
avind integrat un program memorat.
Generaţia a doua, calculatoare cu tranzistori (1955-1965)
John Bardeen, Walter Brattain şi Wiliam Shockley au inventat în 1948 tranzistorul bipolar cu joncţiune ceea ce le-a adus în
1956 Premiul Nobel pentru Fizică. Tranzitorul are aceleaşi funcţiuni ca tuburile electronice cu vid dar are avantajul de a fi
miniaturizabil.
Calculatoarele bazate pe tehnologia cu tranzistori au următoarele caracteristici:
-utilizarea diodelor şi tranzistorilor pe bază de germaniu şi apoi pe bază de siliciu ceea ce a condus la o putere disipată mai
mică, gabarit redus şi siguranţă în funcţionare;
-memorii pe inele de ferită, de 1000 de ori mai rapide decât cele din generaţia anterioară, având timpul de acces de 2-12 µs.;
-apariţia cablajului imprimat;
-apariţia echipamentelor periferice precum discul, banda magnetică, imprimanta;
-apariţia limbajelor de nivel înalt ca Fortran, Cobol, Algol.
Dintre calculatoarele din această generaţie, cele mai cunoscute sunt:

TX-0 (Tranzistorised eXperimental computer 0) realizat la MIT.


PDP-1 (Programmable Data Procesor) realizat de către DEC (Digital Equipement Corporation), având o memorie internă de
4kcuvinte a 18 biţi şi ciclul instrucţiune de 5µs., fiind echipat cu consolă monitor CRT (Cathode Ray Tube) cu posibilitatea de
control al fiecărui punct de pe ecran.
PDP-8 , cu o magistrală unică şi cu următoarele module: CPU, memorie,
consolă, dispozitive I/E. A fost primul calculator numeric comercial, de mare
serie, vânzându-se 5000 bucăţi.
CDC 6600, produs de DEC şi proiectat de Seymour Cray, viitorul proiectant al calculatoarelor Cray 1 şi Cray 2.
IBM 7094, cu memorie de 32 kcuvinte de 36 biţi şi ciclu
instrucţiune de 2µs.
Generaţia a treia, calculatoare cu circuite integrate (1965-1980)
În 1958 a fost inventat circuitul integrat de către Robert Noyl sau, după alte surse, de către Jack Kilby de la Texas
Instruments. Este vorba despre gruparea pe o pastilă de siliciu a mii şi apoi milioane de componente.. Principalele caracteristici ale
calculatoarelor din această generaţie sunt:
-utilizarea circuitelor integrate e scară redusă, cu 100 tranzistori pe chip;
-apariţia memoriilor de semiconductoare, cu timp de acces de 0,5-75µs;
-memorie externă de mare capacitate, discuri de masă şi benzi magnetice.
Sistemele de calcul din această generaţie au fost create de:
IBM, cel mai reprezentativ fiind IBM 360;
Minicalculatorul IBM 360 avea următoarele caracteristici:
-ciclul instrucţiune 250µs.;
-spaţiul de adresare de 216 octeţi (19 Mocteţi);
-registre de lucru pe 32 biţi;
-apariţia multiprogramării.
DEC, cu minicalculatoare din seria PDP 11/XX.
Minicalculatoarele PDP 11/XX aveau caracteristici
asemănătoare cu ale lui IBM , însă cuvântul era de 16 biţi (şi
apoi de 32 biţi la cele din seria VAX); raportul preţ/performanţă
era foarte bun, cel mai bun dina anii 80.
Generaţia a patra . V.L.S.I. (1980-2005)
Apariţia acestei generaţii a fost posibilă datorită perfecţionării tehnologiei integratelor. Circuitele integrate VLSI (Very Large
Scale Integration) ajung la 1 miliard de tranzistoare pe cip..
Calculatoarele din această generaţie se caracterizează prin următoarele:
-utilizarea circuitelor VLSI;
-apariţia şi dezvoltarea microprocesoarelor;
-dezvoltarea de noi tipuri de memorii (MOS, magnetice, holografice) şi echipamente periferice orientate pe sesizarea primară
a datelor;
-interconectarea calculatoarelor în reţele, însoţită de întrepătrunderea industriilor de calculatoare şi telecomunicaţii;
-apariţia şi dezvoltarea mediilor de programe complexe cu puternice facilităţi grafice.
În această generaţie au apărut la început calculatoarele personale de tip Home Computer iar apoi cunoscutele Personal
Computer, pe bază de microprocesoare; două dintre firmele cele mai importante care produl microprocesoare sunt INTEL şi AMD.
Generaţia cincia
S-a încercat o definire a generaţiei a cincia, prin formularea cerinţelor ce stau în faţa calculatoarelor la ora actuală, cerinţe
care cuprin următoarele:
-o interfaţă inteligentă care să permită dialogul pe bază de limbaj natural )voce, sunete, imagini, informaţie grafică);
-crearea unei maşini care să realizeze raşionament pentru rezolvarea problemei, fără cunoaşterea prealabilă a algoritmului;
-baze de date imense cu o căutare foarte rapidă.
calculator cuantic sau computer cuantic
Concepte noi în evoluţia calculatoarelor
În afara progresului tehnologic, concepţiile noi au condus la o dezvoltare rapidă a sistemelor de calcul.. . Noile idei sunt
legate, în primul rând, de arhitectura calculatoarelor. Menţionăm doar cele mai importante dintre ele.
Microprogramarea
În 1951, Maurice Wilkes, un cercetător de la Universitatea din Cambridge, a sugerat construirea unei maşini pe trei niveluri,
în loc de două câte erau până atunci. Noul nivel propus de Wilkes avea rolul ca setul de instrucţiuni să fie interpretat de
microprogram, în loc să fie realizat direct pe partea electronică. Acest concept, numit microprogramare, a devenit dominant
începând cu anii 70.
Inventarea sistemului de operare
A fost proiectat şi introdus cu scopul de a automatiza sarcinile operatorului de calculator. Un sistem de operare este un
program care acţionează ca un intermediar între utilizator şi partea fizică a sistemului de calcul şi permite utilizarea eficace a
componentelor unui calculator. Primul sistem de operare a fost realizat, în 1955, de către programatorii de la General Motors
Research Center care au scris un astfel de program intitulându-l „a monitor program for the IBM 701”
Un pas foarte important în cadrul dezvoltării sistemelor de calcul a fost crearea sistemelor de operare cu timesharing de
către MIT la începutul anilor 60. La sfârşitul anilor 60, se remarcă o serie de invenţii precum sistemul de operare UNIX care are
deja un sistem de fişiere sofisticat, gestiunea proceselor, interfaţă cu sistemul şi o serie de instrumente specializate în tratarea unor
sarcini specifice. Aşa cum arată numele, marca depusă UNIX desemnează începutul sistemelor compatibile.
Memoria Cache
Memoria cache a fost o idee simplă dar foarte eficientă care a mărit de zece ori viteza de calcul a unui sistem.
Legea lui Moore (legea hardware-ului)
În anul 1965, Gordon Moore , fondator al companiei Intel, obsevând că numărul de tranzistoare creştea constant, a prezis că
numărul acestora se va dubla anual. Aceasta a devenit legea lui Moore, exprimată ca dublarea numărului de tranzistoare la fiecare
18 luni. Evident acest progres tehnologic a dus la creşterea performanţelor sistemelor şi
la scăderea preţurilor.
Legea software-ului
Enunţată de Nathan Myhrvold spune că “software-ul este ca un gaz, crescându-şi volumul astfel încât să ocupe tot spaţiul pe care
îl are la dispoziţie”. Această lege indică faptul că resursele hard disponibile sunt imediat consumate de către soft, chiar mai mult
existând o cerere permanentă de resurse.
TIPURI DE CALCULATOARE
Există două direcţii importante în dezvoltarea calculatoarelor:
• CISC (Complex Instruction Set Computers) corespunzătoare calculatoarelor realizate cu microprocesoare cu arhitectură CISC.
• RISC (Reduced Instruction Set Computers) corespunzătoare calculatoarelor realizate cu microprocesoare RISC, reprezentativ
fiind microprocesorul SPARC realizat de firma Sun.

In paralel sunt dezvoltate direcţii alternative:


• Calculatoare paralele. Exemplu: reprezentativ este MIPS (Milions of Instruction Per Second) realizat la Universitatea Stanford
USA, cu arhitectură mai specială, paralela.
• Calculatoare orientate către limbaj: direcţie nouă de dezvoltare o constituie cipurile JVM (Java Virtual Machine)
Exemple de tipurile de calculatoare sunt:
• Calculatoare personale –ele se referă la calculatoarele de birou şi la agendele de lucru. Ele sunt monoprocesor şi se numesc
PC-ri (daca microprocesorul este CISC) sau staţii de lucru (dacă procesorul este RISC). Puterea lor de calcul creşte pe măsura
evoluţiei tehnologice. Pot fi echipate cu MODEM-uri pentru transmisia la distanţă.
• Server-e – Ele se referă la calculatoarele cu putere mai mare din reţea pe care se află instalat software-ul corespunzător,
deservind staţiile de lucru.
• Mulţime de staţii de lucru – numite şi Networks of Workstations (NOW), sau Clusters of Workstations (COW) – sunt
alcătuite din mai multe staţii de lucru legate prin reţele de mare viteză şi având un software distribuit pentru soluţionarea
împreună a unor probleme specifice unui domeniu.
• Calculatoarele mari - specifice sistemelor mari cu capacitate foarte mare de stocare (de ordinul teraoctetilor, 1Toct.=1012 oct.).
• Supercalculatoarele - cu UCP foarte rapide, resurse mari (memorie) şi interconectări rapide folosite pentru calcule foarte
complicate ştiinţifice.
Toate aceste calculatoare au unitatea centrală de prelucrare (CPU = Central Processing Unit) integrată pe un chip, numit
microprocesor.
Arhitectura Calculatoarelor
T.3 –Tipuri de arhitecturi ale calculatoarelor numerice
Tipuri de arhitecturi ale calculatoarelor numerice. Arhitectura von Neumann, Mașina Turing. Clasificarea
Calculatoarelor. Taxonomia Flynn, Taxonomia lui Wang, Clasificare comercială.

Scopul Lecției: De a face cunoștință cu tipurile de arhitecturi a sistemelor de calcul și clasificarea sistemelor
de calcul după diferite elemente specifice.

Studentul trebuie să cunoască:


§ Arhitectura von Neumann; Maşina Turing;
§ Clasificarea calculatoarelor după Flynn, Wang. Clasificarea Comercială
§ Trendul în arhitectura calculatoarelor

Conf. Univ. Dr. Crețu Vasilii


Arhitectura von Neumann

Într-un articol publicat în 1947, John von Neumann a expus nişte principii care stau la baza calculatoarelor moderne. Acestea
sunt:
• Existenţa unui mediu de intrare prin intermediul căruia să poată fi introdus un număr practic nelimitat de date şi instrucţiuni.
• Existenţa unei memorii în care să fie depuşi operanzii şi instrucţiunile şi de unde să fie preluate rezultatele în ordinea dorită.
• Existenţa unei secţiuni de calcul care să fie capabilă să execute operaţii aritmetice şi logice asupra datelor din memorie.
• Existenţa unui mediu de ieşire prin intermediul căruia să poată fi comunicat utilizatorului un număr nelimitat de instrucţiuni.
• Existenţa unei unităţi de comandă capabilă să interpreteze instrucţiunile citite în memorie şi, pe baza informaţiilor citite în
memorie şi a informaţiilor furnizate de secţiunea de calcul, să fie capabilă să decidă între mai multe variante de desfăşurare a
operaţiilor.
• Datele şi instrucţiunile trebuie să fie stocate în memorie sub aceeaşi formă.
Programul stocat este cel mai important bloc al modelului von Neumann. Un program Unitate de Memorie
este stocat în memoria calculatorului împreună cu datele ce sunt procesate. Înainte de
control

apariția calculatoarelor cu program stocat, programele erau stocate pe medii externe


cum ar fi cartele perforate. În calculatorul cu program stocat acesta poate fi manipulat Dispozitiv Unitate
Dispozitiv
logică
ca și cum ar reprezenta date. Aceasta a dus la apariția compilatoarelor și sistemelor de de intrare şi de ieşire

operare și face posibilă marea versatilitate a calculatoarelor moderne. aritmetică

Ca urmare, caracterizarea arhitecturii von Neuman se face prin :


- utilizarea memoriei interne pentru a stoca secvențe de control pentru îndeplinirea unei anumite sarcini – secvențe de programe;
- datele, cât și instrucțiunile sunt reprezentate ca siruri de biti și sunt stocate într-o memorie readwrite;
- conținutul memoriei se poate accesa în funcție de locatie (adresa), indiferent de tipul informatiei conținute;
- execuția unui set de instrucțiuni se efectueaza secvențial, prin citirea de instrucțiuni consecutive din memorie.
Arhitectura Harvard și avantajele sale
Atunci când se implementează microprocesoare, se folosesc în mod tradițional două abordări pentru construirea unei arhitecturi:
•Arhitectura lui Von Neumann
•Arhitectura Harvard
Arhitectura von Neumann utilizează o memorie omogenă a microprocesorului. Pot fi scrise diferite programe în această memorie.
În acest caz, un program special de încărcare funcționează împreună cu ele ca date. Apoi, controlul poate fi transferat la aceste
programe și ei încep deja să-și execute algoritmul. Cu această abordare a controlului cu microprocesor, este posibil să se obțină o
flexibilitate maximă a sistemului microprocesor.
Dezavantajul arhitecturii von Neumann este posibilitatea unei încălcări neintenționată a performanței sistemului (erori de soft) și
distrugerea intenționată a funcționării sale (atac viral). În arhitectura Harvard două tipuri de memorie microprocesor sunt
fundamental diferite:
•Memorie program (pentru stocarea instrucțiunilor microprocesorului)
•Memorie de date (pentru stocarea temporară și prelucrarea variabilelor)
Arhitectura Harvard este fundamental imposibil de a efectua o operație de scriere în memoria de program, care elimină
posibilitatea distrugerii accidentale a programului de control în cazul erorilor de program, atunci când se lucrează cu date, sau
atacuri de către terțe părți. Mai mult, pentru o memorie de program și o memorie de date sunt organizate bus de schimb de date
individuale (magistrala de sistem).
Aceste caracteristici au determinat domeniul arhitecturii Harvard. Arhitectura Harvard este folosită în microcontrolere și în
procesoare de semnale. unde este necesară asigurarea unei fiabilități ridicate a echipamentului. Semnalul de procesoare
arhitectura de la Harvard completat folosind trei-bus unitate de microprocesor de operare. Arhitectura trei bus permite unității de
operare pentru a combina operațiunile de citire două operanzi cu rezultate record ale comenzii în memoria microprocesorului.
Acest lucru sporește foarte mult performanța microprocesorului de semnal fără a crește frecvența ceasului.
Structura modificată Harvard este utilizată în jetoanele moderne ale procesoarelor de semnal. Chiar și în continuare pe calea
reducerii costului cristalului prin reducerea zonei ocupate de magistralele de sistem a mers la un singur cristal producătorii de
calculatoare - microcontrolere. Aceste cipuri folosesc un sistem bus pentru transmiterea de comenzi și date (arhitectura Harvard
modificata) si in interiorul cristalului.
Procesoarele de semnalizare necesită deseori mai multe buse interne pentru a implementa algoritmi precum transformarea
rapidă Fourier și filtrarea digitală. De obicei, sunt utilizate două magistrale de date, o magistrală de scriere a datelor și o
magistrală de citire a instrucțiunilor. O astfel de structură a microprocesorului a fost numită arhitectura extinsă a lui Harvard.
Această abordare practică producătorii de semnal procesoare - firma Analog Devices (familie de procesoare de semnal Blackfin
și Tiger Shark), Texas Instrunents (familia C5000 ™ DSP-uri de procesoare de semnal și C6000 ™ DSP-uri), Freescale (familia
DSP56K MSC8251 și procesoare de semnal).
Cum funcționează arhitectura Harvard?
Arhitectura Harvard are diferite zone de adresă de memorie pentru program și pentru date.
Acest lucru are ca rezultat capacitatea de a proiecta un circuit în așa fel încât o magistrală și un circuit de control pot fi utilizate pentru a gestiona
fluxul de informații din memoria programului și unul separat pentru a gestiona fluxul de informații către memoria de date.
Utilizarea de magistrale separate înseamnă că este posibil ca un program să fie recuperat și executat fără a fi întrerupt de transferul ocazional de
date în memoria de date.
De exemplu, într-o versiune simplă a acestei arhitecturi, unitatea de recuperare a programului ar putea fi ocupată cu recuperarea următoarei
instrucțiuni din secvența programului și în paralel efectuarea unei operații de transfer de date care ar fi putut face parte din instrucțiunea
programului anterior. .
La acest nivel, arhitectura Harvard are o limitare, deoarece în general nu este posibil să plasați codul programului în memoria de date și să îl
executați de acolo.
Adăugări în arhitectură
Multe variante existente mai complicate pot fi adăugate la forma simplă a arhitecturii Harvard.
O adăugare obișnuită este adăugarea unui cache de instrucțiuni la magistrala de date a programului, care permite unității de
execuție a instrucțiunilor un acces mai rapid la următorul pas din program, fără a fi nevoie să mergeți la o memorie mai lentă
pentru a ajunge la pas. programului ori de câte ori este necesar.
Adrese de memorie
Un computer Harvard are zone de adresă de date și instrucțiuni diferite: adresa de instrucțiuni una nu este aceeași zonă cu adresa
de date una.
Adresa de instrucțiuni 1 ar putea conține o valoare de douăzeci și patru de biți, în timp ce adresa de date una ar putea indica un
octet de 8 biți, care nu face parte din acea valoare de douăzeci și patru de biți.
Sistem de memorie
Deoarece există o zonă de memorie separată pentru instrucțiuni și date, separând atât semnalele, cât și memoria de stocare a
codului și a datelor, acest lucru face posibilă accesarea simultană a fiecărui sistem de memorie.
Avantaj
- Există mai puține șanse de corupție în transmisie, deoarece datele și instrucțiunile sunt transferate prin diferite autobuze.
- Datele și instrucțiunile sunt accesate în același mod.
- Permite diferite medii de stocare pentru instrucțiuni și date. De exemplu, puteți pune instrucțiunile într-un ROM ieftin și datele în
RAM scump.
- Cele două amintiri pot utiliza dimensiuni de celule diferite, făcând astfel o utilizare eficientă a resurselor.
- Are o lățime de bandă de memorie mai mare, care este mai previzibilă având memorii separate pentru instrucțiuni și date.
Nivel de protecție
Pe sistemele care nu au o unitate de gestionare a memoriei, oferă un nivel suplimentar de protecție, deoarece datele nu pot fi
pornite ca cod, expunând sistemul la multe probleme, cum ar fi depășirea bufferului.
De aceea este popular cu sistemele încorporate mici, cum ar fi un cuptor cu microunde sau un ceas.
Viteză mai mare
Arhitectura Harvard poate citi o instrucțiune și, de asemenea, accesa memoria de date simultan cu o viteză rapidă.
Oferă performanțe mai mari, deoarece permite obținerea simultană a datelor și instrucțiunilor pentru a fi stocate în amintiri
separate și a călători prin diferite autobuze.
O arhitectură Harvard va ajuta, în general, un computer cu un anumit nivel de complexitate să funcționeze mai repede decât o
arhitectură Von Neumann, atâta timp cât nu este necesar să partajați resursele între cod și memoriile de date.
Dacă limitările pinului sau alți factori forțează utilizarea unei singure magistrale pentru a accesa ambele spații de memorie, este
posibil ca aceste beneficii să fie anulate în mare măsură.

Dezavantaje
Complexitate și costuri mai mari
Problema arhitecturii Harvard este complexitatea și costul său mare, deoarece în loc de o magistrală de date, acum sunt necesare
două.
Producerea unui computer cu două autobuze este mult mai scumpă și consumă mult timp. Este nevoie de o unitate de control
pentru două autobuze, care este mai complicată și consumă mult timp și este costisitoare de dezvoltat.
Aceasta înseamnă o implementare mai complexă pentru producători. Necesită mai mulți pini pe CPU, o placă de bază mai
complexă și trebuie să duplice cipurile RAM, precum și un design cache mai complex.
Utilizare redusă
Arhitectura Harvard nu este utilizată pe scară largă, ceea ce face mai dificilă implementarea. Acesta este motivul pentru care este
rar folosit în afara procesorului.
Cu toate acestea, această arhitectură este uneori utilizată în CPU pentru a-și gestiona cache-urile.
Utilizarea greșită a spațiului de memorie
Când există spațiu liber în memoria de date, acesta nu poate fi folosit pentru a stoca instrucțiuni și invers.
Prin urmare, amintirile speciale dedicate fiecăruia dintre ele trebuie să fie atent echilibrate în fabricarea lor.
Maşina Turing
În 1936, matematicianul englez Allan Turing a creat un automat abstract care să opereze cu numere calculabile. Un
număr calculabil este un număr a cărei parte zecimală poate fi determinată cu un număr finit de iteraţii.
Automatul a fost sintetizat pe baza următoarelor ipoteze:
a)Automatul are un număr n finit de stări.
b)Automatul se află în orice moment într-o stare i, 1≤i≥n, urmând ca
în momentul imediat următor să se afle în starea j, 1≤j≥n.
c)Fiecare din cele n stări se caracterizează prin:
-valoarea caracteristică ei, care este o valoare curentă a
numărului ce se calculează;
-funcţia fj care aplicată stării ei permite obţinerea următoarei stări ej .
-deplasamentul dij care va trebui aplicat numărului pentru a se realiza din starea i în starea j , adică j=i+dij
-Sistemul reprezentativ (SR) sau memoria maşinii este construit dintr-o bandă magnetică de
lungime practic infinită, împărţită în segmente de lungime egală, fiecare segment putând stoca un Procesor
număr finit de semne.
-Procesorul (P) este un circuit secvenţial cu un număr finit de stări, care poate executa
următoarele instrucţiuni, (setul de instrucţiuni al maşinii):
Modelul funcţional al
-schimbă segmentul de pe bandă de la poziţia curentă;
maşinii Turing;
-poziţionează capul de citire (C ) cu o poziţie la dreapta; C S
SR-sistem reprezentativ;
-poziţionează capul de citire cu o poziţie la stânga;
C/S-cip citire/scriere.
-opreşte sistemul.
Pentru a realiza un calcul cu această maşină, se înscriu datele într-un mod convenabil şi se
descompune algoritmul de calcul, în funcţie de modul de reprezentare a datelor, într-o secvenţă de SR
instrucţiuni ale maşinii. Ultima instrucţiune este cea de oprire a maşinii. SR
Maşina Turing este compusă din următoarele piese:
• o bandă infinită de hîrtie cu pătrăţele; în fiecare pătrăţel se poate scrie exact un caracter din alfabetul nostru; banda
este iniţial plină cu ``spaţii'', mai puţin o parte (să-i spunem de început) unde este scris şirul cu datele de intrare;
• un cap de citire-scriere, care se poate mişca deasupra benzii, la stînga sau la dreapta;
• o unitate de control, care conţine un număr finit de reguli care indică maşinii ce să facă la fiecare mişcare în funcţie
de litera curentă de pe bandă şi starea în care maşina se află. Unitatea de control se află, în fiecare moment dat, într-o stare;
stările posibile sunt fixate dinainte, şi sunt în număr finit.

Fiecare regulă are forma următoare:


Dacă
• sunt în starea s1;
• sub capul de citire este litera a;
atunci:
• trec în starea s2;
• scriu pe bandă litera b;
• mut capul de citire/scriere în direcţia D.

Şi asta-i tot! Orice algoritm de calcul poate descris de o astfel de maşină, prin toate stările posibile, şi toate aceste reguli, numite
reguli de tranziţie, care indică cum se trece de la o stare la alta. În pofida simplităţii, maşina Turing poate deci calcula orice se
poate calcula cu cele mai performante supercomputere
Clasificarea Calculatoarelor
Este destul de dificil să se clasifice tipurile de calculatoare din cauza multitudinii lor. Totuşi, anumite taxonomii s-au impus.
Vom prezenta trei clasificări după arhitectură şi una strict comercială.

Taxonomia Flynn
A fost publicată în 1966 de către M. J. Flynn care avea în vedere existenţa într-un sistem de calcul a două fluxuri:
-fluxul de instrucţiuni, care reprezintă programul;
-fluxul de date, care reprezintă datele de intrare sau rezultatele parţiale.
Clasificarea lui Flynn ia în consideraţie gradul de multiplicitate ale celor două fluxuri şi identifică patru tipuri de arhitecturi:
SISD (Single Instruction Single Data)
SIMD (Single Instruction Multiple Data)
MISD (Multiple Instructions Single Data)
MIMD (Multiple Instructions Multiple Data)
SISD realizează o execuţie sequenţială a instrucţiunilor. Principalul neajuns al acestei arhitecturi este viteza de execuţie care ,
la un moment dat, este plafonată, situaţie denumită „gâtul sticlei lui Neumann” (Neumann Bottleneck). Spargerea acestei limitări
este realizată prin arhitectura paralelă. UC UP MM

Arhitectura SISD; UC-secţiunea de comandă a Unităţii


centrale; UP-secţiunea de prelucrare a Unităţii centrale; MM-
modul de memorie; FD-flux de date; FI-flux de instrucţiuni.
Arhitectura SIMD se caracterizează prin n unităţi de procesare (UP) care operează sub controlul unui flux unic de
instrucţiuni (FI) lansat de o singură unitate de comandă (UC).
Cele mai cunoscute maşini SIMD sunt calculatoarele
FD1
UP1 MM! vectoriale. Acestea transformă instrucţiuni care se execută în n
paşi într-o maşină SIMD, în instrucţiuni care se execută într-un
UP2
FD2 MM2 singur pas. De exemplu, suma a doi vectori: c[i]=a[i]+b[i]
pentru i=1…n se face într-un pas, fiecare Unitate de Prelucrare
FI
UC calculând o componentă a vectorului sumă.

UPn FDn MMn

Arhitectura SIMD;
UC-secţiunea de comandă a Unităţii centrale; UP-
secţiuni de prelucrare a Unităţii centrale; MM-moduri
de memorie; FD-flux de date; FI-flux de instrucţiuni.
MISD nu are nici un sens şi de aceea nu este utilizată.
MIMD cuprinde două feluri de maşini:
-multiprocesoare şi
-multicalculatoare.
Multiprocesoarele se caracterizează prin existenţa memoriei comune la care au acces n procesoare. Schimbul de informaţie
dintre procesoare se face prin variabilele partajate din memoria comună la care au acces toate procesoarele, însă accesul trebuie
făcut prin excludere mutuală pentru a realiza ceea ce se numeşte consistenţa memoriei.
Multicalculartoarele se caracterizeză prin existenţa unui număr foarte mare de calculatoare ( de la ordinul sutelor în sus) care
sunt legate printr-o reţea topologică. Fiecare procesor are memoria lui locală, văzută doar de el, iar comunicarea între procesoare
se face prin mesaje.
Taxonomia lui Wang (Feng) (Цзе-юнь Фэн)

Această clasificare presupune o organizare matricială a datelor. O matrice de dimensiunea m x n are m cuvinte, fiecare
cuvânt are o lungime de n biţi. Criteriul de clasificare este gradul de paralelism în procesarea datelor organizate matricial.
Conform acestui criteriu există patru tipuri de arhitecturi şi anume:
-WSBS (Word Serial-Bit Serial) în care se lucrează pe un singur cuvânt, fiecare cuvânt fiind prelucrat serial bit cu bit, ns1,
ms1….
-WSBP (Word Serial-Bit Paralel) în care se lucrează pe un singur cuvânt , biţii fiecărui cuvânt fiind prelucraţi simultan,
n>1, ms1.
WPBS (Word Paralel-Bit Serial) în care se lucrează pe un singur bit la toate cuvintele simultan, ns1, m>1.
-WPBP (Word Paralel-Bit Paralel) în care se lucrează simultan pe toate cuvintele şi pe toţi biţii, n>1, m>1.
WSBS nu are elemente de paralelism.
WSPB şi WPBS sunt parţial paralele, fiind orientate pe prelucrarea vectorilor.
WPBP este complet paralel.
Taxonomia lui Shore

Spre deosebire de Flynn, Shore şi-a bazat clasificarea pe modul în care este
organizat calculatorul din părţile sale componente. Din acest punct de vedere, au fost
identificate şase tipuri de maşini, fiecăreia atribuindu-se o cifră romană.
Maşina I are o arhitectură convenţională von Neumann, cu următoarea structură:
-unitate de comandă (CU)
-unitate de procesare (PU)
-memorie pentru instrucţiuni (IM) Maşina I Shore.
-memorie pentru date (DM)
O citire a DM produce toţi biţii unui cuvânt, care sunt prelucraţi în paralel de PU,
PU putând conţine mai multe unităţi funcţionale.
Această clasă include calculatoare vectoriale, de exemplu CRAY 1.

Maşina II este similară maşinii I, cu deosebirea că, în timp ce maşina I citeşte slice-
uri orizontale, maşina II citeşte un slice vertical.

Exemple de calculatoare de tip maşina II Shore : ICL, DAP, STARAN etc.

Maşina II Shore
Maşina III este o combinaţie a maşinilor I şi II. Un exemplu de astfel de maşină
este calculatorul ortogonal Shooman(1970)

Masina IV se obţine prin multiplicarea unităţilor PU şi DM din maşina I şi prin


trimiterea acestui ansamblu de la o singură unitate de control UC. Exemplu: PEPE.

Maşina Veste exact maşina IV cu facultatea suplimentară că unităţile PU sunt


aşezate pe o linie şi se asigură conexiuni între vecinii cei mai apropiaţi; fiecare PU
poate adresa informaţii din memoria sa dar şi din cea a vecinilor săi imediaţi. Este un
masiv conectat. Exemplu: ILIA CIV.

Maşina III Shore


Maşina VI este denumită maşina cu logica în memorie. Este o
abordare alternativă a distribuirii comenzii în memorie.
Exemplu: calculatoare cu memorii asociative.

Maşina VI Shore Maşina IV Shore


Clasificarea Tanenbaum

Clasificarea calculatoarelor paralele (Tanenbaum)


MPP = procesoare masiv paralele (Massive Parallel Processors)
COW = cluster de staţii de lucru (Cluster Of Workstations)
Clasificare comercială

Dacă primele trei clasificări erau strict legate de arhitectură, clasificarea următoare are ca punct de vedere piaţa de
calculatoare. Sistemele de calcul pot fi:
-calculatoare personale;
-servere;
-sisteme dedicate.
Calculatoarele personale sunt cele mai populare. Au cel mai mic cost şi în ultimii ani s-au produs 150-200 milioane pe an.
Preţul lor nu depăşeşte suma de 10000 dolari.
Serverele sunt destinate să ofere servicii tot mai sofisticate de reţea. Costul lor este de 10.000 – 10.000.000 dolari. În ultimii
ani s-au produs aproximativ 4 milioane servere pe an.
Sistemele dedicate sunt construite pentru anumite aplicaţii speciale. Costul lor este de 10.000-100.000 dolari.
Caracteristica generală a unui calculator include următoarle date:
- viteza de operare;
- capacitatea memoriei interne;
- componența, capacitatea și timpul de acces ale unităților de memorie externă;
- componența și parametrii tehnici respectivi ai echipamnetelor periferice;
- parametrii de bază și gabarit;
- costul.
În funcție de aceste date, calculatoarele moderne se clasifică în 4 categorii:
supercalculatoare;
calculatoare mari (macrocalculatoare);
minicalculatoare;

Supercalculatoarele pot executa peste 10 bilioane de operații pe secundă, iar prețul lor depășește
20 de milioane de dolari. Cercetări și proiectări în industria supercalculatoarelor se realizează în
SUA și Japonia de firmele Gray Reseach, Fujitsu EAT Systems, Sutherland etc,
Supercalculatoarele se utilizează în prelucrări extrem de complexe ale datelor în aeronautică, fizica
nucleară, astronautică, seismologie, prognoza meteo etc

Calculatoarele mari pot executa 1 bilion de operații pe secundă, prețul variind între 20 de
mii și cîteva milioane de dolari. Calculatoarele mari includ zeci de unități de disc magnetic și
imprimante, sute de console aflate la diferite distanțe de unitatea centrală. Aceste
calculatoare se urtilizează în cadrul unor mari centre de calcul și funcționează în regim non-
stop. Pricipalele firme producătoare de calculatoare mari sînt IBM, UNYSIS,
HONEYWELL etc.
Minicalcultoarele pot efctua sute de milioane de operații pe secundă, iar prețul lor nu depășește 200-
300 de mii de dolari. Echipamentele periferice ale unui minicalculator includ cîteva discuri magnetice,
una sau două imprimante, mai multe console. Minicalculatoarele sînt mai ușor de utilizat și operat decît
calculatoarele mari și se utilizează în proiectarea asisată de calculator, în automatizări industriale,
pentru prelucrarea datelor în experimentele științifice etc. Dintre firmele producătoare de
minicalculatoare vom remarca IBM, Wang, Texas Instruments, Data General, DEC, Hewlett-
Packard etc.
Microcalculatoarele, denumite și calculatore personale, sînt realizate la prețuri scăzute - între 100 și
15000 de dolari și asigură o viteză de calcul de ordinul milioanelor de operații pe secundă.
Echipamentele periferice ale unui microcalculator includ o unitate de disc rigid, una sau două unități
de disc flexibil, o imprimantă și o consolă. Structura modulară și gruparea tuturor echipamentelor în
jurul unei magistrale permite configurarea microcalculatorului în funcție de necesitățile individuale
ale fiecărui utilizator. Corporații care produc microcalculatoare există în foarte multe țări, însă lideri
mondiali, unanim recunoscuți, sînt firmele IBM, DEC, Hewlett-Packard, Apple, Olivetti etc.
TRENDUL ÎN ARHITECTURA CALCULATOARELOR
Din punct de vedere tehnologic cele mai importante tendinţe sunt:
-gradul de integrare al tranzistorilor pe cip creşte cu cca. 55% pe an; tehnologia de integrare a microprocesoarelor a
evoluat de la 10 microni (1971) la 0,18 microni 2001.
-frecvenţa ceasului creşte şi ea cu 50% pe an;
-pentru memoriile DRAM, densitatea de integrare creşte cu cca 40-50% pe an, iar timpul de acces aferent scade cu 3 % pe
an.
-tehnologia şi performanţele reţelelor se îmbunătăţesc semnificativ.
Se poate spune că aceste tendinţe respectă legea lui Gordon Moore, cofondator împreună cu Obert Noyce a societăţii
INTEL. Acesta, în 1965, enunţă celebra sa lege: „numărul de tranzistori din circuitele integrate se va dubla la fiecare doi ani”
. Aceasta înseamnă că, la fiecare 10 ani se schimbă prefixul de măsurare, adică totul creşte de 1000 de ori. Într-adevăr, dacă
hard discurile din anii 90 aveau 100 MB, în 2000 ele au 100 GB. Frecvenţa ceasului era în 1990 de 8 MHz iar în 2000 era de 1
GHz etc.
Între cele mai evidente tendinţe de evoluţie în arhitectură amintim:
-exploatarea paralelismului la nivelul instrucţiunilor şi firelor de execuţie, atât prin tehnici statice (soft) cât şi dinamice(hard);
există şi tehnici hibride cum ar fi cazul procesorului Intel Ithamium IA-64;
-structuri tot mai performante de ierarhizare a sistemului de memorie prin utilizarea arhitecturilor evoluate de memorie cache;
-reducerea latenţei ………critice de program, prin tehnici de predicţie;
-utilizarea microprocesoarelor Shered memory în special în cadrul arhitecturii serverelor şi staţiilor grafice.
Arhitectura Calculatoarelor
T.4 –Structura și caracteristicile unităţii centrale
Structura Unității Centrale. Unitatea Aritmetică şi Logică (UAL), Unitatea de Comandă (UCd), Registrele generale (RG).
Caracteristicile unităţii centrale. Lungimea cuvântului, Frecvenţa ceasului, Numărul de instrucţiuni executate în unitatea
de timp, Gradul de paralelism, Paralelism la nivel de proceso

Scopul Lecției: De a face cunoștință cu noțiunea de Unitate Centrală structura ei și caracteristicile. Funcția
UAL, UCd și RG

Studentul trebuie să cunoască:


§ Schema conceptuală a UC
§ Funcțiile Componentelor UC
§ Structura Componentelor UC
§ Noțiunea de lungimea cuvîntului
§ Influența frecvenței ceasului asupra performanței
§ Paralelismul la nivel de instrucțiune(pipeline)

Conf. Univ. Dr. Crețu Vasilii


Unitatea centrală (UC), în engleză CPU=Central Processing Unit, este partea din calculator care are rolul de a interpreta şi
executa instrucţiunile unui program, de a citi sau salva în memorie rezultatele şi de a comunica cu unităţile de schimb. Toate aceste
activităţi sunt cadenţate de un ceas la frecvenţă constantă care împarte timpul în fracţiuni de aceeaşi durată numite cicluri.

Unitatea Centrală are în componenţă:


-Unitatea Aritmetică şi Logică (UAL);
-Unitatea de comandă (UCd);
-Registrele generale (RG).
Unitatea Aritmetică şi Logică (UAL)
UAL execută operaţii aritmetice (adunare, scădere, înmulţire împărţire, complement faţă de 1, complement faţă de 2 etc.) ,
operaţii logice (negare, şi, sau, suma modulo 2), decalaje şi rotaţii. Are două intrări de date, pe n biţi, o ieşire corespunzătoare
operaţiei efectuate, pe n biţi, eventual o ieşire corespunzătoare flagurilor poziţionate de operaţie şi o intrare de comandă care
selecţionează operaţia de efectuat.
Toată Unitatea Aritmetică şi Logică este grupată în jurul unui sumator paralel care poate aduna conţinutul a două registre
multiplexate la cele două intrări ale sumatorului. Operaţiile de înmulţire şi împărţire se realizează, cu ajutorul diferiţilor algoritmi,
prin adunări şi deplasări stânga/dreapta succesive. Scăderea se realizează ca o adunare cu complementul scăzătorului.

Set
de registre

Registru Registru tampon


acumulator

Σ Sumator
Unitatea de Comandă (UCd)

Unitatea de comandă este formată din:


-Generatorul de Faze (GF);
-Generatorul de Tact (GT);
-Blocul Circuitelor de Comandă (BCC).
Blocul circuitelor de comandă (BCC) dirijează toate operaţiile executate în cadrul unei instrucţiuni. Există microoperaţii,
care sunt operaţiile elementare executate într-o instrucţiune, şi microcomenzi, care sunt semnalele generate de BCC pentru
execuţia microoperaţiilor. Microcomenzile sunt trimise elementelor de execuţie din structura calculatorului: registre, UAL,
memorie, porturi etc. O instrucţiune este, de fapt, o succesiune de microoperaţii.
Toate microoperaţiile care se execută în acelaşi timp definesc o stare în execuţia unei instrucţiuni, stare numită fază.
Generatorul de faze (GF) construieşte succesiunea fazelor necesară pentru execuţia instrucţiunii.
Generatorul de tact (GT) dă cadenţa schimbărilor de stare pentru toate circuitele secvenţiale.
Registrele generale (RG)

Registrele generale (RG) sunt considerate o memorie foarte rapidă şi de foarte mică capacitate. Structural fac parte din UC
şi, în marea majoritate a arhitecturilor, ele sunt adresabile pe magistrală.
Există două moduri de conexiune a registrelor generale:
-RG conectate direct între ele:
-RG conectate la magistrale.
Caracteristicile Unităţii Centrale
Performanţele în funcţionarea unei Unităţi Centrale sunt redate prin următoarele caracteristici:
-Lungimea cuvântului;
-Frecvenţa ceasului;
-Numărul de instrucţiuni executate în unitatea de timp;
-Gradul de paralelism.

Lungimea cuvântului
Calculatoarele lucrează cu ajutorul cuvintelor de cod a căror cantitate de informaţie este măsurată în biţi. Numărul de biţi
reprezintă lungimea unui cuvânt şi este multiplu de doi. Un cuvânt poate reprezenta:
-o instrucţiune;
-un segment de date.
Într-un calculator, lungimea cuvântului se identifică cu numărul de biţi ai instrucţiunii. Cele mai noi calculatoare au
instrucţiuni pe 64 biţi. Aceasta este o caracteristică principală a UC .
Nu este obligatoriu ca lungimea cuvântului să fie aceeaşi cu dimensiunea magistralei de memorie pe care se aduc
instrucţiunile din UM în UC. Un calculator poate avea, de exemplu, lungimea instrucţiunii de 64 biţi şi lărgimea magistralei de 32
biţi; pentru aducerea unei instrucţiuni din memorie sunt necesare, în acest caz, două apeluri la memorie.
Frecvenţa ceasului
Orice calculator are un generator de impulsuri, numit ceasul unităţii centrale.. Acesta este realizat cu un cuarţ care emite
impulsuri cu frecvenţă fixă. Ceasul iniţial suferă două tipuri de operaţii:
-operaţia de divizare a ceasului, ceea ce înseamnă că ceasul iniţial, cu cuarţ, suferă modificarea frecvenţei sale;
-operaţia de amplificare a semnalului de ceas.
Pe acest ceas, care este inima calculatorului, au loc toate evenimentele hard din UC.

Numărul de instrucţiuni executate în unitatea de timp


Dacă facem următoarele notaţii:
f = frecvenţa ceasului, în Hz
N = numărul mediu de ceasuri în care se execută o instrucţiune
n = numărul de instrucţiuni executate într-o secundă
atunci
f
n
N
De exemplu, pentru un calculator care are frecvenţa ceasului de 2 GHz şi care execută două instrucţiuni pe ceas, numărul
de instrucţiuni executate în unitatea de timp este:
f 2 GHz
n   4.10 9  4 miliarde instrucţiuni pe secundă
N 1
2
Pentru calculatoarele moderne se adoptă o unitate de măsură numită MIPS (milioane de instrucţiuni executate într-o
secundă). În exemplul precedent, parametrul n va fi de 4000 MIPS.
Trebuie precizat că acest parametru (n) este mai aproape de adevăr decât frecvenţa ceasului (f). Există calculatoare cu
frecvenţă mai mică dar care sunt inferioare calculatoarelor cu frecvenţa ceasului mai mare, tocmai datorită mărimii N. De
exemplu Intel 586 cu frecvenţa 100 MHz şi Pentium I cu frecvenţa 66 MHz. Ar fi mai bine să fie afişat parametrul n în locul
parametrului f, dar partea dificilă este calcularea practică a lui N. Este dificilă, deoarece, în setul de instrucţiuni, fiecare are N
diferit şi chiar aceeaşi instrucţiune are N diferit în funcţie de contextul rulării.
Gradul de paralelism
Există două feluri de paralelism:
-paralelism la nivel de instrucţiuni (pipeline)
-paralelism la nivel de procesor.

a. Paralelism la nivel de instrucţiuni (pipeline)


a)Principiul pipeline-ului este acela al liniei de montaj (de asamblare):
-împărţirea unei sarcini în mai multe subsarcini de durate egale, numite etaje;
-executarea simultană a diferitelor subsarcini din mai multe sarcini.
În felul acesta se măreşte debitul de sarcini al sistemului. Sistemul va fi caracterizat prin doi parametri: durata individuală a
unui etaj (T) şi numărul de etaje (l)din pipeline. Latenţa L este durata totală de execuţie a unei sarcini: L= lT
Debitul, d, al pipeline-ului depinde de numărul n de sarcini de executat. Timpul necesar pentru execuţia în pipeline a n sarcini
este timpul de execuţie a primei sarcini, L= lT, plus timpul necesar pentru a le termina pe celelalte n-1 următoare:
n
d
L  (n  1)T
Apare rezultatul esenţial: pentru un mare număr de sarcini, debitul nu depinde de latenţă ci de durata individuală a fiecărui
etaj. Deci, debitul optimal va fi atins fracţionând cât mai fin posibil sarcina în subsarcini. Evident, fracţionarea are limite tehnice.
b)Clasicul pipeline pentru execuţia instrucţiunilor
În calculatoare, pipeline-ul constă în fracţionarea execuţiei unei instrucţiuni în mai multe module, fiecare modul executând
hard o parte de instrucţiune. Conceptul de pipeline înseamnă de fapt o bandă de asamblare cu segmente, fiecare segment executând
o parte de instrucţiune.
De exemplu, o bandă de asamblare cu 5 segmente. Aceste 5 segmente sunt:
S1 – unitate de extragere a instrucţiunii
S2 – unitate de decodificare a instrucţiunii
S3 – unitate de calcul şi extragere a operanzilor
S4 – unitate de execuţie propriu zisă a operaţiei instrucţiunii
S5 – unitate de scriere a rezultatelor
S1 S2 S3 S4 S5

S1 1 2 3 4 5 6 7 8 9 10 11
S2 1 2 3 4 5 6 7 8 9 10
S3 1 2 3 4 5 6 7 8 9
S4 1 2 3 4 5 6 7 8
S5 1 2 3 4 5 6 7
Timpi de t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11
execuţie a
segmentel
or

Schema unei benzi de asamblare cu 5 segmente; (a) schema de funcţionare;


(b)diagrama temporară a execuţiei segmentelor.
la un moment de timp fiecare segment executând unul din cele 5 segmente de instrucţiune diferite. Dacă timpul de execuţie a
unui segment este de 1 secundă, (t1=t2=…….=t10=t11=1s) atunci timpul de execuţie a 7 instrucţiuni este, aşa cum se vede în figură,
de 11 secunde. Pe o maşină normală, fără pipeline, timpul de execuţie a 7 instrucţiuni, fiecare necesitând 5 secunde, ar fi de 35
sec. Efectul se vede în creşterea debitului în executarea instrucţiunilor.
S2 S3 S4 S5
S1

S2 S3 S4 S5

Pipeline cu două benzi de asamblare.

Un astfel de sistem are o singură unitate de extragere a instrucţiunii (S1) care extrage perechi de instrucţiuni şi le plasează
pe cele două benzi. Condiţia de a lucra în paralel este ca cele două instrucţiuni să nu îşi dispute aceeaşi resursă şi să nu depindă
una de rezultatul celeilalte. Această condiţie este garantată fie de compilator , fie de un hard suplimentar dotat cu un sistem de
predicţie.
Calculatoarele Pentium I erau dotate cu două benzi de asamblare:
-bandă de asamblare U (U pipeline), bandă principală, care putea executa orice instrucţiune;
-bandă de asamblare V (V pipeline), care putea executa doar instrucţiunile simple în numere întregi şi o singură instrucţiune
simplă în virgulă mobilă.
Existau reguli destul de complicate pentru împerecherea instrucţiunilor. Erau extrase câte două instrucţiuni şi dacă erau
compatibile erau executate, dacă nu, se executa doar prima pe banda U, a doua fiind păstrată şi împerecheată cu cea care urma.
În acest mod, s-a constatat că Pentium I era de două ori mai rapid decât un 586 la aceeaşi frecvenţă.
c) Arhitecturi suprascalare
Pornind de la ideea benzilor de asamblare , s-a ajuns la concluzia că este mai benefic de a avea o singură bandă de asamblare
dar cu mai multe unităţi funcţionale. O astfel de arhitectură se numeşte superscalară, termen introdus de Agerwals şi Cocke în
1987. În figura 2.4. este dată o astfel de arhitectură.
UAL

UAL

S1 S2 S3 lLOAD S5

STORE

VIRGULĂ
FLOTANTĂ

Procesor superscalat cu 5 unităţi funcţionale.

Ideea arhitecturii superscalare este că segmentul S3 poate lansa instrucţiuni mult mai rapid decât le poate executa S4, deci, la
o bandă simplă există o gâtuire de timp între S3 şi S4. La arhitectura superscalară, se împarte unitatea de execuţie S4 în unităţi
funcţionale pe tipuri de instrucţiuni (de încărcare,LOAD, de memorie, STORE, de virgilă mobilă)
a. Paralelism la nivel de procesor

Banda de asamblare sau arhitectura superscalară nu cresc performanţele în mod simţitor. Mult mai eficientă este mărirea
numărului de procesoare. Acest lucru se întâmplă în :
-maşinile SIMD, calculatoare vectoriale;
-maşinile MIMD, multiprocesoare;
-maşinile MIMD, multicalculatoare.
MODURI DE ADRESARE

După posibilitatea găsirii operanzilor, există mai multe moduri de adresare:


-adresare imediată;
-adresare directă;
-adresare indirectă;
-adresare indexată.

a) Adresare imediată

Operandul se află chiar în câmpul instrucţiunii.

Se transferă valoarea 20000 în registrul R.


Adresare direct
Operandul se găseşte la o adresă care există în instrucţiune

MOV R 100
100 20000
În câmpul de adresă al instrucţiunii se află o adresă (100) la care există operandul.

Adresare indirectă
În câmpul de adresă al instrucţiunii se află o adresă. La acea adresă se află operandul. Numărul
de indirectări depinde de fiecare calculator în parte.

MOV R 100
100 200
200 2000

La adresa 100 din câmpul instrucţiunii se află altă adresă, 200, iar la această adresă se află operandul
Adresare indexată

La adresarea indexată participă un registru numit registru INDEX. Adresa operandului este:
Adresa operand = valoareCÂMP ADRESĂ + valoareREGISTRU INDEX
MOV R 100
RINDEX 600
100 700
Adresa calculată: 600 + 700 = D00
D00 20000

S-ar putea să vă placă și