Sunteți pe pagina 1din 5

Universitatea „Valahia” din Târgoviște

Facultatea de Inginerie Electrică, Electronică și Tehnologia Informației

ARHITECTURA MICROPROCESOARELOR

REFERAT
UNITATEA CENTRALĂ PIPELINE. CARACTERISTICI.
ROLUL HAZARDURILOR ÎN DIMINUAREA
PERFORMANȚELOR ACESTEIA

Student:

Specializarea:

Anul:
UNITATEA CENTRALĂ PIPELINE. CARACTERISTICI. ROLUL
HAZARDURILOR ÎN DIMINUAREA PERFORMANȚELOR ACESTEIA

Microprocesoarele RISC (Reduced Instruction Set Computer) au apărut ca o replică la


lipsa de eficiență a modelului convențional de procesor de tip CISC (Complex Instruction Set
Computer). Multe dintre instrucțiunile mașină ale procesoarelor CISC sunt foarte rar folosite
în softul de baza, cel care implementează sistemele de operare, utilitarele, translatoarele, etc.
Lipsa de eficienta a modelului conventional CISC a fost pusa în evidenta prin anii '80 de
arhitecturi precum INTEL 80x86, MOTOROLA 680x0, iar in domeniul (mini)sistemelor în
special de catre arhitecturile VAX-11/780 si IBM - 360,370, cele mai cunoscute la acea
vreme. Modelele CISC sunt caracterizate de un set foarte bogat de instructiuni - masina,
formate de instructiuni de lungime variabila, numeroase moduri de adresare deosebit de
sofisticate, etc.

Strategia de proiectare a unui microprocesor RISC trebuie sa tina cont de analiza


aplicatiilor posibile pentru a determina operatiile cele mai frecvent utilizate, precum si
optimizarea structurii hardware în vederea unei executii cât mai rapide a instructiunilor.
Dintre aplicatiile specifice sistemelor RISC se amintesc: conducerea de procese în timp real,
procesare de semnale (DSP), calcule stiintifice cu viteza ridicata, grafica de mare
performanta, elemente de procesare în sisteme multiprocesor si alte sisteme cu prelucrare
paralela, etc. Caracteristicile de baza ale modelului RISC sunt urmatoarele: -Timp de
proiectare si erori de constructie mai reduse decât la variantele CISC. -Unitate de comanda
hardware în general cablata, cu firmware redus sau deloc, ceea ce mareste rata de executie a
instructiunilor. -Utilizarea tehnicilor de procesare pipeline a instructiunilor, ceea ce implica o
rata teoretica de executie de o instructiune / ciclu. -Memorie sistem de înalta performanta,
prin implementarea unor arhitecturi avansate de memorie cache si MMU (Memory
Management Unit ). De asemenea contin mecanisme hardware de memorie virtuala bazate în
special pe paginare ca si sistemele CISC de altfel. -Set relativ redus de instructiuni simple,
majoritatea fara referire la memorie si cu putine moduri de adresare. În general, doar
instructiunile LOAD / STORE sunt cu referire la memorie (arhitectura tip LOAD / STORE).
-Datorita unor particularitati ale procesarii pipeline (în special hazardurile pe care aceasta le
implica), apare necesitatea unor compilatoare optimizate zise si reorganizatoare sau
schedulere, cu rolul de a reorganiza programul sursa pentru a putea fi procesat optimal din
punct de vedere al timpului de executie. -Format fix al instructiunilor, codificate în general pe
un singur cuvânt de 32 biti, mai recent pe 64 biti (Alpha 21164, Power PC-620, etc.).
-Necesitati de memorare a programelor mai mari decât în cazul microsistemelor
conventionale, datorita simplitatii instructiunilor cât si reorganizatoarelor care pot actiona
defavorabil asupra "lungimii" programului obiect. -Set de registre generale substantial mai
mare decât la CISC-uri, în vederea lucrului "în ferestre" (register windows), util în
optimizarea instructiunilor CALL / RET. Numarul mare de registre generale este util si pentru
marirea spatiului intern de procesare, tratarii optimizate a evenimentelor de exceptie,
modelului ortogonal de programare, etc.

Procesarea pipeline a instructiunilor reprezinta o tehnica de procesare prin intermediul


careia fazele (ciclii) aferente multiplelor instructiuni sunt suprapuse în timp. Se întelege
printr-o faza aferenta unei instructiuni masina o prelucrare atomica a informatiei care se
desfasoara dupa un algoritm implementat în hardware (firmware) si care dureaza unul sau mai
multi tacti. În acest sens se exemplifica: faza de aducere (fetch) a instructiunii, faza de
decodificare, faza de executie, faza de citire / scriere data, etc.

