Sunteți pe pagina 1din 25

Arhitectura sistemelor de calcul

Elemente teoretice
v Ce este un sistem de calcul?
Un sistem de calcul (calculatorul) este un ansamblu de componente hardware (partea fizică) și
componente software (partea logică) cu rolul de a prelua, stoca, prelucra și transmite informații.

v Abstractizare.
Abstractizarea reprezintă simplificarea conceptelor (eliminarea detaliilor mai puțin semnificative) pentru a
concentra atenția asupra detaliilor mai importante. Folosim abstractizare pentru a reduce complexitatea
materiei/a sistemului, cu scopul de a o face mai ușor comprehensibilă/a ușura comunicarea.

v Nivele de abstractizare într-un sistem de calcul.


Nivelele de abstractizare într-un sistem de calcul sunt:
1. Nivelul inferior (cel mai scăzut) – circuite electronice – decuplarea echipamentului utilizat;
2. Nivelul mediu (ridicat) – limbaj de asamblare – programarea unei secvențe de apeluri (protocol);
3. Nivelul superior (înalt) – limbaj de programare – interfața de programare a aplicațiilor.

v Componentele unui calculator.


Componentele unui calculator sunt:
1. Placa de bază (motherboard);
2. Procesor (CPU);
3. Memorie;
4. Placă video;
5. Periferice;
6. Interfețe periferice (porturi de comunicare cu I/E, ex. USB: tip A, B, micro B, C ...; HMDI; ...);
7. Stocare date (HDD, SSD ... ).

v Ce este procesorul (CPU)?


Procesorul este unitatea centrală de prelucrare (CPUen » central processing unit). Acesta se ocupă cu
interpretarea și procesarea instrucțiunilor din memorie. Este format din:
1. Ceas (clock), adică un cristal de cuarț ce vibrează cu o frecvență specifică; sincronizează toate
celelalte unități să funcționeze la unison;
2. Decodor de instrucțiuni;
3. Unitate aritmetico-logică (ALUen » arithmetic and logic unit)
4. Unitate de control (CUen » control unit), ce leagă memoria (northbridge-ul), intrările și ieșirile de
procesor.
*Procesorul are o memorie interna de rezervă, care se numește „cache” (ascunzătoare, loc sigur).
Memoria cache este ca un sertar personal al procesorului, în care acesta păstrează temporar datele mărunte.
Sunt mai multe nivele de cache și anume level 1, level 2 și level 3 (L1, L2, L3). Fiecare nivel fiind mai
„lent” pe măsură ce „urcă” (L1>L3), deoarece nivelul cel mai de jos e cel mai apropiat de CPU.
*Există procesoare de la single core până la octa core.
Arhitectura sistemelor de calcul
v Ce este memoria?
Memoria este un dispozitiv temporar de stocare a datelor ce urmează a fi prelucrate, a datelor obținute ca
rezultat, a programului care va fi executat. Memoria se clasifică în :
1. Volatilă: RWM, ce își modifică conținutul <read-write>;
a. DAM/RAM;
i. SRAM;
ii. DRAM. 1. Memorie volatilă: ce are nevoie de
1. SIM; flux continuu de energie electrică
2. DIM; pentru a menține informația
3. DDR; stocată;
4. DDR2; 2. Memorie non-volatilă: ce menține
5. DDR3; informația stocată, chiar și după
6. DDR4; pierderea energiei electrice.
7. ... .
b. SAM;
c. CAM.
2. Non-volatilă: ROM, ce își păstrează conținutul <read only> (MROM, PROM, EPROM, EEPROM,
Flash [stick de memorie, SD, MMC, UFC ...], SSD, HDD, CD, DVD ...).

v Ce este sistemul I/O?


Sistemul de intrare-ieșire este dotat cu o serie de echipamente care vor permite informațiilor să fie citite
de către sistem – intrarea de date – fie să părăsească sistemul și să fie folosite în afara acestuia – ieșirea de
date. Unele dintre acestea se găsesc în mod standard pe oricare sistem, iar altele pot să fie adăugate ulterior
folosindu-se de posibilitățile de conectare din exterior, sau folosind extensiile libere existente pe placa de
bază a sistemului (interfețe periferice).
Sisteme de intrare-ieșire (I/Oen || I/Ero):
a) Intrare: tastatură, mouse, touch, cameră video ... ;
b) Ieșire: display, imprimantă (fără scanner), boxe ... ;
c) Intrare și ieșire: spații de stocare (HDD, SSD, disk memorie, interfață internet ...).

v Hardware versus software.


Hardware-ul este partea fizică a unui sistem informatic, constituită din ansamblul de componente
electrice, electronice și mecanice care împreună pot primi, prelucra, stoca și reda informații, sub diverse
forme de semnale electrice, acustice sau optice (sisteme I/O).
Software-ul este partea logică — cea care comandă hardware-ul prin intermediul unor programe
(aplicații, sisteme de operare și drivere) — și de datele asupra cărora operează respectivul sistem de calcul.

v Baze de numerație (baza 2, 16, 10).


Bazele de numerație există datorată faptului că toate dispozitivele de calcul lucrează cu biți, implicit ne
trebuie o codificare a numerelor. Calculatorul convertește numerele (din format zecimal) în formatul lui de
stocare, iar rezultatele sunt oferite tot în format zecimal. Valoarea bazelor crește datorită necesitării de
stocare mai mari. De exemplu pentru a stoca doar numerele ar fi destul 4 biți, dar dacă dorim să stocăm atât
numere cât și litere și caractere am avea nevoie de aproximativ 7 biți.
Baza 2 lucrează cu 1 și 0.
Baza 10 reprezintă numerele arabe.
Baza 16 lucrează cu hexazecimali (numere de la 0 la 9 inclusiv și litere A, B, C, D, E, F).
Arhitectura sistemelor de calcul
v Tipuri de date.
Un tip de date este o clasificare ce identifică diferitele tipuri de date, cum ar fi: numere reale, numere
întregi sau valori logice (adevărate sau false), valori posibile pentru acest tip; operațiunile care pot fi
efectuate pentru valorile de acest tip; sensul datelor; și modul în care valorile de acest tip pot fi stocate.
Ca o clasificare avem următoarele tipuri de date:
1. Numere: întregi, reale, complexe, mici, mari, 0 ... ;
2. Caractere: litere, alfabete, simboluri ... ;
3. Culori: roșu, albastru, verde, indigo ... ;
4. Imagini;
5. Filme;
6. Mesaje;
7. ... .

v Bit-ul, byte, multiplii (word, dword, qword, K,M,G,T,P).


Ø Bit = unitate de măsură pentru cantitatea de informație (este 1 sau 0).
Ø Bytes = 8 bits = numere de la 0 la 255 inclusiv (28).
Ø 2 bytes = 16 bits = word.
Ø 4 bytes = 32 bits = double word/dword.
Ø 8 bytes = 64 bits = quadruple word/qword.
Ø ½ bytes = nibble.
Ø 1 kilobyte (KB) = 1024 bytes
Ø 1 megabyte (MB) = 1024 KB
Ø 1 gigabyte (GB) = 1024 MB
Ø 1 terabyte (TB) = 1024 GB
Ø 1 petabyte (PB) = 1024 TB
Ø 1 exabyte (EB) = 1024 PB
Ø 1 zettabyte (ZB) = 1024 EB
Ø 1 yottabyte (YB) = 1024 YB

v Reprezentarea datelor in calculator (cu biți etc).


Informația elementara este numită bit. Un bit este descris prin una din cifrele binare: 0, 1.
Biții se pot grupa câte 8, 16, 32 etc. formând un octet (byte), cuvânt (word), cuvânt dublu (double word)
etc. Informația modelată și prelucrată de calculator este prezentată sub forma unui șir de cifre binare. Aceste
șiruri se numesc date. Într-un calculator, informația reprezentata codificat formează mulțimea datelor.
Sunt diverse tipuri de date ce pot fi reprezentate:
• Reprezentarea numerelor întregi;
o Fără semn (pozitive);
o Cu semn (pozitive și negative).
• Reprezentarea numerelor reale;
o Cu virgulă fixă;
o Cu virgulă mobilă (exponențial).
• Reprezentarea caracterelor.
o Litere;
o Alfa numerice;
o Simboluri.
• Reprezentarea sunetelor și desenelor (pixeli).
Arhitectura sistemelor de calcul
v Numere, caractere (codul ASCII, unicode), pixeli.
Numerele sunt de mai multe tipuri, implicit și reprezentarea lor binară diferă:
1) Reprezentarea numerelor întregi;
a. Fără semn (pozitive);
b. Cu semn (pozitive și negative).
2) Reprezentarea numerelor reale;
a. Cu virgulă fixă;
b. Cu virgulă mobilă (exponențial).
Caracterele s-au reprezentat mult timp pe codul ASCII (cod pe 7 biți, ce memorează valoarea binară a
literelor mari și mici, dar și a anumitor caractere simple, ca de ex: +, -, /, *, ;, ^, $; 27=128=[0...127]). Nevoia
de reprezentarea a mai multor caractere (diacritice) a condus la dezvoltarea/extinderea acestui cod, care se
numește „extended ASCII”. Dar nu este singurul, existând și Unicode, ce memorează caractere mai
complexe, cum ar fi emojiurile.
Pixelul este un element de imagine, reprezentând cea mai mică unitate prin care se poate reprezenta o
imagine digitată. Culoarea pe care fiecare pixel o afișează este un amestec de trei componente ale spectrului
de culori RGB (roșu, verde și albastru). Se pot memora 8 biți/pixel, doar 256 culori simultan. Standardul
RGB se poate schimba în funcție de nevoi, existând și CMYK, RGBA ... .

v Ce sunt datele dintr-un calculator?


Datele dintr-un calculator sunt o reprezentare formalizată ale unor date, instanțe sau idei ce pot fi
modificate, transmise și/sau primite.

v Reprezentarea numerelor întregi (pozitive, negative).


Atât numerele întregi pozitive, cât și cele negative au un bit de semn în reprezentarea binară (0=pozitiv,
1=negativ). Trebuie avut în vedere că numerele foarte mari/mici trebuie reprezentate în altă bază dacă baza
aleasă are overflow; baza 8: 0...255(+), 0...127(±) | 28-1(bitul de semn).

v Overflow în reprezentarea numerelor.


Overflow nu reprezintă neapărat o greșeală, ci arată că transformarea dorită trece de dimensiunea
posibilă a bazei alese (ex. pentru baza 8 nu putem reprezenta 256 – overflow).

v Complement față de 1, față de 2.


Complementul față de 1 înseamnă negarea biților numărului pozitiv.
Complementul față de 2 înseamnă ca după negarea biților se mai adăugă 1 bit.

v Reprezentarea cu virgulă (fixa, mobilă).


Partea întreagă – împărțiri succesive la 2.
Partea zecimală – înmulțiri succesive cu 2.
Ex: 125.2510 Þ 0111 1101.012
Cu virgulă fixă:
• Un nr. fix de biți ptr. fiecare parte;
• Ex: 8 biți întreg + 8 biți partea zecimală;
• Limitare la reprezentarea valorilor.
Cu virgulă mobilă:
• Se folosește notația științifică;
• x.yyyyyy*10z | x, y, z – cifre zecimale;
• x.yyyyyy*2z | x, y, z – cifre binare (biți).

v Standardul IEEE 754 pentru numere cu virgulă mobilă.


x.yyyyyy*2z
x=0, primul y=1, y=manisa, z=exponent
± 0.1yyyyyy*2±z
Arhitectura sistemelor de calcul
v Probleme în reprezentarea numerelor (precizia).
± 0.1yyyyyy*2±zzzzz
s exp (zzzz) frac (yyyyyy)
MSB LSB

