Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




CALCULATOARE NUMERICE 2

Informatica




CALCULATOARE NUMERICE 2

TEMA 2

DINU Razvan

334CA

Procesoare multi -core

Un microprocesor multi-core este un microprocessor care care contine 2 sau multe procesoare independente intr-unul singur , de obicei un singur circuit integrat. Unul dual-core contine doar 2 microprocesoare independente. In general, procesoarele multi-core permit secvente computationale simultane , in paralel, fara includerea de multiple microprocesoare separate la nivel fizic.

Exista insa anumite discrepante in ceea ce priveste definirea termenilor "multi-core" si "dual_core". Anumite personae folosesc acesti termeni ca sa se refere la doar la microprocesoarele multi-core care sunt realizate pe acelasi circuit integrat . Aceste persoane prefera sa se refere la microprocesoarele dintr-un pachet cu nume diferite , cum ar fi : "multi-chip zmodule", "double core" sau chiar "twin core".

2. Procesoare superscalare

O arhitectura CPU superscalara implementeaza o forma de paralelism intr-un chip, astfel incat sistemul sa se miste mult mai rapid. O arhitectura superscalara executa si returneaza valori pentru mai multe instructiuni dintr-o treapta a pipeline-ului.

Cele mai simple procesoare sunt procesoarele scalare. Un procesor scalar proceseaza un bloc de date o data. In opozitie cu procesorul scalar este procesorul vector in care o singura instructiune actioneaza in acelasi timp asupra mai multor blocuri de date. Procesorul superscalar combina aceste doua tipuri de procesoare: fiecare instructiune proceseaza un bloc de date, dar exista unitati multiprocesoare astfel incat mai multe instructiuni pot procesa date diferite in acelasi timp.

Un procesor superscalar are o rata de executie pentru fiecare instructiune. Dar o arhitectura superscalara nu inseamna doar procesarea mai multor instructiuni in acelasi timp.

Intr-o arhitectura superscalara sunt mai multe unitati functionale in acelasi timp, impreuna cu circuite aditionale care trimit instructiunile la aceste unitati. De exemplu, majoritatea arhitecturilor superscalare includ mai multe unitati. Dispatcherul citeste instructiuni din memorie si hotaraste care dintre ele pot fi executate in paralel.

Cel care trimite instructiunile le citeste din memorie si hotaraste care pot fi executate in paralel, trimitandu-le in doua unitati.

Predictor de Ramificatii

In arhitectura calculatoarelor, un predictor de ramificatii este partea din procesor care determina daca o ramura conditionata din fluxul de instructiuni este probabil sa fie executata sau nu. Acesta este un predictor de ramificatii. Predictoarele de ramificatii sunt de o importanta cruciala pentru procesoarele superscalare de astazi pentru a asigura performante inalte. Ele le permit procesoarele sa preia si sa execute instructiuni fara sa astepte ca acea ramificatie sa fie rezolvata.

Aproape toate procesoarele cu arhitectura paralela fac predictie de ramificatii deoarece ele trebuie sa ghiceasca adresa urmatoarei instructiuni pe care trebuie sa o preia inainte ca executia instructiunii curente sa se termine. Multe din procesoarele anterioare, microprogramate nu faceau predictie de ramificatii deoarece nu se pierdea din performanta pentru modificarea fluxului de instructiuni.

Predictorul de ramificatii nu este acelasi lucru cu predictorul de tinta al ramificatiilor. Predictia de ramificatii incearca sa ghiceasca daca o ramificatie conditionala va fi executata sau nu. Predictorul de tinta al ramificatiilor incearca sa ghiceasca tinta (adresa) ramificatiei sau saltului neconditionat inainte de a fi fost calculata prin parsarea instructiunii in sine.

Redenumire de Registrii

Redenumirea de registrii se refera la o tehnica folosita pentru a evita serializarea nenecesara a operatiilor de program impusa de reutilizarea registrilor de catre acele operatii.

Programele sunt alcatuite din instructiuni care opereaza cu valori. Aceste instructiuni trebuie sa le dea un nume valorilor pentru a le distinge una de cealalta. O instructiune tipica ar putea zice: aduna X si Y si pune rezultatul in Z. In aceasta instructiune, X, Y si Z sunt numele locatiilor de memorare.

Pentru a avea o codificare a instructiunii compacta, majoritatea seturilor de instructiuni ale procesoarelor au un set de locatii speciale care pot fi numite direct. De exemplu, setul de instructiuni pentru x86 are 8 registri de tip intreg, x86-64 are 16, multe din cele de tipul RISC au 32 si IA-64 are 128. La procesoare mai mici, numele acestor locatii corespund direct cu elementele unui fisier de registri.

