Sunteți pe pagina 1din 6

Arhitectura calculatoarelor

CAPITOLUL IX

CAPITOLUL IX ARHITECTURI CU SET REDUS DE INSTRUCIUNI (RISC)


Arhitecturile RISC (Reduced Instruction Set Computer) reprezint o important inovaie n aria organizrii calculatoarelor, care este capabil s produc uniti centrale mult mai puternice pe o cale aparent paradoxal: simplificarea setului de instruciuni al acestora. Cu toate c este prezentat aproape ntotdeauna n opoziie cu cealalt tendin arhitectural n realizarea procesoarelor - CISC (Complex Instruction Set Computer), este demn de remarcat nc de pe acum c ambele soluii au o rdcin comun, pentru c ele fost dezvoltate i perfecionate n ncercarea de a surmonta un impediment pe care programatori l numesc decalaj semnatic (semnatic gap). Decalajul semnatic este reprezentat de ctre diferenele conceptuale din ce n ce mai mari care se manifest ntre limbajele de nivel nalt (HLL- ligh level languages) i cele n cod-main. Aceste diferene se datoreaz creterii permanente a nivelului de abstractizare, a conciziunii i a puterii de sintez a limbajelor de nivel nalt, aa cum este sugerat n figura 9.1. Decalajul semantic ridic noi i dificile probleme n ceea ce privete modalitile de compilare i execuie eficient a unor programe scrise n noile limbaje HLL, impunnd n acelai timp conceperea i implementarea unor arhitecturi adecvate de procesoare.

Soluiile pentru rezolvarea acestor probleme izvorsc din dou direcii:

Cretere nivelul de abstractizare

Limbajul de nivel nalt (HLL)

Decalajul semantic

Limbaj main (arhitectura sistemului)

Figura 9.1. Reprezentarea schematic a decalajului semantic

abordarea CISC - presupune proiectarea unor arhitecturi foarte complexe, incluznd un mare numr de instruciuni i de moduri de adresare. Unele din aceste instruciuni pot fi chiar apropiate de cele utilizate de limbajele HLL. abordarea RISC - urmrete simplificarea la maximum a setului de instruciuni al unitii centrale i

adaptarea acestuia la cerinele reale ale programelor utilizator. S-au efectuat mai multe studii pentru a se evidenia particularitile aciunilor care se desfoar n timpul execuiei unui program. Mai concret, s-a urmrit determinarea caracteristicilor de execuie ale secvenelor de instruciuni main generate prin compilarea programelor HLL. Aspectele de cel mai nalt interes n derularea acestor cercetri sunt: frecvena operaiilor executate; tipurile de operanzi i frecvena lor de utilizare; secvenialitatea execuiei (frecvena salturilor, a buclelelor i a apelurilor la subprograme).
128

Arhitectura calculatoarelor
acestea sunt distribuite n medie astfel: transferuri: 33%; salturi condiionate: 20%; calcule aritmetice i logice: 16%; altele: ntre 0,1 i 10%.

CAPITOLUL IX

n ceea ce privete frecvena tipurilor de instruciuni main solicitate , cercetrile statistice arat c

Se observ c sunt dominante instruciunile de transfer i de salt. Acest aspect este confirmat i atunci cnd se efectueaz analize statistice asupra programelor scrise n diferite limbaje de nivel nalt. Rezultatele unei astfel de cercetri sunt prezentate n figura 9.2. n ceea ce privete tehnicile de adresare, covritoarea majoritate a instruciunilor utilizeaz moduri simple de adresare, n care adresa poate fi calculat ntr -un singur ciclu, cum ar fi - de exemplu - adresarea la registru, indirect la registru, cu deplasament etc. Modurile complexe de adresare (indirect la memorie, indexat i indirect, indexat cu deplasament, cu stiv) sunt utilizate de mai puin de 18% din totalul instruciunilor. Limbajul/ tipul Atribuire Loop Call If Goto altele PASCAL tiinific 74 4 1 20 2 FORTRAN student 67 3 3 11 9 7 PASCAL sistem 45 5 15 29 6 C sistem 38 3 12 43 3 1 SAL sistem 42 4 12 36 6

Figura 9.2. Frecvenele dinamice relative ale instruciunilor n programele HLL Cel mai frecvent tip de operand solicitat de instruciunile din program este cel scalar - ntre 74 i 80% din cazuri. Scalarii pot fi de tip ntreg, real, caracter, etc. i pot fi stocai n memorie sau n registre. Restul de 20 26 % din instruciuni opereaz cu vectori, tabele sau alte structuri complexe de date. 80% din scalari sunt variabile locale, n timp ce 90% din structurile complexe sunt variabile globale. PASCAL Constante ntregi Variabile scalare Matrici, structuri 16 58 26 C 23 53 24 Media 20 55 25