v Stocarea datelor în memorie (little și big endian).


Ordonare – endian
• Little endian – Intel;
• Big endian – SPARC, IBM, ARM;
• Bi-ednian – ARM.

Contează în:
§ Networking – trimitere pachete byte cu byte;
§ Reprezentarea nr. în memorie;
§ Conversie tipuri de date (op. cast în C – (int) x);
§ Accesul la date prin adrese (ex. pointeri în C)

v Pointeri în memorie.
Pointerii sunt adrese ale variabilelor în memorie. De ex. dacă x are valoarea x=325 [01 45], atunci
void*p=&x ne va rezulta adresa lui x prin p:

v Operații calculator (d.p.d.v. limbaj de nivel înalt - ex C).


Char *p = “Hello”;
• p este adresa șirului “Hello” în memorie (pointer)
• în C avem un caracter special (cod zero) pt. terminator string
o H = 48 (hexa) = 72
o e = 65 (hexa)
o l = 6C (hexa)
o l = 6C (hexa)
o o= 6F (hexa)
Arhitectura sistemelor de calcul
§ printf("s %s\n", p);
§ printf("p %p\n", p);
§ printf("d %d\n", p);
§ printf("x %x\n", p);
%s -> afișare string s Hello
%p -> afișare pointer p 0x402004
%d -> afișare zecimal d 4202500
%x -> afișare hexa x 402004

v Operații pe biți.
§ calcule numerice à arithmetics;
• adunare, scădere, înmulțire, împărțire;
• operații matematice complexe (trig. etc.);
§ calcule logice à logics;
• operații algebra booleană (George Boole 1850) ;
¨ not, and, or, xor ¬ ∧ ∨ ⨁
Ø în C avem pt. operații logice biți ~ & | ^
Ø în C avem pt. operații logice ! && ||

v Ce este UAL?
UAL este o unitate algoritmico-logică simplă pe 4 biți.

v Porți logice.
Sunt operatori logici reprezentați în electronică prin tranzistori (= semiconductor ce amplifică sau
schimbă fluxul electric).

Tranzistor:
§ B=0 >> C/E deschis (OFF)
§ B=1 >> C/E închis (ON)
Arhitectura sistemelor de calcul
v Circuite logice combinaționale.
Ciucitele logice combinaționale (CLC), combinarea porților pt. obținerea unor circuitelor complexe:

Ex: adunarea pe 2 biți/pe un bit

v Tabela de adevăr pentru un circuit.


Tabela de adevăr arată ce face circuitul. Ex: Q=A+B ptr. urm. circ.

v Realizarea unui circuit dintr-o tabelă de adevăr (FNC, FND).


FND: Forma normală disjunctivă/SOP (sum of products)/minterm expression.
§ Se iau în considerare doar liniile cu ieșire 1 ca o sumă (OR) de produse (AND) ale biților de
intrare (Ex. pe tabela de mai sus: Liniile 2, 3, 4: A’B+AB’+AB).
FNC: Forma normală conjunctivă/POS (product of sums)/maxterm expression.
§ Se iau în considerare doar liniile cu ieșire 0 ca un produs (AND) de sume (OR) ale biților de intrare.
(Ex. pe tabela de mai sus: Linia 1: A’+B’).

v Simplificare circuite (diagrama Karnaugh).


Se simplifică expresia booleana folosind legile de Morgan. Se construiește diagrama Karnaugh (k-map)
din expresia simpla și se efectuează operațiile specifice.

v Circuite logice secvențiale.


Ieșirea circuitului depinde de intrări, dar și de starea anterioară a sistemului (memorată).
Arhitectura sistemelor de calcul
v Memoria de 1 bit, registru de memorie.
Pentru a memora un bit folosim bucla de reacție inversă (feedback): RS latch cu porți NOR.

Registru memorie pe 4 biți:

Registrele de memorie sunt utilizate pentru memorarea informației în formă binară și se realizează cu
celule binare de tip D:

v Microprocesorul.
Un microprocesor este un procesor ale cărui componente au fost suficient de miniaturizate pentru a fi
grupate într-un singur circuit integrat. Un microprocesor este o implementare cu un singur chip a unui
procesor și care încorporează toate sau majoritatea funcțiilor unei unități centrale de procesare (UCP).

v Componentele unui CPU (ex 8085).


Intel 8085 – microprocesor pe 8 biți.
Un CPU cuprinde următoarele componente:
• Unitate ALU (unitatea aritmetico-logică);
• Unitate CU (de control);
• Decodor instrucțiuni;
o A- acumulator;
o B, C, D, E, H, L;
o Temp, adr, instr;
o SP, PC.
• Cache;
• Clock;
• Interfață I/O (bus).
Arhitectura sistemelor de calcul
v Comunicația cu exteriorul.
CPU comunică cu exteriorul prin intermediul magistralelor (bus).

v Magistrale (bus).
Acestea sunt de mai multe tipuri:
• De adresă (transferă adresa de memorie de la CPU la alte componente – unidirecțională);
• De date (transferă date dintre CPU și alte componente – bidirecțională);
• De control (transferă instrucțiuni de control de la CPU la alte componente – unidirecțională).

v Instrucțiuni CPU (mnemonica, opcode).


CPU funcționează astfel:
• Programul stocat în memorie este executat instrucțiune cu instrucțiune;
• Programul este secvențial – registrul PC (program counter = adresa următoarei instr.);
• Pentru execuția unei instrucțiuni se pot executa diverse operații:
o Citire/scriere sau I/O;
o Operații aritmetice/logice;
o Test condiții, întreruperi, reset etc.
¨ Mnemonica = instrucțiune în format text;
• Rd = registru destinație
¨ Opcode = codificare instrucțiune. • Rs = registru sursă

v Ciclul de execuție a instrucțiunilor (ciclul mașină).


