Documente Academic
Documente Profesional
Documente Cultură
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.
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 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:
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 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ă).
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
• 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
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.
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
?= 2048+128+32+16+8+4+2= 2238
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.
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
Exemplu:
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
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).
Acum se iau pe rând fiecare grup și se dezvoltă căsuță cu căsuță folosind metoda FND.
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
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
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
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