Conceptul de Pipeline și Simularea Implementării în PCSpim

Previzualizare referat:

Extras din referat:

Cap. 1. Generalitati:

Pipeline : Este o tehnica de implementare in care se permite suprapunerea

executiei mai multor instructiuni.

Secvential (fara pipeline): se repeta secventele : adresare, citire, decodificare, execuţie pentru fiecare set de instructiuni ;

Paralel (cu pipeline): fazele de mai sus pot avea loc simultan. Se adreseaza datele pentru instructiunea 1, se aduc in microprocesor pentru citire. In timp ce pentru instructiunea 1 se citesc datele, se adreseaza datele penru instructiunea 2 s.a.m.d. .

Cap. 2. Tehnica de pipeline - pe procesor:

La procesoarele pe 16 biţi unitatea de prelucrare este împărţită în unitatea de interfaţă cu magistrala (BIU), care se ocupă de aducerea în avans a instrucţiunilor din memorie şi depunerea lor într-o coadă, şi unitatea de execuţie (EU), care preia instrucţiunile din coadă şi le execută. Această împărţire permite lucrul în paralel al celor două unităţi, ceea ce se traduce printr-o funcţionare mai rapidă. La procesoarele pe 32 biţi ideea a fost dusă şi mai departe. Fiecare instrucţiune constă din 4 faze (adresare, citire, decodificare, execuţie). Mai mult, fiecare din aceste faze (mai ales cea de execuţie, care este cea mai complexă) poate consta la rândul său din mai multe operaţii mai simple. Ideea este că fiecare din aceste operaţii lucrează în principiu cu alte resurse, deci toate operaţiile se pot executa în paralel. Astfel, execuţia unei instrucţiuni poate fi împărţită într-un număr mare de acţiuni elementare, numite stagii ale pipeline-ului. Deci, la un moment dat se pot afla în execuţie în procesor mai multe instrucţiuni, în diferite faze; în cazul cel mai fericit există câte o instrucţiune tratată în fiecare stagiu al pipeline-ului. Deşi execuţia unei instrucţiuni de la început până la sfârşit necesită un număr mare de acţiuni, o instrucţiune poate începe să fie executată imediat ce instrucţiunea anterioară a trecut de primul stagiu.

De ce este atât de eficientă această structură? Activitatea procesorului este coordonată cu ajutorul semnalului de ceas al sistemului. Trecerea execuţiei unei instrucţiuni de la un stagiu la altul se poate face numai atunci când "bate" ceasul, deci la intervale regulate de timp. Pe de altă parte, fiecare acţiune elementară (stagiu) se execută într-o anumită durată finită de timp. Dacă semnalul de ceas este prea rapid, acţiunile nu se mai pot realiza pe durata dintre două "bătăi" ale ceasului, ceea ce ar duce la pierderea controlului asupra execuţiei instrucţiunilor. Ca urmare, frecvenţa ceasului nu poate fi crescută oricât de mult, ci este limitată de duratele de execuţie ale stagiilor. Dacă acţiunile elementare sunt mai simple (ceea ce implică o descompunere mai fină a instrucţiunilor şi deci un număr de stagii mai mare), ele vor consuma mai puţin timp; implicit, frecvenţa ceasului va putea fi crescută. Dacă analizăm funcţionarea unui pipeline, observăm că, în cazul cel mai fericit, la fiecare "bătaie" a ceasului se poate termina de executat câte o instrucţiune, deci performanţa procesorului depinde direct de creşterea frecvenţei semnalului de ceas.

Procesoarele Intel au evoluat în sensul creşterii continue a numărului de stagii a pipeline-ului. La ultimele microprocesoare Pentium IV s-a ajuns la un pipeline cu 32 stagii, ceea ce este mult mai mult decât oricare variantă anterioară. Cu alte cuvinte, execuţia unei instrucţiuni a microprocesorului este împărţită în 32 operaţii elementare. Pentru microprocesoarele cu număr foarte mare de stagii se foloseşte şi denumirea de unităţi superpipeline.

Totuşi, structura de tip pipeline are şi dezavantaje. Ideea sa de pornire este că fiecare stagiu lucrează cu alte resurse ale procesorului decât restul stagiilor. Această cerinţă nu poate fi niciodată satisfăcută în totalitate. Ca un exemplu simplu, o operaţie de adunare necesită folosirea unităţii aritmetico-logice (ALU) pentru efectuarea calculului propriu-zis. În acelaşi timp, în faza de adresare a unei instrucţiuni, valoarea registrului indicator de instrucţiuni (IP la procesoarele pe 16 biţi) este incrementată, pentru a putea aduce codul următoarei instrucţiuni. Deoarece incrementarea este tot o operaţie de adunare, va fi nevoie tot de ALU. Astfel, o instrucţiune de adunare aflată în faza de execuţie şi o altă instrucţiune aflată în faza de adresare vor concura pentru aceeaşi resursă (ALU). Asemenea situaţii apar de fapt mult mai des, deoarece între instrucţiuni există relaţii de dependenţă rezultate din însăşi logica programului. Se întâmplă foarte des ca o instrucţiune să aibă nevoie de rezultatul unei instrucţiuni anterioare, care încă nu l-a calculat. Din acest motiv, de multe ori o instrucţiune (şi implicit cele care urmează după ea) trebuie să aştepte până când devine disponibilă o resursă de care are nevoie, dar care este momentan folosită de altă instrucţiune. După cum am văzut, o asemenea resursă poate fi fie o componentă hardware a procesorului, fie rezultatul altei instrucţiuni. Ca urmare, în practică se întâmplă rareori ca procesorul să termine de executat câte o instrucţiune la fiecare "bătaie" a ceasului, deci câştigul de performanţă nu este atât de mare cât sperăm.

Observații:

Elemente de arhitectura calculatoarelor, Universitatea "Aurel Vlaicu" Arad

Descarcă referat

Pentru a descărca acest document,
trebuie să te autentifici in contul tău.

Structură de fișiere:
  • Conceptul de Pipeline si Simularea Implementarii in PCSpim.doc
Alte informații:
Tipuri fișiere:
doc
Nota:
8/10 (1 voturi)
Nr fișiere:
1 fisier
Pagini (total):
10 pagini
Imagini extrase:
10 imagini
Nr cuvinte:
3 071 cuvinte
Nr caractere:
15 673 caractere
Marime:
23.37KB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Referat
Domeniu:
Limbaje de Programare
Predat:
la facultate
Materie:
Limbaje de Programare
Profesorului:
Marinel Iordan
Sus!