Reprezintă pașii necesari execuției instrucțiunii curente și trecerii la execuția următoarei instrucțiuni:
- Fetch – citirea din memorie a instr.;
- Decode – transformarea codului instr. în comenzi (circ. logice);
- Execuție – procesarea comenzii (ALU).
Unele instr. au 1-2 operanzi (load, store – citire/salvare din memorie).
Arhitectura sistemelor de calcul

Program counter:
• se citește valoarea curenta din registrul PC;
• acesta indica următoarea instrucțiune de exec.;
• se accesează memoria;
– address bus -> MAB = adresa din PC;
– control bus -> read memory signal.
• se copiază codul instrucțiunii din memorie (data bus) -> registrul de instrucțiuni IR = DB.
• se incrementează registrul PC
• va indica următoarea adresa de memorie
unde se afla:
– următoarea instrucțiune de executat sau
– posibile valori pt. instrucțiunea in curs de execuție
• instrucțiunile pot avea lungimi diferite:
– 1, 2 sau 3 bytes pt. 8085 – primul octet = codul instr.
– max 15 bytes pt. Intel x86/x86_64 (i3,i5,i7 etc.)
• se decodifica instrucțiunea in funcție de opcode
• se pregătesc datele pentru instrucțiune
• se selectează circuitul corespunzător pentru a putea executa instrucțiunea
• .. in funcție de tipul instrucțiunii:
– operații aritm.-logice -> operanzi in regiștrii
• ... load... execute...logical...arithm...transfer...goto...control...store...
Arhitectura sistemelor de calcul
v Tipuri de instrucțiuni.
Există mai multe tipuri de instrucțiuni:
1. Logice:

2. Aritmetice:

3. Transfer de date:

4. Salt:

5. Control:
Arhitectura sistemelor de calcul
v Subrutina, apel subrutina, stiva.
Stiva este un grup de instrucțiuni care va fi folosit în mod repetat într-un program, în diverse locuri.
Aceasta permite un apel repetitiv din orice parte a codului, micșorează codul, dar poate avea câteva
impedimente cum ar fi: reîntoarcerea la următoarea instrucțiune din codul de dinainte de apel, refacerea
registrelor... . Apelul unei stive se face invocând denumirea acesteia (și parametrii de transmitere după
denumire).
Subrutina este o zonă de memorie în care se pot salva registrele. Aceasta poate salva și adresele de
întoarcere, deci se pot refolosii toți regiștrii în subrutină; se pot apela ale subrutine din cadrul subrutine
ș.a.m.d., singurul impediment fiind memoria disponibilă pentru salvarea registrelor în stivă.

v Ierarhia memoriei.
Memoria poate fi clasificată după necesități:
® Viteza (scade cu cât este mai depărtată de CPU);
® Cost (crește cu cât este mai proximă de CPU);
® Capacitate;
® Locație;
® Acces;
® Volatilă.
Poate fi clasificată după hardware:
§ Memorie primară;
o Internă
o Timp de acces: nano-secunde.
§ Memorie secundară/terțiară.
o Externă;
o Timp de acces: mili-secunde/secunde/minute.

v Tipuri de memorie.
Ø Primară;
§ direct accesibilă de CPU;
§ regiștrii, RAM, ROM, flash, cache.
Ø Secundară;
§ trebuie copiat în RAM pt. acces, nevolatilă;
§ inclus în sistemul de calc à disk, hdd, ssd, usb-flash.
Ø Terțiară.
§ folosită ocazional (off-line) à flash, CD/DVD/BR, tape;
§ în general pentru backup sau transfer între calculatoare.
Mai există o clasificare în funcție de expansiune:
§ Volatilă: RAM;
§ Non-volatilă: ROM.
• RAM = Random Access Memory
– putem accesa în mod direct orice adresă din memorie;
– timpul de acces este același, indiferent de adresă;
– volatilă – se pierde la repornirea calculatorului;
– SRAM = Static RAM (ex. circuitul de memorare 1 bit);
w cost ridicat – necesită mai mulți tranzistori ~6 per bit;
w folosit pentru regiștrii interni CPU – f. rapizi.
– DRAM = Dynamic RAM
w cost redus – necesită un tranzistor per bit;
w necesită refresh periodic, altfel informația se deteriorează;
w refresh la câteva milisecunde Þ memoria este mai lentă.
Arhitectura sistemelor de calcul

• ROM = Read Only Memory


– non-volatilă – rămâne la repornire;
– se șterge dar nu direct (optic, electric);
– zona de memorie care în mod normal nu se schimbă (sau se schimbă foarte rar);
– PROM, EPROM, EEPROM – Electr.Program.ROM;
– BIOS – Basic Input/Output System – primul program care se execută la pornirea calc – firmware.
– acum se folosește memorie de tip flash (mai ieftin).

v Memoria cache (cache hit, miss).


Ü Memorie relativ mică, dar mai rapidă, pt. stocarea temporară a datelor în mod transparent pentru
utilizator;
Ü Ex. între CPU si RAM
• cache este de tip SRAM (mai rapid);
• mult mai mic decit RAM, dar mai mare decât regiștrii;
• aduc parțial zone de RAM – dacă este în cache, nu trebuie să acceseze RAM.
Ü Între diverse nivele ale ierarhiei memoriei;
Ü Folosește principiul localității datelor.
Cache hit – datele sunt în cache, le folosim (rapid).
Cache miss – datele nu sunt în cache, acces la nivelul următor (lent).

Ü Cache miss-urile reprezintă mai mult decât un acces direct la memorie:


• trebuie verificat dacă e în cache;
• se aduce din memorie;
• se pun în cache (trebuie eliberat spațiul ocupat);
• se anunță procesorul ca există acum în cache.

v Măsurarea performanțelor cache.


Ü Metrici pentru măsurarea performanțelor cache-ului (cât de multe accese sunt în cache):
• hit ratio;

• miss ratio.
Se dorește hit ratio cât mai mare.
Ü Average memory access time (AMAT) (timp mediu de acces memorie);
Ü MissTime = timp acces RAM (+ alte operații);
Ü Depinde de timpii de acces, dar și de MR, care depinde și de aplicație (progr. rulează);
Ü Depinde de mărimea memoriei cache;
Ü Vrem în general hit rate f. mare >90-95%.
Arhitectura sistemelor de calcul
¨ Exemplu:
o HitTime = 4 ns (cache L3)
o MissTime = 100 ns (RAM)
o HitRate HR = 95% à MR = 5%

¨ AMAT(HR=95%) = 4 + 0.05*100 = 9 ns
¨ AMAT(HR=99%) = 4 + 0.01*100 = 5 ns
¨ AMAT(HR=50%) = 4 + 0.5 *100 = 54 ns

v Principiul localității datelor.


• Dacă am nevoie de date din zone adiacente de memorie, și când aduc ceva în cache aduc și ce este
după/apropiat (block de memorie), atunci am deja datele în cache – rapid;
• Costa mult mai puțin (d.p.d.v. timp) să aduc un bloc de memorie de N bytes decât să aduc de N ori
câte 1 byte – controllere de memorie optimizate;
• La instrucțiuni mai ales, este foarte probabil ca următoarea instrucțiune care va fi executată să fie
imediat în memorie după instrucțiunea curentă (mai puțin la salturi în alte zone).

v Pipelining pentru instrucțiuni.


Pipeline = set de elemente procesate conectate în serie, unde ieșirea unui element este intrarea altuia.
Poate fi utilizat pentru date, operații sau chiar instrucțiuni. Ciclul mașină este teoretic un pipeline.

v Procesoare CISC, RISC.


RISC înseamnă Calculator cu seturi de instrucțiuni reduse. Este proiectat pentru a reduce timpul de
execuție prin simplificarea setului de instrucțiuni. Utilizează instrucțiuni extrem de optimizate. Procesoarele
bazate pe RISC sunt folosite în mod obișnuit pentru dispozitive portabile, cum ar fi telefoanele mobile și
tabletele, deoarece acestea sunt mai eficiente, hardware-ul este mult mai simplu, costul de producție este
mai. mic. RISC permite pipelining de instrucțiuni. RISC – INTEL.
CISC înseamnă Set de instrucțiuni complexe pentru calculator. Obiectivul principal al proiectării CISC
este de a reduce numărul de instrucțiuni dintr-un program. Prin urmare, aceeași sarcină poate fi obținută cu
un număr mai mic de instrucțiuni utilizând CISC. Se utilizează în principal pentru laptopuri și computere
desktop intenționate pentru putere mare de procesare. CISC – ARM.

v Sistemul I/O – periferice.


• Accesul la dispozitivele I/O este mult mai lent comparativ cu accesul la memoria principală (RAM):
– RAM: 100 ns;
– disk SSD: 25-100 μs;
– disk HDD: 5-10 ms;
– networking: 10-100 ms;
– tastatură: 100-200 ms (viteza 5-10 caractere/secundă);
• Fiecare dispozitiv I/O este diferit:
– tip – intrare, ieșire, intrare/ieșire;
– date – informația schimbată între periferic și CPU;
– protocol – cum se transferă datele;
– formatul – cum sunt reprezentate datele (tast. en/jp);
– viteza acces – datele trebuie trimise la viteza perif.;
– volumul de date – tastatura vs. disk sau video;
– erori – detecție, corecție.

v Metode de control I/O (programata, întreruperi, DMA, channel).


• Programată (programmed I/O);
– instr. speciale pt. I/O;
• Prin întreruperi (interrupts);
– dispozitivele anunță CPU întrerupând exec. Programului;
Arhitectura sistemelor de calcul
• Acces memorie - DMA (direct memory access);
– acces direct la memorie al dispoz. I/O;
• Channel attached I/O.
Programmed I/O:
• Procesorul are instrucțiuni speciale pt. acces I/O;
• Ex. 8085 – porturi – instr. IN si OUT;
• Fiecare dispozitiv are o adresă;
– port special – PIO (port I/O) – 8085;
– în memorie – MMIO (memory mapped I/O);
• Acces (pt. transfer date);
– prin magistrală separată – I/O bus;
– sau partajată cu magistrala de memorie – 8085;
• Folosită în general pt. volum mic de date transfer;
• Maparea în memorie simplifică programarea;
– dar dispozitivul periferic este mai complex;
– necesită mecanism de acces la memorie (adresare);
– se pierde o zonă de memorie pt. periferic;
• Intel folosea la început PIO – port I/O;
– acum folosește și MMIO;
• Motorola, ARM – memory mapped I/O;
• Funcționare:
– CPU verifică permanent (program) starea perifericului;
• ex. dacă s-a apăsat o tasta, dacă imprimanta a terminat etc. ;
• în program se apelează periodic instrucțiunea IN;
– operațiile I/O sunt inițiate de CPU à polling;
– necesită consum CPU%;
• e ok pentru volum mic de date;
– prea lent pt. transfer mare.
Interrupt I/O:
• Dispozitivul anunță atunci când are ceva de trimis;
• CPU nu mai face polling periodic al dispozitivelor;
• CPU este întrerupt din execuția programului curent;
• Se salvează starea curentă (ca la un apel de subr.), după care se execută subrutina de tratare a
întreruperii (interrupt handler) à unde se face transferul (PIO/MMIO);
• După terminarea transferului, se reia execuția programului;
• Cum identificăm perifericul? ;
• Pot exista mai multe întreruperi, câte una pentru fiecare periferic, respectiv câte o subrutină asociată
à adrese de întrerupere;
• IRQ – interrupt request;
• ex. INT1 = keyboard
INT8 = real time clock
• Exisă un controller special de întreruperi
PIC - Programmable Interrupt Controller;
• Generează adresa corespunzătoare de întrerupere.
Arhitectura sistemelor de calcul
DMA I/O:
• DMA – Direct Memory Access;
• La transferul IO programat (PIO sau MMIO), CPU este ocupat pe toata durata transferului,
executare instrucțiuni de IN/OUT;
• Pentru transferuri mari de date – CPU devine lent;
• DMA -> CPU doar inițiază transferul, după care își vede de programul curent, fiind anunțat de
terminarea transferului printr-o întrerupere;
• CPU nu mai este busy cu execuția transferului (overhead mic de transfer I/O);
• Practic transferul datelor și execuția programului se efectuează în paralel;
• Avem nevoie de un dispozitiv special pentru transferul și controlul memoriei – DMA controller;
• Folosit la transferurile cu disk-ul, network, video;
• Transferul de date în memorie;
• Mare atenție la memoria cache! ;
• Folosit și la transferul de memorie între mai multe core-uri într-un singur procesor;
• Sistemul este mai complex cu DMA – cost;
• Unele sisteme embedded nu au nevoie;
• Mai multe moduri de lucru:
• burst à DMA preia controlul complet asupra memory bus pe toata durata transferului,
CPU nu are acces la mem. ;
• cycle stealing à DMA face periodic cerere la memory bus, CPU având prioritate în a
accesa memoria;
• transparent à DMA folosește bus-ul doar când CPU nu execută instrucțiuni de acces la
memorie.
Channel I/O:
• Procesoare specializate pentru transfer I/O (IOP);
• Pot executa diverse mici „programe de transfer”;
• CPU doar creează acest program de transfer, care va fi executat de procesorul I/O – IOP;
• IOP se ocupă de inițializarea transferului, protoc. folosit, comenzile care tb. executate etc. ;
• Se pot efectua transferuri de grupuri de fișiere, independent de CPU;
• Foarte scump, dar foarte performant;
• Folosit la servere high-end.

v Moduri de lucru DMA.

1. CPU inițiază transferul à adder memorie, periferic, direcție (R/W), bytes transfer;
2. DMA execută operația de transfer MEM <-> I/O;
3. DMA anunță CPU printr-o întrerupere că a terminat.
* poate fi folosit DMA si pt. transfer MEM <-> MEM.
Arhitectura sistemelor de calcul
v Magistrală periferice (lane, PCIe, USB).
PCI:
• PCIe x1 = 1 lane, 4 fire = 2Rx + 2Tx, transfer bidirecțional, serial – câte 8 biți, x2, x4, x8, x16, x32;
• PCIe – Peripheral Componnent Interconnect Express;
• Evoluție bus perif. – ISA -> PCI -> PCI-X -> PCIe;
• Diverse versiuni, mini-PCIe, M.2 etc. .

USB:
• USB – Universal Serial Bus;
• Standard conexiune/comunicare între calc. și periferice;
• USB – 4 fire,2 – alimentare, 2 – date (D+/D-);
• USB 3.0 – full duplex+2 perechi fire (Tx, Rx) à 1 lane.
Arhitectura sistemelor de calcul
Elemente aplicative
• Conversia unui număr din baza 10 în baza 2.
Conversia unui număr pozitiv întreg se face conform următorului algoritm:
1. Se împarte numărul în baza 10 la 2. Restul împărțirii poate fi 0 sau 1;
2. Câtul primei împărțirii se împarte din nou la 2. Restul împărțirii poate fi 0 sau 1;
3. Se continuă împărțirea până când avem 1 : 2 = 0 r 1;
4. Numărul în baza 2 se obține prin citirea în ordine inversă a resturilor obținute prin împărțirea la 2,
inclusiv restul împărțirii 1 : 2 = 0 r 1.
Sau se poate efectua astfel:
1. Se creează un tabel ce conține multiplii lui 2 în antet;
2. Se ia numărul și se scade cu cel mai apropriat, mai mic multiplu al lui 2, până când se ajunge la
valoarea 0. În locul de sub fiecare multiplu al lui 2, care a fost folosit în scădere se va pune 1, iar la
final se completează cu 0 spațiile libere.

3. Șirul de biți obținut din converse se scrie începând cu prima valoare de 1.

Dacă numărul este întreg negativ atunci:


1. se rescrie șirul de biți obținut prin conversie în baza 2 a numărului zecimal;
2. dacă în fața șirului primul bit este 1, se mai adaugă un bit care să fie 0 (bit de semn);
3. se face negația biților;
4. se adună 1 (complement în față de 2).

Conversia unui număr ± cu virgulă se face conform următorului algoritm (standardul IEEE 754):
semn exponent mantisa
1 bit 8 biți 23 biți
1. Se ia partea zecimală a numărului cu 0 parte întreagă (ex. 49,23 Þ 0,23);
2. Partea zecimală se înmulțește consecutiv cu 2 până se obțin 24 biți astfel:
3. Dacă rezultatul înmulțirii a dat un număr mai mic de 1,00 atunci se scrie ca bit 0;
4. Dacă trece de valoarea 1,00 se scrie ca bit 1 și se ia din nou partea zecimală, cu 0 parte întreagă
(ex. 0.52*2 = 1.04 [se scrie bit 1] Þ 0.04*2 = 0.08 [se scrie bit 0] ...);
5. Se ia partea întreagă a numărului și se convertește în baza 2 conform algoritmului anterior;
6. Șirul de biți obținuți din conversia părții întregi se scriu începând de la prima valoare de 1 (nu
trebuie să aibă 0 în față, ex. 00111011 Þ 111011).
7. Se rescrie tot șirul de biți atât al conversiei părții întregi, cât și al părții facționale cu „ , ” între ele;
8. Se numără câți biți există în conversia părții întregi și se ține minte valoarea cu „ + ” în față;
Obs! Dacă nu există parte întreagă (nr este de forma 0.xyx... sau 0.00...0xyz...) atunci se numără câți
biți sunt 0 după virgulă și se memorează această valoare cu „ – ” în față, iar apoi se elimină aceste
valori de 0 (ex. 0,000011101... Þ 0,11101... și se tine minte -4 – au fost 4 de 0 de după „ ,”).
9. Se trec toți biții după virgulă;
10. Se elimină primul bit de după virgulă – acum acest șir reprezintă mantisa;
11. Valoarea memorată anterior de adună la 126 (standard), iar apoi numărul nou obținut se
convertește în baza 2 – va reprezenta exponentul;
12. Dacă numărul a fost negativ se pune 1 la bitul de semn, 0 altfel;
13. Se rescriu valorile respectând schema anterioară cu privirea poziționării semnului, exponentului și a
mantisei: semn | exponent | mantisă.
Arhitectura sistemelor de calcul
NR 2048 1024 512 256 128 64 32 16 8 4 2 1
-154.18 0 0 0 0 1 0 0 1 1 0 1 0
134 0 0 0 0 1 0 0 0 0 1 1 0

Parte întreagă Parte fracționară 0.18 BIT BIT 154


Zecimal 154 0.18 *2 1 -128
Binar 10011010 1011100000101... 0.36 0 26
8 biți *2 1 -16
0.72 0 10
*2 1 -8
10011010.1011100000101... Scrierea nr 1.44 -> 0.44 1 2
0.100110101011100000101... Trecerea de după virgulă *2 1 -2
0.00110101011100000101... Eliminarea primului bit 0.88 0 0
*2
1.76 -> 0.76 1
126+8=134 Conversia standard *2
134 binary= 10000110 ... ...

semn exponent mantisa


1 10000110 00110101011100000101...

• Conversia unui număr din baza 2 în baza 10.


Conversia unui număr pozitiv întreg se efectuează conform următorului algoritm :
1. Se adună cu 0 cel mai semnificativ bit al numărului binar;
2. Rezultatul de la pasul 1 se înmulțește cu 2 și se adună cu bit-ul ce urmează după MSB1;
3. Rezultatul de la pasul 2 se înmulțește cu 2 și se adună cu următorul bit de la stânga la dreapta;
4. Se continuă procesul de mai sus până când se ajunge la bit-ul cel mai puțin semnificativ – LSB2.

Sau se poate efectua astfel:


1. Se rescrie tabelul ca la conversia din zecimal în binar;
2. În zonele în care există biți 1, luăm multiplii lui 2 aferenți bitului 1 și îi adunăm.

NR 2048 1024 512 256 128 64 32 16 8 4 2 1


? 1 0 0 0 1 0 1 1 1 1 1 0

?= 2048+128+32+16+8+4+2= 2238

Conversia unui număr negativ întreg se efectuează conform următorului algoritm :


1. Algoritmul este același cu cel de la conversia unui număr pozitiv întreg din baza 2 în baza 10;
2. Dacă cel mai din dreapta bit este 1 atunci numărul este negativ (ex. 00010010=18; 10010010=-18).

Conversia unui nr ± cu virgulă este algoritmul invers pentru conversia din zecimal în binar a
numerelor cu virgulă, folosindu-ne și de conversia prezentată anterior.

•Conversia unui număr din baza 10 în baza 16 (hexa) și vice versa.


Algoritmii sunt aceiași pentru numerele pozitive/negative de conversie din baza 10 în baza 2 și
vicem. Numărul va trebui convertit mai întâi în baza 2, iar apoi folosind tabelul de pe pagina (tabel 1)
următoare se convertesc pe grupuri de 4 biți numerele, făcând translația binar-zecimal pentru fiecare grup.

• Conversia unui număr din baza 2 în baza 16 (hexa) și vice versa.


Idem cu anterior (conversia baza 10 în 16).

1
MSB » most significant bit.
2
LSB » least significant bit.
Arhitectura sistemelor de calcul

Tabel binar
bits hexa
0000 0
0001 1 1111= 15 =F
1110 = 14 = E
0010 2
0101 = 5
0011 3 0011= 3
0100 4
0101 5
0110 6 1010 = 10 = A
1011 = 11 = B
0111 7 1100 = 12 = C
1000 8 1101 = 13 = D
1001 9 1110 = 14 = E
1010 A 1111 = 15 = F
1011 B
1100 C
1101 D
1110 E
1111 F
Tabel 1

Forme normale, circuite și K-map. Tabel 2


• FND = forma normală disjunctivă
Se folosește cu tabela de adevăr. E o sumă de produse ale biților de intrare cu output 1.
Liniile 2, 3, 4: A’B+AB’+AB din tabelul de mai sus (tabel 2).
• FNC = forma normală conjunctivă
Se folosește cu tabela de adevăr. E un produs de sume ale biților de intrare cu output 0.
Linia 1: A’+B’ din tabelul de mai sus (tabel 2).
• Circuite. Pentru a realiza un circuit trebuie cunoscute următoarele simboluri și operațiile logice
aferente fiecăruia:
Se pleacă de la imputuri A, B,
C... și se ajung la outputuri Q, V,
T... . Traseul este reprezentat prin
fire/cabluri electrice, iar operațiile
logice prin simboluri care sunt
tranzistori (în practică).
Pentru a reprezenta un circuit
logic se utilizează FNC și/sau
FND care arată operațiile logice
pe traseu ale imputurilor.
Arhitectura sistemelor de calcul
Arhitectura sistemelor de calcul
Karnaugh map aka K-map

Exemplu:

Figură 1. K-map pentru 3 imputuri Figură 2. K-map pentru 4 imputuri A,B,C,D


A,B,C

Se observă că pentru fiecare hartă Karnaugh indicii (i) corespunzători sunt complementari cu liniile din
tabela de I/O (input-output ex. A, B ,C ,Q). La fiecare indice se completează în căsuță cu valoarea de ieșire
Q.
Ex:
pentru tabela:
A B C Q
i

1 0 0 0 1

2 0 0 1 1

3 0 1 0 0

4
0 1 1 0

1 0 0 1 (indicii i=1,8, teoretic încep de la i=0,7, dar din


5
comoditate vom lua de la 1).
6 1 0 1 1

7 1 1 0 1

8
1 1 1 0

