Documente Academic
Documente Profesional
Documente Cultură
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
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.