Figura 9.3. Frecvena tipurilor de date apelate n programele HLL n ceea ce privete amplasarea operanzilor, n medie pe instruciune avem 0.5 plasamente n memorie i 1.4 plasamente n regitri. Concluzionnd, majoritatea operanzilor sunt variabile locale de tip scalar, stocate preponderent n regitri, aa cum indic i statistica din figura 9.3. Investigaiile efectuate asupra procentajului din timpul total de execuie alocat anumitor instruciuni au dus la concluzia c cea mai mare parte din acesta este consumat de apelul subprogramelor ( CALL) i de rentoarcerea n programul principal (RETURN). n ciuda faptului c frecvena de apariie n programele HLL a celor dou instruciuni este n jur de 15%, timpul necesar tratrii lor este procentual cu mult mai mare, din cauza complexitii activitilor pe care le impun. Cum acest timp consumat este direct proporional cu numrul instruciunilor main, iar prin compilarea instruciunilor CALL i RETURN rezult secvene relativ lungi de cod main, cu o mulime de referine la memorie, aceste ntrzieri sunt explicabile.

129

Arhitectura calculatoarelor
Dinamica apariiilor Pascal Atribuire Loop Call If Goto altele 45 5 15 29 6 C 38 3 12 43 3 1 Poderea instruciunilor main Pascal 13 42 31 11 3 C 13 32 33 21 1

CAPITOLUL IX
Ponderea referinelor la memorie Pascal 14 33 44 7 2 C 15 26 45 13 1

Figura 9.4. Timpii consumai pentru tratarea instruciunilor HLL n figura 9.4 este prezentat o statistic privind timpul consumat de diferitele clase de instruciuni ale limbajelor Pascal i C. Aceti timpi sunt exprimai indirect, prin dou mrimi: ponderea instruciunilor main, obinut prin nmulirea numrului mediu de instruciuni main rezultat dintr-o instruciune HLL (dup compilare) cu frecvena de apariie a acesteia din urm, iar ponderea referinelor la memorie se obine nmulind numrul mediu de apeluri la memorie cerute de o instruciune HLL (dup compilare) cu frecvena de apariie a acestei instruciuni. Alte studii relative la apelul procedurilor evideniaz c numai 1,25% din apeluri au mai mult de ase parametri i numai 6,7% dintre ele lucreaz cu mai mult de ase variabile locale. Concluziile statisticilor prezentate mai sus pot fi sintetizate astfel: instruciunile simple (aritmetice - logice sau de transfer) au o covritoare preponderen asupra celor care efectueaz operaii complexe; modurile de adresare simple sunt preponderente, n raport cu cele mai sofisticate; fiecare instruciune face referin la medie la 1.9 operanzi; majoritatea operanzilor referii sunt de tipul celor care pot fi stocai n regitri, putnd fi tratai ca variabile sau parametri locali;

optimizarea mecanismului procedurii CALL/RETURN este capabil de a aduce beneficii semnificative relativ la creterea viteza de execuie a programelor. Constatrile de mai sus pot fi considerate ca tot attea argumente n favoarea celor care aleg ca punct de plecare pentru reducerea decalajului semnatic al programelor o abordare arhitectural de tip RISC a procesorului.

9.1. Caracteristicile arhitecturilor RISC


Cele mai importante particulariti ale arhitecturilor RISC sunt: 1. Set limitat de instruciuni simple. Marea majoritate a instruciunilor RISC, dup citire i decodificare, sunt executate rapid, de obicei ntr-un singur ciclu main. Fiind simple, instruciunile RISC sunt cablate, n timp ce arhitecturile CISC trebuie s utilizeze ndeosebi microprogramarea pentru implementarea instruciunilor complexe cu care ele opereaz. Simplitatea instruciunilor RISC are ca rezultat i reducerea complexitii unitii de comand i a unitii aritmetice i logice. n consecin, procesorul poate lucra la o frecven de ceas mult mai ridicat. Tehnicile pipeline pot fi utilizate eficient pentru aceste instruciuni simple i cu timpi de execuie similari. Operaiile care nu fac referine la memorie pot fi executate ntr -o pipeline cu trei pai: fetch - FI, decodificare - DI, execuie - EI. Operaiile ceva mai complexe RISC pot fi executate i ele printr -o secven de instruciuni simple. Un mic exemplu ne va convinge de avantajele acestei soluii. S presupunem c avem un program a crui execuie const n 80% instruciuni simple i 20% complexe. Pe o main CISC, execuia unei instruciuni simple consum 4 cicli de ceas, iar a uneia complexe, 8 cicli. Durata ciclului de ceas este 100 ns. Pe o main RISC, instruciunea simpl este executat ntr -un singur
130

Arhitectura calculatoarelor

CAPITOLUL IX

ciclu de ceas, iar instruciunile complexe sunt implementate prin secvene de instruciuni simple care au o lungime medie de 14 cicli. Durata ciclului de ceas pentru procesorul RISC este de 75 ns. S calculm acum timpii necesari celor dou procesoare pentru a executa un milion de instruciuni: 6 6 -7 CISC : (10 x 0,8 x 4 + 10 x 0,2 x 8) x 10 = 0,48 sec. 6 6 -7 RISC : (10 x 0,8 x 1 + 10 x 0,2 x 14) x 0,75 x 10 = 0,27 sec. Cu toate c operaiile complexe consum mai mult timp la RISC, acest lucru este compensat de numrul lor mic. Ca o consecin a simplitii sale, procesorul RISC lucreaz cu un ciclu de ceas mai redus. La procesoarele CISC, chiar instruciunile simple sunt ncetinite, datorit unei ALU mai complicate i a mecanismelor de control mai sofisticate. 2. Arhitectur ncarc - i - stocheaz (load and store). O arhitectur RISC presupune ca datele din memorie s fie referite numai prin instruciunile LOAD i STORE . Toate celelalte instruciuni opereaz numai cu regitri, adic sunt instruciuni de tip registru - registru. Prin adoptarea acestei soluii arhitecturale, numai LOAD i STORE vor necesita pentru execuie mai mult de un ciclu de ceas. Prelucrearea lor n pipeline se va face n patru pai: FI - fetch, DI - decodificare, CA - calcul adres, TR - transfer. 3. Instruciunile utilizeaz numai cteva moduri de adresare. Acestea sunt n mod uzual fie o adresare direct, fie adresarea la registru (i indirect la registru) sau adresarea cu deplasament. 4. Instruciunile au lungimi fixe i format uniform. Aceste proprieti fac ca ncrcarea i decodificarea unei instruciuni s fie simpl i rapid. De asemenea, nu se mai consum timp de ateptare pentru a se cunoate lungimea instruciunii curente, care condiiona declanarea tratrii a celei urmtoare. Decodificarea este simpl, deoarece codul operaiei i cmpurile de adres ocup aceleai poziii n toate instruciunile. 5. Disponibilitatea unui numr mare de regitri. Aceast caracteristic rezult ca o consecin a faptului c variabilele i rezultatele intermediare sunt stocate n aceti regitri, evitndu-se astfel citirile sau scrierile repetate din/n memorie. De asemenea, tot n registre vor fi stocate toate variabilele locale ale procedurilor, ct i parametrii de retur ai acestora. n cazul procesoarelor CISC, atunci cnd n program se produce un nou apel la procedur, coninutul regitrilor este salvat n memorie. La terminarea execuiei procedurii, rentoarcerea n programul principal se face cu restaurarea coninutului acestor regitri cu valorile anterior stocate n memorie. Operaiile de salvare i restaurare regitri consum mult timp. Beneficiind de un numr mult mai mare de regitri dect arhitecturile CISC, procesoarele RISC i pot utiliza pe acetia n cazul unui apel la procedur. n aceste situaii, un alt set de regitri va fi desemnat pentru a stoca valorile locale ale variabilelor i parametrilor subprogramului. Astfel, setul iniial de regitri (cel care conine informaii legate de programul principal) poate rmne neatins, obinndu -se un ctig substanial n timpul de execuie. Aceast strategie, care presupune ca procesorul RISC s aloce pentru fiecare apel la procedur un set distinct de regitri pentru stocarea variabilelor locale, renunndu -se la salvarea - restaurarea repetat a coninutului unui unic set, este mult mai realist. Afirmaia se bazeaz pe statisticile care demonstreaz c numrul acestor variabile locale pentru o procedur este redus, iar n cazurile unor apeluri repetate ale procedurilor (aa-numitele proceduri sau apeluri imbricate), numrul acestor apeluri este numai n mod excepional mai mare dect 6. Rezult c n covritoara majoritate a cazurilor, numrul seturilor de regitri necesari pentru apeluri la proceduri nu va fi mai mare de 6 - 7. Folosirea n arhitecturile RISC a unui n umr mare de regitri este acceptabil i din punct de vedere hard, deoarece procesorul are o complexitate mai redus (dat de simplificarea unitilor aritmetic -logic i de comand), ceea ce lrgete spaiul de pe chip unde vor putea fi implementai acetia. Un alt aspect interesant al arhitecturilor RISC l reprezint problema transferului ntrziat. Acesta apare n mod similar la execuia instruciunilor de transfer cu memoria LOAD i STORE. Am artat c execuia acestor instruciuni nu se poate termi na ntr-un singur ciclu de ceas, ceea ce, n cazul prelucrrii pipeline, poate genera o penalitate pentru instruciunea urmtoare. Iat ilustrarea acestei situaii printr-un exemplu: LOAD ADD ADD R1, X R2, R1 R4, R3 FI DI FI CA DI FI TR oprit EI DI EI Penalitate : 1 ciclu
131

