Creeaza.com - informatii profesionale despre


Simplitatea lucrurilor complicate - Referate profesionale unice



Acasa » referate » informatica » calculatoare
Executie speculativa - Microprocesoare Pentium

Executie speculativa - Microprocesoare Pentium



Executie speculativa - Microprocesoare Pentium

In sectiunea precedenta a fost introdus conceptul de reordonare a instructiunilor pentru imbunatatirea performatei. Punctul central a fost reordonarea instructiunilor in cadrul unui singur bloc. Acest aspect este analizat in continuare. Programele pentru calculatoare se pot sparge in blocuri de baza (basic blocks), fiecare bloc de baza constand intr-o secventa liniara de cod cu un punct de intrare in capatul de sus si o iesire in capatul de jos. Un bloc de baza nu contine nici un fel de structuri de control (de exemplu instructiuni if sau while) astfel incat translatarea sa in limbaj masina nu contine nici un fel de ramificatii. Blocurile de baza sunt conectate prin instructiuni de control.

Un program in aceasta forma poate fi reprezentat ca un graf orientat, asa cum este prezentat un exemplu in figura 9. Aici se calculeaza suma cuburilor intregilor pari si impari, pana la o anumita limita si se acumuleaza rezultatele lor in evensum si respectiv, oddsum. In cadrul fiecarui bloc de baza, tehnicile de reordonare din sectiunile precedente functioneaza bine. Numai ca majoritatea blocurilor de baza sunt scurte si nu exista suficient paralelism in acestea pentru a le exploata efectiv. In consecinta pasul urmator este sa se permita reordonarea pentru a intersecta granitele blocurilor de baza in incercarea de a umple toate pozitiile de lansare. Cel mai mare castig apare cand o operatie posibil lenta poate fi mutata mai sus in graf pentru a incepe mai devreme. Aceasta ar putea sa fie instructiune LOAD, o operatie in virgula mobila sau chiar startul unui lant lung de dependente. Mutarea de cod in sus peste o ramificatie se numeste inaltare (hoisting).




evensum = 0;

oddsum = 0;

i = 0;

while (i < limit)

(a)                                   (b)

Fig. 9.(a) Un fragment de program.

(b) Graful corespunzator blocului

Utilizarea acestei tehnici necesita sprijin din partea compilatorului si a hardware-ului, precum si anumite extensii arhitecturale. In majoritatea cazurilor, reordonarea instructiunilor peste granitele blocurilor de baza este mai presus de capacitatea hardware-ului, deci compilatorul trebuie sa mute instructiunile explicit.

Executia speculativa introduce anumite probleme interesante. Prima ar fi ca, este esential ca in nici una din instructiunile speculative sa nu existe rezultate irevocabile, pentru ca s-ar putea constata mai tarziu ca n-ar fi trebuit executate. In figura 9, se poate citi evensum si oddsum si, de asemenea, se poate face adunarea imediat ce k este disponibil chiar inainte de instructiunea if, dar nu este bine sa se memoreze rezultatele in memorie. In secvente de cod mai complicate, o solutie banala de a preveni scrierea registrelor de catre codul speculativ, inainte sa se stie daca acest lucru este dorit, este sa se redenumeasca toate registrele destinatie utilizate de codul speculativ. In acest fel, sunt modificate numai registrele temporare, asa ca nu este nici o problema daca in ultimul moment codul nu mai este necesar. Daca codul este necesar registrele temporare sunt copiate in adevaratele registre destinatie. Asa cum va puteti imagina, mentinerea tabelei de marcaj pentru pastrarea tuturor acestor informatii nu este simpla, dar se poate face avand suficient hardware.





Exista insa si o alta problema introdusa de codul speculativ, care nu se poate rezolva prin redenumirea registrelor. Ce se poate intampla daca o instructiune executata speculativ cauzeaza o exceptie? Un exemplu neplacut, dar nu fatal, este o instructiune LOAD care cauzeaza o ratare in memoria intermediara pe o masina cu o dimensiune mare a liniei de memorie intermediara (sa zicem, 256 de octeti) si o memorie cu mult mai lenta decat UCP si memoria intermediara. Daca un LOAD, care este de fapt necesar, opreste functionarea masinii pentru mai multe cicluri pana cand linia de memorie intermediara este reincarcata, nu prea este nimic de facut. Totusi blocarea masinii pentru citirea unui cuvant care se dovedeste a nu fi necesar este contraproductiva. Prea multe astfel de “optimizari' pot face UCP mai lenta decat daca nu le-ar avea deloc. Daca masina are memorie virtuala, care este discutata in capitolul 6, un LOAD speculativ poate chiar sa genereze o lipsa de pagina, care necesita o operatie cu discul pentru a incarca pagina dorita. Evenimentele false lipsa de pagina pot avea un efect important asupra performantei, asa ca trebuie evitate.

O posibila solutie ce se gaseste intr-o serie de masini moderne este sa se dispuna de o instructiune speciala SPECULATIVE_LOAD care incearca sa citeasca cuvantul din memoria intermediara, iar daca nu este acolo, renunta. Daca valoarea este acolo cand este de fapt necesara, se poate folosi, dar daca nu, hardware-ul trebuie sa o aduca imediat. Daca valoarea nu este de fapt necesara, nu va exista nici o penalizare pentru ratarea in memoria intermediara.

Un exemplu mai dificil se poate ilustra cu urmatoarea instructiune:

if (x>0) z = y/x;

unde x, y si z sunt variabile in virgula mobila. Sa presupunem ca toate variabilele sunt citite in registre in avans si impartirea in virgula mobila, care este mai lenta este inaltata deasupra testului if. Daca x este 0 rezulta o impartire prin zero si se termina programul. Rezultatul net este ca speculatia a cauzat esecul unui program corect. Mai rau decat atat, programatorul a pus cod explicit pentru a preveni acest lucru si tocmai asta s-a intamplat.

O posibila solutie este sa se dispuna de versiuni speciale de instructiuni care ar putea cauza exceptii. In plus, un bit, numit bit otrava (poison bit), este adunat la fiecare registru. Cand o instructiune speculativa speciala esueaza, in loc sa se genereze o capcana se seteaza bitul otrava din registrul rezultat. Daca acest registru este mai tarziu accesat de o instructiune obisnuita, atunci se activeaza capcana (asa cum ar trebui). Daca rezultatul nu este utilizat niciodata, bitul otrava este sters si in continuare nu apar efecte daunatoare datorate executiei speculative.








Politica de confidentialitate

.com Copyright © 2020 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.


Proiecte

vezi toate proiectele
 SCHITA DE PROIECT DIDACTIC GEOGRAFIE CLASA: a IX-a - Unitatile majore ale reliefului terestru
 PROIECT DIDACTIC 5-7 ani Educatia limbajului - Cate cuvinte am spus?
 Proiect atestat Tehnician Electronist - AMPLIFICATOARE ELECTRONICE
 Proiect - masurarea si controlul marimilor geometrice

Lucrari de diploma

vezi toate lucrarile de diploma
 Lucrare de diploma - eritrodermia psoriazica
 ACTIUNEA DIPLOMATICA A ROMANIEI LA CONFERINTA DE PACE DE LA PARIS (1946-1947)
 LUCRARE DE DIPLOMA MANAGEMENT - MANAGEMENTUL CALITATII APLICAT IN DOMENIUL FABRICARII BERII. STUDIU DE CAZ - FABRICA DE BERE SEBES
 Lucrare de diploma tehnologia confectiilor din piele si inlocuitor - proiectarea constructiv tehnologica a unui produs de incaltaminte tip cizma scurt

Lucrari licenta

vezi toate lucrarile de licenta
 LUCRARE DE LICENTA CONTABILITATE - ANALIZA EFICIENTEI ECONOMICE – CAI DE CRESTERE LA S.C. CONSTRUCTIA S.A TG-JIU
 Lucrare de licenta sport - Jocul de volei
 Lucrare de licenta stiintele naturii siecologie - 'surse de poluare a clisurii dunarii”
 LUCRARE DE LICENTA - Gestiunea stocurilor de materii prime si materiale

Lucrari doctorat

vezi toate lucrarile de doctorat
 Diagnosticul ecografic in unele afectiuni gastroduodenale si hepatobiliare la animalele de companie - TEZA DE DOCTORAT
 Doctorat - Modele dinamice de simulare ale accidentelor rutiere produse intre autovehicul si pieton
 LUCRARE DE DOCTORAT ZOOTEHNIE - AMELIORARE - Estimarea valorii economice a caracterelor din obiectivul ameliorarii intr-o linie materna de porcine

Proiecte de atestat

vezi toate proiectele de atestat
 PROIECT ATESTAT MATEMATICA-INFORMATICA - CALUTUL INTELIGENT
 Proiect atestat Tehnician Electronist - AMPLIFICATOARE ELECTRONICE
 ATESTAT PROFESIONAL LA INFORMATICA - programare FoxPro for Windows
 ATESTAT PROFESIONAL TURISM SI ALIMENTATIE PUBLICA, TEHNICIAN IN TURISM








Termeni si conditii
Contact
Creeaza si tu