Instructiuni diferite dureaza intervale de timp diferite. De exemplu, un procesor poate fi capabil sa execute sute de instructiuni in timp ce o singura incarcare din memoria principala e in progres. Instructiunile mai scurte vor fi terminate primele, in timp ce incarcarea din memorie e in progres, astfel instructiunile se termina in ordinea originala a programului. Executia nesecventiala a fost folosita in cadrul procesoarelor performante pentru a mai castiga ceva viteza.

Superbanda de Asamblare(Superpipelining)

Utilizarea unitatilor functionale în banda de asamblare este o tehnologie folosita in proiectarea microprocesoarelor si a altor dispozitive electronice digitale, pentru a le imbunatati performantele.

Banda de asamblare reduce timpul ciclului de ceas al unui procesor si prin aceasta creste numarul de instructiuni executate intr-o unitate de timp. In pofida acestui beneficiu, exista cazuri in care folosirea benzii de asamblare nu este utila. Se cunosc si cateva dezavantaje.

Avantajele folosirii benzii de asamblare:

Timpul ciclului de ceas al unui procesor este redus, ceea ce implica cresterea latimii de banda in majoritatea cazurilor.

Avantajele evitarii folosirii benzii de asamblare:

Procesorul executa fiecare instructiune pe rand, astfel intarzierile din cauza ramificarii, cat si problemele cu instructiunile seriale executate simultan sunt eliminate. De asemenea proiectarea este mai simpla si procesul de fabricatie e mai ieftin.

Intarzierea fiecarei instructiuni dintr-un procesor fara banda de asamblare este usor redusa fata de cea a unui procesor echivalent cu banda de asamblare. In cazul procesoarelor cu banda de asamblare trebuie aduagate flip flop-uri suplimentare la calea de date.

Un procesor care nu foloseste banda de asamblare are latimea de banda pentru instructiuni fixa. Performantele uni proecsor cu banda de asmablare sunt mult mai greu de determinat si variaza foarte mult de la un program la altul.

Majoritatea procesoarelor moderne sunt subordonate unui semnal de ceas. CPU, pe plan interior, consta din partea logica si din flip flop-uri. La fiecare semnal de ceas, flip flop-urile isi actualizeaza valoarea si partea logica necesita o perioada de timp pentru a decoda noile valori. La urmatorul semnal de ceas procesul se repeta si tot asa. Partitionand partea logica si introducand flip flop-uri intre partitiile logice, este redusa intarzierea dinaintea furnizarii iesirilor valide. Acesta este motivul pentru care perioada de ceas poate fi redusa. De exemplu banda de asamblare RISC este divizata in 5 nivele, cu un set de flip flop-uri intre fiecare 2 nivele.

1.Extragere instructiune.

2. Decodificarea instructiune si extragere registru.

3.Executie

4.Accesul la memorie

5.Raspunsul registrului.

Hazarduri: Cand un programator (sau compilator) scrie cod Assambler, fac presupunearea ca fiecare instructiune e executata inaintea sa inceapa executarea urmatoarei instructiuni.

Acesta supozitie nu este adevarata pentru banda de asamblare. Situatia in care acesta face un program sa functioneze gresit este cunoscuta sub numele de hazard.

Exista numeroase tehnici pentru rezolvarea hazardurilor, cum ar fi :transmiterea mai departe si intarzierile.

Ciclul instructiunii este usor de implementat, dar totusi este extrem de ineficient. Aceasta ineficienta se datoreaza lucrului cu pipelinuri. Lucrul cu pipeline-uri imbunatateste performanta in executia codului programului. Aceasta tehnica care

utilizeaza pipeline-uri micsoreaza timpul in care o componenta din CPU este "idle". Procesoarele cu pipeline-uri sunt organizate in trepte care pot lucra independent. Rezultatul fiecarei trepte este considerata intrarea pentru urmatoarea treapta si toate treptele sunt conectate intre ele. Aceasta organizare reduce timpul total de lucru.

Din nefericire, nu toate instructiunile sunt independente. Intr-un pipeline, completarea unei instructiuni poate avea 5 trepte. Astfel pipeline-ul trebuie sa execute 4 instructiuni pana cand prima instructiune este realizata.

Executia nesecventiala

Executia nesecventiala este o paradigma utilizata in majoritatea microprocesoarelor de mare viteza pentru a folosi cicluri care altfel ar fi irosite printr-o intarziere ce necesita anumite costuri .

Design-urile celor mai moderne microprocesoare pun la dispozitie sprijin pentru executia nesecventiala .

Executia nesecventiala este o forma restrictiva de flux de date computational, ceea ce a reprezentat un subiect important de cercetare in arhitectura calculatoarelor in anii '70 si la inceputul anilor '80. Rezultate importante provenite din cercetare, cu referire la acest subiect, au fost aduse de catre Yale Patt si simulatorul sau HPSm .

Lucrarea lui James Smith si a lui A.R. Pleszkun, publicata in 1985 , a completat arhitectura prin descrierea modului in care pot fi manipulate exceptiile in masinile nesecventiale.


Document Info


Accesari: 2559
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )