Sunteți pe pagina 1din 8

Capitolul 1

Introducere

1.1 Obiectul cursului


Obiectul cursului este de a prezenta generatiile actuale de microprocesoare, precum si un set
cat mai complet de tehnici cerute pentru a interfata aceste microprocesoare (notate μP ) cu
componentele unui sistem si, implicit, cu lumea reala.
Rapida avansare in performanta si densitate a tehnologiei VLSI a furnizat proiectantului
oportunitatea de a realiza performante fara precedent pe un singur “chip”. Noile tehnologii au
dus la proiectarea unor μsisteme cu performante apropiate marilor sisteme. Pentru a realiza astfel
de performante inalte, proiectantul de sistem cu μP trebuie sa recurga la tehnici avansate in
marile sisteme, ca de exemplu memoria cache, organizarea “pipelined” (banda de asamblare),
unitati paralele functionale.
Acum este posibil a implementa un sistem complet cu μP, incluzand interfetele, intr-un
numar mic de chip-uri VLSI. Uzual, in proiectarea μsistemelor, multe din tehnicile de interfatare
pot fi implementate prin hardware (prin componente) sau prin software (prin programe), sau
printr-o combinatie a celor doua. Trebuie facut un compromis rezonabil intre eficienta hardware
si numarul scazut de componente a implementarii software.

1.2 Arhitectura sistemului


Structura, arhitectura si proiectarea oricarui sitem de calcul sunt afectate de un numar larg
de parametri interdependenti. Pentru a reduce complexitatea si a reduce numarul de parametri
care trebuie sa fie considerati simultan, un μsistem este tipic vazut ca o structura ierarhica.
Fiecare nivel de ierarhie reflecta un aspect major al sistemului si contine numai un mic subset
din totalul parametrilor. Fiecare interfata dintre aceste niveluri variate este uzual asigurata pentru
a fi relativ independenta de cele 2 niveluri de interfata. La nivelul cel mai inalt al ierarhiei este
programul de aplicatii, adesea scris intr-un limbaj de nivel inalt. Astfel, limbajul poate fi
proiectat fara a lua in considerare ceea ce ramane din ierarhie. Mai jos de acest nivel se afla
compilatorul si sistemul de operare. Sistemul de operare dirijeaza resusele sistemului si
furnizeaza servicii de baza ale sistemului. Sub acesta sta legatura arhitecturala, limita dintre
hardware si software. Aceasta cheie de legatura consta din toate facilitatile si operatiile care sunt
facute disponibile pentru programator; de exemplu, registre, setul de instructiuni, capacitatile de
adresare. In final este nivelul hardware, care poate fi in plus stratificat intr-o organizare de sistem
(masina) incluzand structura pipe-line, microcod si flux de date, familii de circuite si tehnologia
insasi.
Chiar daca nivelurile pot fi proiectate separat, proiectarea unui μsistem poate fi imbunatatita
daca mai multe niveluri ale ierarhiei sunt luate impreuna. De exemplu, relatia de legatura intre
compilarea limbajului de nivel inalt si arhitectura: la nivelul arhitectural, instructiuni simple dar
puternice au fost alese pentru a forma un compilator eficient; un set simplu de instructiuni poate
face selectia codului in compilator mai usor; mai mult, alegerea cu atentie a instructiunilor
asigura lungimi de cale comparabile cu acelea generate cu un set complex de instructiuni; de
asemenea, prin neincluderea operatiilor memorie-memorie, dar permitand numai operatii
registru-registru si incarca registru in si de la memorie, compilatorul poate suprapune frecvent
accesele de memorare cu executia altor instructiuni, dand un rezultat mai bun (output).
De cand VLSI permite din ce in ce mai mult ca sistemele sa fie vazute ca un singur chip, nu
numai ca proiectarea permite traversarea granitelor dintre diferite niveluri ale ierarhiei, dar, de
fapt, aceasta devine o necesitate, mai ales la nivelurile scazute ale ierarhiei.
1.2.1 Sistem standard
μP actual lucreaza uzual pe 32 de biti de date si chiar 64 de biti:
• exemple pe 32 b: Intel 386 DX, Intel 486, Motorola MC 68020, etc.
• exemple pe 64 b: Intel Pentium, Power PC, etc
Aceste μP, datorita noilor tehnologii VLSI, integreaza pe un chip si facilitati de
memorare precum si facilitati de intrare/iesire (I/O).
Un standard actual de sistem ar fi:

Mag. date
Unit. centrala de prel. -CPU