Arhitectura microprocesoarelor RISC este mai bine adaptata la procesarea pipeline


decât cea a sistemelor conventionale CISC, datorita instructiunilor de lungime fixa, a
modurilor de adresare specifice, a structurii interne bazate pe registre generale, etc.
Microprocesoarele RISC uzuale detin o structura pipeline de instructiuni întregi pe 4 - 6
nivele.

Hazardurile constituie acele situatii care pot sa apara în procesarea pipeline si care pot
determina blocarea (stagnarea) procesarii, având deci o influenta negativa asupra ratei de
executie a instructiunilor. Conform unei clasificari consacrate aceste hazarduri sunt de 3
categorii : hazarduri structurale, de date si de ramificatie. Hazardurile structurale sunt
determinate de conflictele la resurse comune, adica atunci când mai multe procese simultane
aferente mai multor instructiuni în curs de procesare, acceseaza o resursa comuna. Pentru a le
elimina prin hardware, se impune de obicei multiplicarea acestor resurse.

De exemplu, un procesor care are un set de registri generali de tip uniport si în anumite
situatii exista posibilitatea ca 2 procese sa doreasca sa scrie în acest set simultan. Prin
partitionarea timpului afectat nivelului WB în doua, în cadrul acestui nivel se pot face doua
scrieri (în prima jumatate a nivelului WB se înscrie în setul de registri continutul caii A, iar în
a doua parte a nivelului WB se înscrie continutul caii B). În principiu, un astfel de procesor
poate sa execute 4 instructiuni simultan cu conditia ca numai doua dintre ele sa aiba nivelul
WB activ. Evident ca cele 4 seturi de registri generali detin continuturi identice în orice
moment. Deci, prin multiplicarea resurselor hardware s-a creat posibilitatea executiei mai
multor operatii (instructiuni) f'ara a avea conflicte la resurse. O alta situatie de acest fel, dupa
cum deja am mai aratat, poate consta în accesul simultan la memorie a 2 procese distincte:
unul de aducere a instructiunii (IF), iar celalalt de aducere a operandului sau scriere a
rezultatului în cazul unei instructiuni LOAD / STORE (nivelul MEM). Dupa cum am mai
aratat, aceasta situatie se rezolva în general printr-o arhitectura Harvard a busurilor si
cacheurilor. Totusi, exista microprocesoare care detin busuri si cache-uri unificate pe
instructiuni si date (Power PC 601, de exemplu).

O alta solutie mai agresiva decât cele precedente, consta în aducerea instructiunilor din
cadrul ambelor ramuri ale branch-ului în structuri pipeline paralele (multiple instructions
streams). Când conditia de salt e determinata, una din ramuri se va abandona. Totusi,
necesitatea predictiei apare si în acest caz datorita faptului ca în anumite cazuri (salturi
indirecte, reveniri din subrutine) adresa de salt este necunoscuta la finele fazei IF si deci ar
trebui predictionata în vederea procesarii eficiente. Apoi, chiar cunoscute ambele adrese,
apare dificultatea adresarii memoriei si aducerii blocurilor de instructiuni de la aceste 2 adrese
distincte simultan din cache. Desigur ca în acest caz sunt necesare redundante ale resurselor
hard (cache-uri, unitati de executie, busuri, logica de control, etc.) precum si complicatii în
logica de control. Daca pe o ramura a programului exista de exemplu o instructiune de tip
STORE, procesarea acestei ramuri trebuie oprita întrucât exista posibilitatea unei alterari
ireparabile a unei locatii de memorie.

Aceasta solutie implica cresteri serioase ale costurilor, dar se pare ca ar fi singura
capabila sa se apropie oricât de mult fata de idealul predictiei absolut corecte. În cazul
microprocesoarelor, aceste mecanisme de prefetch al ambelor ramuri, nu se aplica în prezent
la microprocesoare, în principal datorita largimii de banda limitate între microprocesor si
memorie. Tehnica s-a întâlnit în cazul supercomputerelor anilor '90 (ex. IBM-3033). Aceste
tehnici de predictie hardware a branch-urilor, datorita complexitatii lor, nu sunt implementate
în mod uzual în microprocesoarele RISC scalare, întrucât se prefera tehnicile software de
"umplere" a BDS-ului (limitat în general la o instructiune) cu instructiuni utile, în general
anterioare celei de salt, lucru posibil în cca. 70%-80% din cazuri. În schimb, predictia
hardware este implementata în cazul unor procesoare superscalare, unde datorita BDS-ului de
câteva instructiuni, umplerea lui cu instructiuni anterioare independente devine practic
imposibila.

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