Arhitectura calculatoarelor
Exist dou soluii pentru rezolvarea acestei probleme, adic de evitare a penalitii:

CAPITOLUL IX

fie se ntrzie prin hardware execuia instruciunii urmtoare lui LOAD, dac acesta din urm are nevoie de valoarea care se ncarc; fie se apeleaz la o soluie mai eficient, bazat pe compilator, care este de fapt similar cu ntrzierea salturilor din tehnica pipeline. Soluia este denumit prin analogie, ntrzierea transferurilor (delayed load or store).

Metoda transferurilor ntrziate presupune c procesorul execut ntotdeauna instruciunea care urmeaz dup LOAD (sau STORE), fr ciclu de oprire, rmnnd n sarcina compilatorului s plaseze n acest loc o instruciune care nu are nevoie de valoarea care se ncarc prin LOAD. Spre exemplu, execuia urmtoarei secvene de program este incorect, deoarece instruciunea de dup LOAD cere n R1 o valoare care nu este disponibil n acel moment: LOAD ADD ADD SUB R1, X R2, R1 R4, R3 R2, R4 FI DI FI CA DI FI TR EI DI FI penalitate EI DI EI

Se impune intervenia compilatorului pentru a corecta aceast secven pentru o execuie corect: LOAD ADD ADD SUB R1, X R4, R3 R2, R1 R2, R4 FI DI FI CA DI FI TR EI DI FI EI DI EI

Dac totui compilatorul nu gsete o instruciune potrivit pentru a o plasa dup LOAD, atunci aici va fi plasat un NOP (instruciunea neoperaional). n finalul acestui capitol ar trebui totui s ncercm s dm un rspuns tranant: este realmente arhitectura RISC mai bun dect cea CISC? Specialitii ns nu au reuit nc s ncline balana n favoarea uneia sau alteia din abordri i - n consecin - rspunsul definitiv la aceast ntrebare se amn. IBM S/360-168 Anul Nr. instruciuni Lungime instr. Moduri adres. Nr. reg. Gen. Capacitate MC Cache 73 208 16-48 4 16 420KB 64KB VAX 11-780 78 303 16-456 22 16 480KB 64KB Intel 8086 78 133 8-32 6 4 Berkeley RISC I 81 31 32 3 138 IBM 801 80 120 32 5 32 -

Figura 9.5. Caracteristici arhitecturale pentru procesoare CISC i RISC Am prezentat i n acest capitol cteva avantaje obinute cu procesoare RISC. Menionm c s -au fcut de asemenea comparaii ale performanelor CISC i RISC cu ajutorul programelor de evaluare, procesoarele RISC rulnd mai repede dect competitoarele lor. Totui, este dificil s identificm care dintre caracteristicile unui procesor produce cel mai nalt spor de performan. Spre exemplu, unii fani CISC argumenteaz c vitezele ridicate de prelucrare pot fi obinute nu neaprat prin implementarea unor trsturi RISC, ci mai ales prin tehnologie mbuntit, compilatoare optimizate, etc. n plus, un alt argument n favoarea lui CISC este c programele RISC, scrise cu secvene de instruciuni simple, sunt foarte lungi, necesitnd spaii mult mai mari de stocare n memoria principal.
132

Arhitectura calculatoarelor
sunt implementate arhitecturile RISC sau CISC la cteva procesoare.

CAPITOLUL IX

La sfrit de capitol ne-am obinuit s oferim pentru ilustrare i cteva exemple reale. Iat deci cum Sistemul VAX 11/780 utilizeaz o arhitectur CISC cu un set de 303 instruciuni. Formatul acestora este variabil, cu lungimi cuprinse ntre 2 i 57 de octei. Se utilizeaz 22 moduri de adresare i 16 registri de uz general. Procesorul Pentium, realizat tot n arhitectur CISC, are un set de 235 de instruciuni, de asemenea n format variabil, cu lungimi cuprinse ntre 1 i 11 octei. Numrul modurilor de adresare este de 11, iar al registrelor de 8; Procesorul RISC Sun SPARC dispune de 52 instruciuni cu un format fix pe 4 octei. Se utilizeaz numai dou moduri de adresare. Numrul regitrilor generali este de peste 520. Un alt procesor cu arhitectur RISC este Power PC, care utilizeaz 206 instruciuni. Lungimea acestora este n marea majoritate a cazurilor de 4 octei. Ca i la Sun SPARC, numrul modurilor de adresare este de dou. Regitrii generali sunt n numr destul de mic - numai 32. Caracteristicile definitorii ale unor procesoare RISC sunt prezentate de asemenea sintetic n tabelul din figura 9.5.

133

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