Unitate de decodificare si
prefetch a instructiunilor
Memorie
Memorie sistem
C
ROM (instr.,date)
O Unitate de executie Procese Dispoz
(rutine
N I/O .I/O
program) C P V
T
R Fisier registru si logica de a r i
O translatare a adreselor c i r
L h n t.
e c Mag. adrese
Unitate de management al
memoriei (on sau off-chip) -
MMU

Mag. control

- obs: memoria cache poate fi on-chip sau off-chip

Intr-un sistem cu μP exista de regula 3 magistrale:


• o magistrala bidirectionala de date (implementata cu logica tri-state pentru a
permite lucrul direct cu memoria)
• o magistrala unidirectionala de adrese, conectata intern, in μP, la un pointer de
adrese (un numarator de program – PC), care si ea necesita logica tri-state pentru
a permite lucrul direct cu memoria
• o magistrala de control (comenzi), care pastreaza variatiile semnalelor de
sincronizare la si de la μP (nu este necesara logica tri-state)

Diferenta esentiala intre diferitele tipuri de μP este magistrala de control.

Caracteristicile specifice magistralei de control sunt cele care fac chip-urile de interfata
intrare/iesire(I/O) compatibile sau incompatibile cu un μP sau altul.
Magistrala de control furnizeaza 4 functii principale:
• sincronizare cu memoria
• sincronizare de I/O
• programare CPU – intreruperi si DMA
• utilitati, ca semnale de ceas si initializare
Exemple: semnalul “ready” (gata) la citirea cu memoria sau dispozitiv I/O pentru a indica
disponibilitatea datelor; semnalul “acknowledge” (acceptare) pentru a confirma receptia datelor.

2
1.2.2 Standarde de magistrala
Pentru conectarea mai multor module este necesara o cale de comunicatie intre acestea, o
magistrala. Magistralele au fost impartite in 2 mari clase: magistrale paralele si magistrale
seriale.
Pentru a simplifica comunicatia intre module au fost elaborate standarde de magistrala.
Ca standarde de magistrala se numara:
a) paralele: IEEE 488, 625: Hewlett Packard Interface Bus (HPIB)
IEEE 696 : S100 Bus
ISA: IBM PC/AT
EISA: Compaq, HP
NuBus: Macintosh Family
VME: Sun 3, Sun 4
Q22 Bus: DEC PDP, DEC MICROVAX
PCI: IBM PC
b) seriale: EIA RS 232C – comunicatie asincrona
EIA RS 422 si 423 – comunicatie asincrona si sincrona

1.2.3 O comparatie intre RISC si CISC. Exemple


In prezent exista 2 mari familii de μP: procesoare cu set redus de instructiuni (RISC-
Reduced Instruction Set Computer) si procesoare cu set complex de instructiuni (CISC –
Complex Instruction Set Computer).
Pentru a face o comparatie intre procesoare RISC si CISC se vor prezenta caracteristicile
principale ale celor 2 arhitecturi, in momentul aparitiei procesoarelor RISC.

Caracteristicile arhitecturilor RISC:


a) instructiunile trebuie sa fie in numar redus (<100) si sa se execute intr-un singur ceas
b) accesele la memorie sunt limitate la 2 instructiuni, numite load si store
c) decodificarea instructiunilor este cablata
d) jocul de instructiuni trebuie sa se bazeze pe un format fix (de regula 32 biti), cu moduri
de adresare simple (2 moduri: load si store)
e) fiecare operatie complexa trebuie sa fie rejectata la nivelul compilatorului
f) ansamblul arhitecturii trebuie sa profite la maximum de pe urma modului pipeline
g) procesorul trebuie sa posede un numar mare de registre interne (>10), cu sau fara tehnica
de ferestre
h) procesorul trebuie sa fie adaptat adaugarii sistemelor de memorie cache si
coprocesoarelor
i) setul de instructiuni este in general conceput pentru un domeniu de aplicatii perfect
determinate
j) ~ 100 MIPS

Caracteristicile arhitecturilor CISC:


a) set cat mai larg de instructiuni (>100)
b) numar cat mai mare posibil de moduri de adresare (>4)
c) mai multe formate de instructiuni (>4), deci lungime variabila a instructiunilor
d) cele mai multe instructiuni se executa in mai mult de un ciclu masina
e) accesele la memorie se fac prin tipuri variate de instructiuni
f) existenta unui numar relativ mic de registre interne (<10)
g) control μprogramat
h) instructiunile masina sunt de un nivel relativ inalt
i) ~ 10 MIPS

3
Paralela RISC vs. CISC:
- viteza de executie (performanta) RISC poate fi crescuta printr-o proiectare atenta a caii
de date, benzii de asamblare si a celorlalte resurse ale CPU (aceasta si datorita setului
redus de instructiuni si spatiului fizic redus al controlorului)
- compilatoarele optimizate, capabile sa organizeze fluxul de instructiuni de asamblare in
cea mai eficienta ordine, sunt usor de dezvoltat pentru un set simplu si redus de
instructiuni (aceasta a dus si la posibilitatea executiei unei instructiuni pe un ciclu
masina)
- μsistemele RISC sunt mai orientate pe aplicatii si nu sunt utile in anumite medii de
programare; ele au insa eficienta ridicata pe aplicatii
- compilatoarele optimizate pentru RISC solicita uzual mai mutl timp de executie decat
cele neoptimizate utilizate de CISC (datorita task-urilor aditionale din timpul compilarii
pentru managementul benzii de asamblare, anticiparii ramificatiilor si reorganizarii
codului); prin executi unei instructiuni pe un ciclu masina, RISC vor avea in general un
timp mai scurt de executie
- spre deosebire de CISC, in care multe registre interne sunt cu scop special, in RISC exista
multe registre cu scop general

1.3 Modalitati de evaluare a performantelor


1.3.1 Frecventa de executie
I R
a) MIPS = = [milioane de instructiuni / sec]
TCPU × 10 6
CPI × 10 6
I - arhitectura setului de instructiuni si tehnologia de compilare
TCPU - timp sistem CPU [sec / program]
R - tehnologia hardware si organizarea lui [cicli de ceas / sec]
CPI - organizarea si arhitectura setului de instructiuni (numarul mediu de cicli de ceas per
instructiune) [cicli ceas / instructiune]

MIPS este dependent de setul de instructiuni, facand astfel dificil de comparat MIPS-urile
calculatoarelor cu diferite seturi de instructiuni.
MIPS variaza intre programe pe aceeasi masina si poate varia invers cu performanta.
De regula se calculeaza un MIPS relativ:
Tref
MIPS rel = × MIPS ref
Tneev
Tref - timp de executie al unui program pe masina de referinta
Tneev - timp de executie al aceluiasi program pe masina ce este evaluata
MIPSref - MIPS pe masina de referinta
MIPSrel urmeaza numai timpul de executie pentru programul dat si intrari.
Nr .operatii VM din program
b) MFLOPS =
TCPU × 10 6
[milioane de operatii in virgula mobila / sec]
MFLOPS este dependent de masina si de program. Pentru ca nu este dependent de
instructiuni, este destinat cu brio compararii diferitelor μsisteme.
Din pacate, MFLOPS considera in general operatiile in VM, netinand cont de setul diferit
de operatii in VM al diferitelor masini sau de viteza diferitelor operatii in VM ale aceluiasi set.

4
De aceea, in general un benchmark (program de evaluare a performantelor) calculeaza un numar
normalizat de operatii in VM. Avem:
OVM
MFLOPS =
TCPU × 10 6
unde OVM – numarul total de operatii in VM executate intr-un program (ex: Spice)
si apoi
OVM norm
MFLOPS norm =
TCPU × 10 6
unde OVM norm – numarul total de operatii in VM normalizate prin benchmark.

1.3.2 Alegerea programelor de evaluare a performantelor


Pentru a evalua un nou sistem, ar fi simplu de comparat timpul de executie pentru al sau
workload – mixtura programelor si comenzilor sistemului de operare pe care utilizatorii le
executa pe o masina. Se folosesc diverse metode pentru anticiparea performantelor pentru noua
masina.
Exista 4 nivele de programe:
a) Programe (Real Programs)
In timp ce cumparatorul poate sa nu stie ce fractie de timp este cheltuita in aceste
programe, el stie ca unii utilizatori le vor executa pentru a rezolva probleme reale. Exemple:
compilatoare pentru C, software de procesare de texte ca TeX, utilitare CAD sau Spice.
Programele reale au intrari, iesiri si optiuni pe care un utilizator le poate selecta cand executa
programul.
b) Nuclee (Kernels)
Mai multe incercari au fost facute pentru a extrage mai putin, bucati cheie din programele
reale si a le evalua performantele. Buclele Livermore si Linpack sunt cele mai bune exemple
cunoscute. Spre deosebire de programele reale, nici un utilizator n-ar executa programele nucleu,
pentru ca ele exista doar pentru a evalua performanta. Nucleele se folosesc cel mai bine pentru a
evalua performanta trasaturilor inividuale ale unei masini, pentru a explica diferentele din
performantele programelor reale.
c) Programe de test (Benchmarks)
Au in mod tipic 10÷1000 linii de cod si produc un rezultat pe care utilizatorul deja il stie
inainte ca el sa execute programul respectiv.
Programe ca Sita lui Erastostene (Sieve of Erastosthenes), Puzzle sau Quicksort sunt des
folosite.
d) Programe sintetice de test ( Synthetic Benchmarcks)
Similare nucleelor, ele incearca sa imbine frecventa medie a operatiilor si operanzilor
unui set larg de programe. Cele mai populare sunt programele sintetice de test Whetstone si
Dhrystone. Nici un utilizator nu executa programele sintetice de test, pentru ca ele nu calculeaza
nimic din ceea ce un utilizator ar folosi. Ele sunt de fapt desprinse de realitate pentru ca nucleul
cod este extras din programele reale, in timp ce codul sintetic este creat artificial pentru a imbina
o schita medie de executie.
O dezvoltare promitatoare in evaluarea performantelor este formarea grupului SPEC
(System Performance Evaluation Cooperative) in 1988, grup format din multe companii
reprezentative din industria calculatoarelor: HP, DEC, MIPS, SUN,etc. Programele de test SPEC
(SPEC benchmarks) raporteaza performantele prin masurarea timpului de raspuns pentru un set
de programe de test.

5
1.3.3 Cre¿terea performan¡ei procesoarelor superscalare utilizând memorii
intermediare
Utilizarea memoriilor intermediare (numite ¿i memorii tampon sau “cache”) înåuntrul ¿i
în afara procesorului a condus la o cre¿tere semnificativå a vitezei de execu¡ie, atât în cazul
procesoarelor CISC, cât ¿i în cazul celor RISC, deci ¿i pentru procesoarele VLIW.
Se considerå un sistem tipic constând într-un procesor (CPU – “Central Processing
Unit”), o magistralå sistem (SB – “System Bus” ) ¿i o ierarhie de memorii M:

CPU SB

Se poate calcula rata de execu¡ie a instruc¡iunii ( IR – “Instruction Rate”) în MIPS


utilizând lå¡imea de bandå B (“Bus Bandwidth”). Lå¡imea de bandå în Mocte¡i/sec este definitå
prin volumul de lucru transferat la ¿i de la memorie în unitatea de timp.
Se poate calcula B prin rela¡ia:
n
B = ub × b (1)
nc × t c
unde: ub este utilizarea magistralei, nb este numårul de octe¡i transferat pe un acces la
memorie, nc este numårul de cicli de ceas per transfer cu memoria ¿i tc este durata ciclului de
ceas.
Se considerå cå nc este format din numårul de cicli de ceas pentru magistrala sistem ¿i
numårul de cicli de ceas pentru acces la memoria sistem. De asemenea, se considerå cå un grad
de utilizare a magistralei de minim 75% este întâlnit în majoritatea sistemelor de calcul.
Acum, IR poate fi calculatå prin rela¡ia:
B B
IR = = (2)
nt ni + n d
unde: nt este numårul total mediu de octe¡i per instruc¡iune executatå, ni este numårul de
octe¡i instruc¡iune ¿i nd este numårul de octe¡i de date.
Existå patru cåi diferite de a utiliza o memorie intermediarå într-un sistem de calcul:

Sistem cu memorie intermediarå de instruc¡iuni/date în afara procesorului


Când apare un “cache miss” (adicå o eroare de pagina lipså în memoria intermediarå),
atunci se vor adåuga un numår suplimentar de cicli de ceas (nca) necesari pentru a accesa
memoria sistem. Deci, se poate calcula noul nc* prin rela¡ia:
nc* = nc + nca × miss ratio extern (3)

Sistem cu memorie intermediarå de instruc¡iuni în interiorul procesorului


Când apare o eroare de paginå, se modificå atât nc, cât ¿i ni.
Se pot calcula astfel:
nc*= nc1 + nc × miss ratio (4)
unde: nc1 este nc pentru a accesa memoria intermediarå internå
ni × numărul de octeţi de instrucţiune pe miss
ni * = miss ratio intern × --------------------------------------------------------- (5)
nb

6
Sistem cu memorii intermediare separate pentru instruc¡iuni ¿i pentru date în
interiorul procesorului
Când apare o eroare de paginå, se modificå atât nc, cât ¿i ni, dar ¿i nd.
nc ¿i ni se calculeazå ca mai sus, iar nd astfel:
nd × numărul de octeţi de date pe miss
nd* = miss ratio × -------------------------------------------------- (6)
nb
Sistem cu memorii intermediare interne separate pentru instruc¡iuni ¿i pentru date în
conjunc¡ie cu o memorie intermediarå externå rapidå pentru instruc¡iuni/date
¥n acest caz :
nc* = nc1i + (nc2 + nca × miss ratio extern) × miss ratio intern (7)
unde: nc1i este nc pentru memoria intermediarå de instruc¡iuni internå ¿i
nc2 este nc pentru accesul la memoria intermediarå
ni* ¿i nd* se calculeazå ca mai sus.
Evaluarea performan¡ei unui procesor VLIW
Se vor compara performan¡ele ob¡inute la un procesor superscalar performant (fie acesta
procesorul PowerPC 620) ¿i la un procesor VLIW.
Parametrii comuni cunoscu¡i sunt:
Frecven¡a ceasului: 500 MHz; gradul de utilizare a magistralelor: 75% (rezonabil de
altfel).
Memoria intermediarå de date ¿i instruc¡iuni externå = 128 Kocte¡i; miss ratio = 2.5%;
linii de 128 octe¡i.
Memoria intermediarå de date internå = 64 Kcuvinte; miss ratio = 2.5%; linii de 32 octe¡i.
Memoria intermediarå de instruc¡iuni internå = 64 Kcuvinte; miss ratio = 2%; linii de 64
octe¡i.
Magistrala externå de date este pe 128 bi¡i iar magistrala internå de date este pe 64 bi¡i.
nb = 128/8 =16 octe¡i; nc1i = 8 cicli de ceas pentru un acces la memoria intermediarå de
instruc¡iuni internå; nc2 = 10 cicli de ceas pentru un acces la memoria intermediarå externå; nca =
5 cicli de ceas pentru un acces la memoria sistem.
tc = 1/500 MHz = 0.2 × 10 –8 secunde;
Se aplicå formulele (7), (1), (5), (6) ¿i (2) din paragraful anterior.
Se ob¡ine:
nc* = 8 + (10 + 5 × 0.025) × 0.02 ≅ 8.203 cicli de ceas.
B = 0.75 × [16/(8.203 × 0.2 × 10-8)] = 731.44 Mocte¡i/secundå.
Pentru procesorul RISC, având magistrala internå de instruc¡iuni pe 256 bi¡i, rezultå:
ni = 256/(8 × 4 instruc¡iuni) = 8 octe¡i; nd = 64/8 = 8 octe¡i
ni = 0.02 × [(8 × 32)/16] = 0.32 octe¡i
*
nd* = 0.025 × [(8 × 32)/16] = 0.4 octe¡i
Se ob¡ine o frecven¡å de execu¡ie pentru procesorul RISC:
IRPowerPC = 731.44/(0.32 + 0.4) ≅ 1015.9 MIPS.
Se va considera acum un procesor VLIW cu aceia¿i parametri de lucru ca ¿i procesorul
PowerPC, mai pu¡in magistrala internå de instruc¡iuni, care este pe 432 bi¡i.
Se ob¡ine:
ni = 432/(8 × 13 instruc¡iuni) = 4.154 octe¡i; nd = 64/(8 × 12 opera¡ii) = 0.667 octe¡i.
Rezultå:
ni* = 0.02 × [(4.154 × 32)/16] = 0.166 octe¡i
nd* = 0.025 × [(0.667 × 32)/16] = 0.034 octe¡i
Se ob¡ine o frecven¡å de execu¡ie pentru procesorul VLIW:
IRVLIW = 731.44/(0.166 + 0.034) ≅ 3657.2 MIPS.
Cum IRVLIW / IRpowerPC ≅ 3.6, rezultå o cre¿tere teoreticå de 3.6 ori a ratei de execu¡ie a
instruc¡iunilor pe un procesor VLIW fa¡å de execu¡ia pe un procesor superscalar RISC.

7
Prin eliminarea dependen¡elor dintre instruc¡iuni încå din faza de compilare a
programului, înainte de execu¡ia lui pe procesor, se ob¡ine pentru procesorul VLIW o cre¿tere
suplimentarå a performan¡ei de aproximativ 25%.
Se ob¡ine I*RVLIW = 1.25 × IRVLIW = 4571.5 MIPS.
Rezultå o cre¿tere de performan¡å de I*RVLIW / IRpowerPC ≅ 4.5 ori fa¡å de cea a procesorului
RISC.

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