se obține:
B B’C’[00] B’C[01] BC[11] BC’[10]
A C
A’[0] 1 1 1 2 0 4 0 3

A[1] 1 5 1 6 0 8 1 7
Arhitectura sistemelor de calcul
Acum se selectează celulele ce conțin valoarea 1 în modul următor:
1. Grup de o singură celulă izolată (vezi i=7);
2. Grup de mai multe celule care formează un grup de 2n elemente (vezi i=1,2,5,6 ce formează un grup
de 4 elemente: 22).

Obs! Grupurile se pot suprapune -„overlapping”.

Acum se iau pe rând fiecare grup și se dezvoltă căsuță cu căsuță folosind metoda FND.

I) A’B’C’(1)+A’BC(2)+AB’C’(5)+AB’C(6) – S-a dezvoltat grupul de 4 elemente: i=1,2,5,6;


Apoi urmărim dacă există cel puțin 2n-1 litere comune pentru a da factor comun (adică pentru a
simplifica/a reduce). În acest exemplu observăm că există un astfel de caz la A’B’C’ și AB’C’, unde
B’C’ sunt comune, doar A diferă. Deci vom da factor comun acest produs: A’B’C’+ AB’C’=
B’C’(A+A’) [știm că A+A’ este egal cu 1, iar 1 este elem neutru la înmuțire, adică la conjunție, implicit
nu afectează] din care reiese: B’C’.
Forma finală a grupului va fi: A’BC+ AB’C+ B’C’.

II) ABC’(7) – S-a dezvoltat grupul de 1 element: i=7.

Făcând disjuncția (adunarea lui I și II) rezultă: A’BC+ AB’C+ B’C’+ ABC’.
Aici nu mai există niciun factor comun, deci va rezulta forma finală ce reiese din K-map.

Aplicații
Exemple subiecte examen:
1. Se dă numărul -2450 în baza zece. Care este reprezentarea numărului în baza 2, în complement față
de 2 pe 16 biți. Să se reprezinte același număr în baza 16, în complement față de 2 pe 16 biți.
NR 2048 1024 512 256 128 64 32 16 8 4 2 1
-2450 1 0 0 1 1 0 0 1 0 0 1 0

0000 1001 1001 0010 2450-2048-256-128-16-2=0


Not 1111 0110 0110 1101
+1 Compl 2
1111 0110 0110 1110 16 bits DECIMAL
F 6 6 E 16 bits HEXA

2. Să se reprezinte numărul real 45.235 în format cu virgulă mobila IEEE 754 pe 32 biți (1 bit semn, 8
biți exponent, 23 biți mantisa).
NR 2048 1024 512 256 128 64 32 16 8 4 2 1
45.235 0 0 0 0 0 0 1 0 1 1 0 1

45-32-8-4-1=0

0.235*2=0.47*2=0.94*2=[1.88]0.88*2=[1.76]0.76*2=[1.52]0.52*2=[1.04]0.04*2=0.08*2=0.16*2=0.32*2=0.64*2=[1.28]
0 0 1 1 1 1 0 0 0 0

Parte întreagă Parte fracționară


Zecimal 45 0.235
Binar 101101 0011110000101000...
6 biți

101101.0011110000101000… Scrierea nr
0.1011010011110000101000… Trecerea de după virgulă
0.011010011110000101000… Eliminarea primului bit
Arhitectura sistemelor de calcul
NR 2048 1024 512 256 128 64 32 16 8 4 2 1
132 0 0 0 0 1 0 0 0 0 1 0 0

126+6=132 Conversia standard 132-128-4=0


132binary= 10000100
semn exponent mantisa
0 10000100 011010011110000101000…

3. Se dă tabela de adevăr de mai jos (A,B,C,D intrări X,Y ieșiri). Să se construiască un circuit logic
combinațional care implementează logica descrisă în tabel folosind forma normală disjunctivă sau
conjunctivă. Să se simplifice folosind diagramele Karnaugh. Se pot folosi porți logice de tip: NOT,
AND, OR, XOR, NAND cu oricâte intrări.
A B C D X Y Vom folosi FND pentru outputul X (sunt mai puține valori de 1) și FNC pentru
outputul Y (sunt mai puține valori de 0):
0 0 0 0 0 1
• FND (X): A’B’C’D + A’BCD’ + AB’CD’ + ABC’D.
0 0 0 1 1 0 • FNC (Y):
(A+B+C+D’)(A+B’+C+D’)(A+B’+C’+D)(A’+B’+C+D)(A’+B’+C’+D’).
0 0 1 0 0 1
0 0 1 1 0 1
0 1 0 0 0 1
0 1 0 1 0 0
0 1 1 0 1 0
Circuit
0 1 1 1 0 1 FNC(Y)
1 0 0 0 0 1
1 0 0 1 0 1
1 0 1 0 1 1 Circuit
1 0 1 1 0 1 FND(X)

1 1 0 0 0 0
1 1 0 1 1 1
1 1 1 0 0 1
1 1 1 1 0 0

C’D’[00] C’D[01] CD[11] CD’[10]


CD K-map pentru output Y:
AB C A’B’C’D’+A’BC’D’=A’C’D’
A’B’[00] 0 1 0 0 A’B’CD+A’BCD=A’CD
A’B’CD’
A’B[01] 0 0 0 1 A’B’C’D’+A’B’C’D+AB’CD+AB’CD’=AB’C’+
AB[11] 0 1 0 0 +AB’C=AB’
FND: A’C’D’+ A’CD+ A’B’CD’+ AB’
AB’[10] 0 0 0 1

C’D’[00] C’D[01] CD[11] CD’[10]


CD
AB C
K-map pentru output X:
A’B’[00] 0 1 0 0 A’B’CD’
A’BCD’
A’B[01] 0 0 0 1 ABC’D
AB[11] 0 1 0 0 AB’CD’
AB’[10] 0 0 0 1 FND: A’B’C’+ABC’D+AB’CD’
Arhitectura sistemelor de calcul

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