AC Suport Curs

download AC Suport Curs

of 59

Transcript of AC Suport Curs

  • 8/7/2019 AC Suport Curs

    1/59

    ARHITECTURA SISTEMELOR DE CALCUL

    1

    1. DEZVOLTRI ARHITECTURALE N DOMENIUL SISTEMELOR DE CALCUL

    Cea mai important categorie de dezvoltri arhitecturale vizeaz aplicarea paralelismului care presupune execuia simultan a mai multor operaii. A 2-a categoriesemnificativ de dezvoltri arhitecturale vizeaz satisfacerea unor cerine ale software -ului(preluarea la nivelhardware a unor funcii specifice sistemului de operare). Toate acestedezvoltri au ca scop final creterea vitezei de procesare a sistemului de calcul. Cele maiimportante dezvoltri arhitecturale pot fi grupate pe baza zonelor vizate:

    1. cele care vizeaz proiectarea intern a procesorului2. cele care vizeaz interfaa procesor - memorie3. cele care vizeaz sistemul de ierarhizare a memoriei4. cele care vizeaz utilizarea sistemelor multiprocesor

    1.1. Proiectarea procesoarelor pipeline

    Tehnica pipeline aplicat n toate sistemele performante vizeaz mbuntirea performanelor procesorului. Activitatea procesorului se concentreaz asupra a douoperaii (faze) majore:

    1. fetch -ul instruciunii (extragerea codului instruciunii din memorie )2. execuia instruciunii extrase.

    n prima faz, o instruciune este citit din memorie utiliznd registrul program counter ca pointer pentru locaia de memorie. n ultima parte a ciclului fetch instruciunea estedecodificat. Dup decodificare se trece la ciclul (faza) de execuie a instruciunii. n prima

    parte a execuiei vor fi obinui operanzii din registre UC sau din memorie i apoi operaiaspecificat se aplic acestor operanzi. Rezultatele sunt depuse n registre UC sau n locaiide memorie, la finele ciclului de execuie.

    Execuia unei instruciuni i fetch -ul instruciunii urmtoare pot fi executatesimultan n anumite condiii. Prima condiie necesar pentru suprapunerea cu succes aciclurilor fetch i respectiv execuie este aceea c instruciunea ce va fi extras din memorie(faza fetch ) trebuie identificat naintea execuiei instruciunii anterioare. Aceast condiieeste ndeplinit n cazul instruciunilor executate secvenial. Exist ns instruciuni care perturb caracterul secvenial al execuiei cum ar fi, de exemplu, instruciunile de salt. naceste cazuri instruciunea ce va fi extras din memorie va fi identificat doar dup execuiacomplet a instruciunii de salt (calculul adresei de salt). n consecin, execuia uneiinstruciuni de salt nu poate fi suprapus cu fetch-ul instruciunii urmtoare.

  • 8/7/2019 AC Suport Curs

    2/59

    Dezvoltri arhitecturale n domeniul sistemelor de calcul

    2

    Cele dou cicluri de baz, fetch i execuie, pot fi divizate mai fin n trei cicluricare, n anumite condiii, pot fi suprapuse:

    1. fetch instruciune2. decodificare instruciune i fetch operanzi3. execuie

    Execuia, la rndul ei, poate fi divizat ntr-un numr de suboperaii dependente de tipulinstruciunii. Operaiile aritmetice cu numere ntregi sunt relativ simple i pot fiimplementate ntr-un singur pas (modul) n timp ce operaiile mai complexe, cum ar finmulirea sau mprirea n virgul flotant, pot necesita civa pai succesivi care vor fiexecutai ntr-o cascad de module.

    n procesoarele performante cele 3 operaii de baz ce compun ciclul instruciunii( fetch instruciune, decodificare instruciune i fetch operanzi, execuie instruciune) suntimplementate ntr-o structur pipeline .

    Structura pipeline (fig. 1.1.) este format dintr-un numr de module conectate ncascad. Fiecare modul execut una din operaiile de baz evideniate.

    Fig. 1.1. Structura pipeline

    Ieirea unui modul este aplicat ca intrare n modulul urmtor. Informaia care vadeclana cascada de operaii n structura pipeline va fi aplicat pe intrarea primului moduliar rezultatele sunt produse de ctre modulul final (uneori de module intermediare).Modulele intermediare produc rezultate pariale.

    Timpul consumat pentru procesarea unei instruciuni n cascada pipeline va fi cel puin tot att de mare cu cel consumat pentru execuia aceleiai instruciuni ntr-un procesor convenional format dintr-o singur unitate funcional complex i omogen. Totui, procesorul pipeline poate fi substanial mai rapid comparativ cu procesorul convenionalomogen. Dei rezultatele sunt ntrziate cu timpul total de procesare (obinut princumularea timpilor de procesare afereni tuturor modulelor pipe ), totui, aceste rezultatesunt livrate la rata la care procesorul pipeline este alimentat cu instruciuni. Rata dealimentare va fi egal cu timpul de procesare aferent celui mai lent modul din structura pipe .Pentru instruciuni secveniale procesorul pipeline va fi substanial mai rapid dect procesorul clasic omogen.

  • 8/7/2019 AC Suport Curs

    3/59

    ARHITECTURA SISTEMELOR DE CALCUL

    3

    n mod cert, procesarea diverselor instruciuni nu este ntotdeauna similar(comparativ cu instruciunile simple, instruciunile complexe prezint faze de execuiecomplexe, eventual divizate i repartizate pe o cascad de module de execuie) i nicintotdeauna secvenial i predictibil (instruciunile de salt perturb firul procesriisecveniale i predictibile a instruciunilor). Proiectantul trebuie s acorde o ateniedeosebit problemelor nesimilaritii i non-secvenialitii. O serie de alte complicaii apar la proiectare datorit interdependenelor dintre instruciuni (de regul, rezultatul obinut peo instruciune va fi preluat ca operand de una din instruciunile urmtoare). Totui, performane substanial mbuntite pot fi obinute prin utilizarea tehnicii pipeline i virtualtoate sistemele i microprocesoarele moderne au o structur pipeline .

    1.2. Interfaa procesor - memorie

    Interfaa procesor - memorie rezolv:

    1. transferul instruciunilor din memorie spre procesor n ciclul fetch instruciune.2. transferul datelor ntre procesor i memorie n faza de execuie a instruciunii.

    Este important ca transferul instruciunilor/datelor s se fac la rata maxim de transfer suportat de ctre destinaie (procesor sau memorie). Sunt inutile ncercrile de a depiaceast limit. La proiectarea sistemelor sunt luate n considerare soluii care vizeazegalizarea ratelor de transfer suportate de ctre procesor i respectiv memorie. Dac ratelemaxime de transfer aferente procesorului i respectiv memoriei sunt diferite, atunci, vitezaglobal a sistemului este afectat de ctre dispozitivul mai lent. n mod normal procesorul poate opera la o vitez superioar celei aferente memoriei principale.

    A. Creterea lrgimii benzii de comunicaie

    Lrgimea de band a unui canal de comunicaie (bandwidth ) este dat de

    cantitatea de informaie care poate fi transferat de-a lungul canalului n unitatea de timp ise msoar n bii/secund. Lrgimea benzii poate crete prin simpla cretere a numrului delinii sau fire din canalul de comunicaie. Creterea, de exemplu, a numrului de linii de datede la 32 la 64 va conduce la dublarea lrgimii de band. Reducerea latenei (latency ) devinetot mai dificil deoarece viteza semnalelor electrice este tot mai greu de schimbat (limitritehnologice). Latena reprezint timpul necesar pentru transferul unui bit.

    O tehnic general aplicat pentru creterea ratei efective aferente unei uniti lenteconst n multiplicarea unitii respective i execuia simultan a mai multor transferuri. Deexemplu, dac destinaia poate accepta informaii la o rat de opt ori mai mare dect rata degenerare a informaiilor la surs, atunci sursa poate fi multiplicat de opt ori i n consecinopt transferuri simultane pot fi executate ctre destinaie.

  • 8/7/2019 AC Suport Curs

    4/59

    Dezvoltri arhitecturale n domeniul sistemelor de calcul

    4

    Tehnica poate fi aplicat pentru a egaliza viteza de transfer a memoriei cu cea a procesorului, prin multiplicarea modulelor de memorie. S presupunem, spre exemplificare,c o singur instruciune este extras din memorie ntr-un ciclu fetch . Dac memoria seorganizeaz n dou module cu busuri de date separate spre procesor, dou instruciuni vor putea fi extrase din memorie simultan, crescnd rata de transfer de dou ori.

    Dac rata de transfer trebuie s creasc den ori n scopul egalizrii ratei maximede transfer suportat de procesor, atunci, vor fi prevzuten module de memorie. De reguln este o putere a lui 2. Pentru a obine blocuri de locaii adresate secvenial, cea maisemnificativ parte a adresei va specifica adresa blocului den locaii i cea mai puinsemnificativ parte a adresei va specifica cuvntul sau locaia din cadrul blocului. Utilizndmodule multiple de memorie n acest mod apar constrngeri n ceea ce privete blocuriletransferate. Aceast organizare devine eficient numai dac toate (sau aproape toate)cuvintele ce compun un bloc transferat sunt i necesare n procesor; n esen am obinut oextindere a lungimii cuvntului de memorie (den ori).

    Este posibil s se emit i adrese diferite spre celen module astfel nctn cuvintede la adrese diferite i din module diferite, vor putea fi accesate simultan. Aceastorganizare se mai numete memorie cu adresare ntreesut (interleaving ). Este important s

    discernem ntre extensia lungimii cuvntului de memorie i adevrata memorie cu adresarentreesut. n prima organizare, blocuri de locaii consecutive pot fi accesate simultan; n adoua, locaii neconsecutive pot fi accesate simultan, dac aceste locaii se gsesc n modulediferite. n cazul adresrii ntreesute, adresa de memorie se mparte n dou cmpuri, unulcare selecteaz modulul i cellalt care selecteaz locaia din cadrul modulului. n funcie de poziia relativ a celor dou cmpuri, apar dou variante de ntreesere:

    - ntreesere de ordin inferior (low order interleaving )- ntreesere de ordin superior (high order interleaving )

    Cele dou formate alternative de adresare sunt evideniate n figura 1.2.

    Cel maisemnificativ bit

    Cel mai puinsemnificativ

    itAdresa locaiei n cadrul modulului

    Adresa locaiei n cadrul modulului

    Adres modul

    Adres modul

    a) ntreesere de ordin inferior

    b) ntreesere de ordin superior

    Fig. 1.2. Formate de adresare pentru ntreesere

  • 8/7/2019 AC Suport Curs

    5/59

    ARHITECTURA SISTEMELOR DE CALCUL

    5

    ntreeserea de ordin inferior este indicat pentru sistemele monoprocesor deoarecelocaii consecutive de memorie sunt locate n module diferite de memorie i pot fi accesatesimultan. Cu patru module i ntreesere de ordin inferior, de exemplu, adresele primuluimodul vor fi 0, 4, 8, 12, 16, ..., adresele celui de-al doilea vor fi 1, 5, 9, 13, 17, ..., ale celuide-al treilea vor fi 2, 6, 10, 14, 18, ..., i ale celui de-al patrulea vor fi 3, 7, 11, 15, 19, ... .

    n figura 1.3. se prezint organizarea unei memorii cu adresare ntreesut pentruun sistem monoprocesor. n structur apar busuri de date separate care conecteaz procesorul la fiecare modul de memorie.

    Cmpul de adres modul selecteaz modulele, iar adresa locaiei din cadrulmodulului este ncrcat succesiv n registrele de adres. De ndat ce adresa este ncrcat,fiecare modul va parcurge etapa de selecie a locaiei ce urmeaz a fi accesat. La citire,datele apar succesiv pe fiecare bus, dup consumarea timpului de acces la memorie. Lascriere, datele sunt generate succesiv de ctre procesor pe busul de date aferent fiecruimodul.

    Fig. 1.3. Memorie ntreesut cu bus de date extins

    Aa cum se indic n figura 1.4., este posibil organizarea i cu un singur bus dedate. Fiecare modul va fi prevzut cu un registrubuffer de date bidirecional care va reinedatele de scris n modul sau respectiv datele citite din modul.

  • 8/7/2019 AC Suport Curs

    6/59

    Dezvoltri arhitecturale n domeniul sistemelor de calcul

    6

    Fig. 1.4. Memorie ntreesut cu un singur bus de date

    Activitatea n timp a unui astfel de sistem este prezentat n figura 1.5.

    Fig. 1.5. ntreesere cu adrese diferite pentru fiecare modul de memorie

  • 8/7/2019 AC Suport Curs

    7/59

    ARHITECTURA SISTEMELOR DE CALCUL

    7

    Este posibil aplicarea aceleiai adrese tuturor modulelor de memorie astfel nctvor fi accesate cuvinte consecutive n memorie (n cazul ntreeserii de ordin inferior).Activitatea n timp a unui astfel de sistem este prezentat n figura 1.6.

    Memoria cu adresare ntreesut poate fi utilizat n sistemele pipeline pentru aextrage simultan mai multe instruciuni din memorie. Dup extragere, aceste instruciuni vor fi executate secvenial n tehnic pipeline . Prin aceast adresare ntreesut interfaa procesor-memorie este eliberat pentru accesarea operanzilor.

    Fig. 1.6. ntreesere cu aceeai adres pentru toate modulele de memorie

    B. Buffer -e de prefetch

    Dac lrgimea benzii de comunicaie cu memoria crete suficient, poate s aparsituaia n care procesorul nu mai face fa tuturor instruciunilor i respectiv datelor extrasedin memorie. Instruciunile i datele pot fi extrase anticipat, nainte de a fi necesare, istocate ntr-unbuffer de prefetch de tip FIFO ( First-In First-Out ). n mod curent,instruciunile extrase anticipat sunt consecutive n program. Buffer -ul de prefetch contracareaz efectul negativ pe care l-ar putea avea timpul variabil de execuie aldiferitelor instruciuni (de complexiti diferite) precum i efectul utilizrii memoriei dectre alte dispozitive (alte procesoare sau periferice cu acces DMA). Microprocesoareleconin frecvent astfel debuffere de prefetch n care se stocheaz instruciunile nainte de a fiexecutate. De exemplu, Intel 486 conine unbuffer de prefetch de 32 octei. n acest caz particular,buffer- ul de prefetch permite i asamblarea instruciunilor de lungime variabilnainte de lansarea lor n execuie.

  • 8/7/2019 AC Suport Curs

    8/59

    Dezvoltri arhitecturale n domeniul sistemelor de calcul

    8

    C. Memoriicache

    O cretere semnificativ a performanelor unui sistem se poate obine dac, ntre procesor i memoria principal, se introduce o memorie de mare vitez numit memoriecache , ca n figura 1.7.

    Fig. 1.7. Memoriacache

    Instruciunile programului i datele sunt mai nti ncrcate ncache din memoria principal i apoi accesate rapid ncache de ctre procesor. Presupunnd c informaiile vor fi accesate mai mult dect o singur dat, lucru de regul valabil pentru instruciunile dincadrul buclelor de program, se pot obine creteri substaniale n ceea ce privete viteza deoperare a sistemului. Cele mai multe sisteme cu microprocesoare au memoriicache interne(on-chip ) i/sau externe microprocesorului. Exist sisteme cucache -uri separate, pentruinstruciuni i respectiv date, sau cucache -uri unificate, care gzduiesc att instruciuni cti date. Iniial, memoriilecache erau mici. Motorola MC 68040 arecache -uri separate pentru instruciuni (4 KByte) i respectiv date (4 KByte). Intel 486 are uncache unificat de 8 KByte n timp ce Pentium are din noucache -uri separate, fiecare de 8 KByte. Tendinaactual este de a implementacache -uri separate tot mai mari, i chiar de a implementacache -uri pe dou nivele (un prim nivel de capacitate relativ redus dar de vitez extrem demare n interiorul microprocesorului i un al doilea nivel de capacitate mai mare dar i devitez mai mic n exteriorul acestuia). Totui,cache -ul (chiar de pe nivelul 2) trebuie sopereze mai rapid dect memoria principal, altfel implementarea sa nu mai are sens.

    1.3. Memoria extern i ierarhizarea memoriei

    Memoria extern este constituit din echipamente periferice care utilizeaztehnologia magnetic pentru nregistrarea informaiei. Cel mai comun este discul magneticla care informaia este nregistrat pe piste concentrice pe o suprafa magnetic a unui disccare se rotete. Discurile magnetice sunt cu cteva ordine de mrime mai lente dectmemoria principal. Dac memoria principal are un timp de acces de ordinul 20 - 100 ns,timpul de acces la disc este de 5 - 20 ms i este dificil mbuntirea substanial a acestuitimp datorit naturii mecanice a acestui periferic. A existat totui, de-a lungul anilor, ocretere gradual a performanelor discurilor magnetice. Se poate utiliza aceiai tehnic pentru creterea lrgimii benzii de comunicaie (bandwidth ) cu discul. Un fiier care trebuiememorat va fi mprit n blocuri i blocurile consecutive sunt memorate i accesate

  • 8/7/2019 AC Suport Curs

    9/59

    ARHITECTURA SISTEMELOR DE CALCUL

    9

    ntreesut (interleaved ) pe uniti de disc diferite, ca n figura 1.8. Tehnica descris estecunoscut ca file striping . Dimensiunea blocului poate fi de un octet, caz n care unitilede disc vor trebui probabil sincronizate, sau de mai muli octei. Cun uniti de disclrgimea benzii de comunicaie va crete den ori.

    Fig. 1.8. Discuri multiple cu accesare ntreesut

    Mai multe uniti de disc de capacitate mic pot nlocui o unitate de capacitatemare i n scopul creterii toleranei la defect. n cazul defectrii unei uniti sistemul va fireconfigurat, unitatea defect izolat i eliminat din configuraie, i sistemul va utiliza ncontinuare doar restul unitilor de disc. Termenul RAID ( Redundant Array of Inexpensive

    Disks ) este utilizat pentru a descrie acest tip de organizare. Exist o varietate de perifericemagnetice, cum ar fi discurile Winchester, discurile flexibile, benzile magnetice etc.Discurile optice, cum sunt CD-ROM-urile, ofer o capacitate foarte mare de memorare ireprezint un nou nivel n memoria ierarhizat a sistemului. O mare parte a mbuntirilor arhitecturale vizeaz eficientizarea acestei memorii ierarhizate; ea trebuie s constituie unsuport eficient pentru multiprogramare.

    Multiprogramarea este termenul utilizat pentru descrierea sistemului de programare n care mai multe programe utilizator sunt executate, aparent concurent, prinexecuia secvenial a cte unei pri din fiecare program. n prezena memoriei ierarhizateeste necesar transferul programelor din memoria extern n memoria principal nainte delansarea acestora n execuie. n mod similar i datele trebuie transferate. Deoarece memoria principal are o capacitate limitat, programele i datele nenecesare la un moment dat vor fitransferate napoi pe disc pn n momentul n care sunt din nou solicitate. Acest trafic permanent de programe i date ntre memoria principal i memoria extern necesit un

  • 8/7/2019 AC Suport Curs

    10/59

    Dezvoltri arhitecturale n domeniul sistemelor de calcul

    10

    management de memorie, preferabil ascuns utilizatorului i activat automat la nevoie. Celmai important sistem de gestiune a memoriei este cunoscut sub denumirea de memorievirtual. Aceasta creeaz un mecanism automat care asigur ncrcarea programelor i adatelor din memoria extern n memoria principal (naintea lansrii acestora n execuie)fr ca programatorul s trebuiasc s programeze aceste transferuri. Informaia memorateste mprit n blocuri de dimensiune fix, numite de regul pagini, care sunt vehiculate,dup necesiti, ntre memoria principal i cea extern. Adresele operanzilor, utilizate ncadrul programelor, nu sunt alterate, n schimb un mecanismhardware de translatare vatranslata aceste adrese (devenite logice) aa nct ele s refere (fizic) acele locaii dememorie ce compun pagina n care a fost ncrcat programul respectiv.

    1.4. Sisteme multiprocesor

    Sistemele multiprocesor sunt arhitecturi n care mai multe procesoare lucreazcoerent i concurent pentru execuia unui singur task . n cazul n caren procesoare lucreazsimultan i continuu la rezolvarea aceluiaitask, ne putem atepta ca rezultatele s fieobinute den ori mai rapid dect n cazul n care un sistem uniprocesor rezolv acelaitask .Totui, nu ntotdeauna este uor de partiionat untask astfel nct celen procesoare slucreze simultan i continuu, i chiar n cazul n care este posibil aceast partiionare, nversiunea multiprocesor apar comunicaiile interprocesor necesare pentru corelareafuncionrii celor n procesoare i care consum timp suplimentar.

    Sistemele multiprocesor se pot obine plecnd de la sisteme uniprocesor prinsimpla adugare a unor noi procesoare care vor partaja memoria existent, rezultnd aa-numitul sistem multiprocesor cu memorie partajat ( shared memory ). Fiecare procesor poate avea i o memorie local, dar va utiliza memoria partajat pentru a transferainformaii altor procesoare i pentru a obine programe i informaii partajate. n sistemelemultiprocesor unibus toate procesoarele sunt conectate pe acelai bus. Aceast arhitecturse preteaz doar pentru un numr mic de procesoare, caz n care unibusul ar putea satisfacecerinele de comunicaie i de trafic de informaie ce se impun.

    ntr-o alt topologie, sistemele multiprocesor pot utiliza linii de comunicaie

    directe ntre procesoare. n acest caz procesoarele opereaz independent i i transmitinformaii printr-un protocol denumit mesage - passing i nu printr-o memorie partajat.Totalitatea conexiunilor interprocesor formeaz o reea de interconectare iar arhitectura este pretabil pentru tehnologia VLSI cu numr mare de procesoare. Arhitectura mesage - passing nu sufer de probleme ca:

    1. meninerea consistenei ntre memoriile locale i cea partajat2. controlul sever al acceselor la informaii partajate.

  • 8/7/2019 AC Suport Curs

    11/59

    ARHITECTURA SISTEMELOR DE CALCUL

    11

    2. PROIECTAREA SETULUI DE INSTRUCIUNI

    n acest capitol vom proiecta un set de instruciuni reprezentativ pentru multesisteme cu set redus de instruciuni ( RISC - Reduced Instruction Set Computer ). Vom stabilimnemonicele i formatele care vor fi utilizate n capitolele urmtoare.

    2.1. Caracteristicile procesorului

    Indiferent de tip, toate procesoarele execut dou operaii de baz: extraginstruciuni din memorie, i execut instruciunile extrase. Prima problem de proiectareconst n stabilirea setului de instruciuni i a formatelor de instruciuni pe care procesorulle va recunoate. n ultima perioad arhitecturile RISC au devenit foarte populare. ncontrast cu procesoarele CISC (Complex Instruction Set Computer ), procesoarele RISCrecunosc un set redus de instruciuni simple, cu formate i moduri de adresare simple. nconsecin,hard -ul procesorului se reduce cantitativ iar proiectarea sa devine mult maicurat i atractiv. Majoritatea procesoarelor RISC prezint seturi i formate deinstruciuni cu un grad ridicat de similaritate.

    Nu exist o definiie foarte precis a procesorului RISC, a instruciunii reduse saua instruciunii complexe. n general o instruciune complex este aceea care necesit muli pai pentru execuie, n timp ce o instruciune redus poate fi executat n foarte puini pai.Procesoarele RISC prezint un numr important de trsturi comune rezultate din principiulunanim acceptat de ctre toi proiectanii de structuri RISC: cel mai simplu este i cel mairapid.

    2.1.1. Utilizarea memoriei i a registrelor

    O trstur important i comun tuturor procesoarelor RISC, care vizeaz setul deinstruciuni, este decizia de utilizare a memoriei numai pentru memorarea datelor, i de autiliza registrele CPU (Central Processing Unit ) pentru toate operaiile aritmetico-logice. ncontrast cu arhitecturile CISC, n cazul RISC nu este posibil execuia operaiilor (instruciunilor) aritmetice asupra unor operanzi locai n memorie. Obiectivul esenial ncazul RISC este acela de a proiecta pentru vitez maxim, evitnd utilizarea memoriei oride cte ori este posibil, deoarece accesele la memorie sunt mult mai lente comparativ cuaccesele la registre CPU. Pentru flexibilitate maxim, n cazul instruciunilor aritmetice, seutilizeaz formatul cu trei adrese (de registru). De regul n procesor se implementeaz unset de 32 registre. Numrul reprezint un compromis ntre dou cerine:

    - un numr ct mai mare de registre reprezint optimul pentru compilator - comutarea contextului devine tot mai lent cu creterea numrului de registre.

  • 8/7/2019 AC Suport Curs

    12/59

    Proiectarea setului de instruciuni

    12

    De asemenea, pe msur ce crete numrul de registre (n termenii puterilor lui 2),crete i timpul de acces la registre i acest lucru trebuie evitat. Evident c i memoriatrebuie accesat pentru citirea i ncrcarea n registre a diverilor operanzi i pentrumemorarea diverselor rezultate obinute n registre. Transferurile cu memoria suntgestionate prin instruciuni de tipload i respectiv store i acestea sunt principaleleinstruciuni care acceseaz memoria. Formatulload/store este caracteristic procesoarelor RISC.

    Vom nota cele 32 registre R0 - R31. Dei toate vor fi registre generale, adiionalcteva dintre acestea vor avea i funcii speciale. R0 va conine permanent constanta 0 i nu poate fi utilizat n alt scop. Acesta este un principiu general de proiectare i este respectatdeoarece este foarte avantajos s avem un registru care conine constanta zero pentruinstruciunile de tergere (iniializate cu zero) i de comparare cu zero. Nu vom prevedea oinstruciune explicit de tip move registru - registru. Aceste transferuri vor fi realizate prin instruciuni ADD (adunare) n care unul dintre operanzi va fi R0 (constanta zero).

    2.1.2. Lungimea instruciunilor i a operanzilor

    ncepnd cu 1990 tehnologiile de fabricaie au permis integrarea procesoarelor pe32 i chiar 64 bii ntr-un singur circuit VLSI. Evident c n cazul RISC, unde unitatea decomand este simpl, proiectantul trebuie s decid dac va utiliza aria disponibilizat nalte scopuri cum ar fi, de exemplu, memoriecache on-chip de capacitate mai mare. 32 bii asigur o precizie rezonabil pentru operaiile cu ntregi n timp ce 64 bii par rezonabili pentru operaiile n virgul flotant. Exist deja procesoare care suport chiar 128 bii. Deexemplu, procesorul RISC i860 are instruciuni "load/store " pe 128 bii.

    Diferene arhitecturale semnificative sunt foarte puine ntre procesoarele pe 32 irespectiv 64 de bii n ceea ce privete unitatea de control; principalele diferene constau nlungimea diferit a registrelor interne, ALU i respectiv numrul diferit de linii aferente busurilor interne i externe CPU. Odat cu creterea lungimii cuvntului la 32/64 bii aaprut i necesitatea specificrii n codul instruciunii a lungimii operanzilor ce vor fi procesai: 8 bii, 16 bii, 32 bii, 64 bii etc. O soluie tipic la aceast problem const nincluderea n formatul instruciunii a unui cmp, s zicem de 2 bii, care va specificalungimea operandului/operanzilor procesai: 00 -8 bii, 01 -16 bii, 10 -32 bii, 11 -64 bii. Nu vom include n formatul instruciunii pe care-l vom propune un astfel de cmpconsidernd c toate transferurile vor fi pe 32 bii. Propunem ca exerciiu de proiectareincluderea unui astfel de cmp n format.

    Unitatea cea mai mic adresabil n memorie este octetul (8 bii). Pentru eficiencodul instruciunii nu trebuie s aib o lungime arbitrar ci trebuie compus dintr-un numr exact de octei. Procesoarele CISC au de regul instruciuni de lungime variabil.Procesoarele RISC au instruciuni de lungime fix. Vom alege o lungime fix pentruinstruciune: 32 bii. Aceasta conduce la simplificarea decodificatorului instruciunii.Lungimea de 32 bii este uzual n cazul RISC dei nu este posibil specificarea uneiconstante pe 32 bii ntr-o instruciune pe 32 bii. Vom specifica constante pe 16 bii i printr-o secven de dou instruciuni, un registru pe 32 bii va putea fi ncrcat cu o

  • 8/7/2019 AC Suport Curs

    13/59

    ARHITECTURA SISTEMELOR DE CALCUL

    13

    constant pe 32 bii, compus din dou constante pe 16 bii. Aceast complicaie va fievitat la ncrcarea constantei zero, operaie realizabil printr-o singur instruciune dacse utilizeaz R0 care conine permanent constanta zero pe 32 bii.

    2.1.3. Lungimea adreselor de memorie

    Utilizarea adreselor pe 32 bii este convenabil dac registrele procesorului au deasemenea 32 bii. Utilizarea adreselor pe 64 bii ar fi o alt variant care intete n viitor.Vom prevedea adrese pe 32 bii care asigur adresarea unei memorii interne de maxim 4gigaoctei (232).

    2.2. Formate de instruciuni

    Vom aloca 6 bii, biii 31 la 26, pentru cmpul principal deopcode , ceea ce va permite codificarea a 64 instruciuni diferite. n ideea extinderii numrului de instruciuni, pentru instruciunile care nu utilizeaz toi biii rmai (biii 25 la 0), vom utiliza n anumitecazuri un cmp secundar de sub-opcode . De exemplu, cmpul principal deopcode ar puteaspecifica o clas de instruciuni (aritmetice), n timp ce cmpul sub-opcode va selectaoperaia (aritmetic) propriu-zis. Vom avea cinci clase de instruciuni:

    2.2.1. Formatul registru registru registru (R-R-R)

    Pentru eficien i vitez aceste instruciuni vor opera numai cu operanzi preluaidin registre. O operaie aritmetico-logic se va aplica celor doi operanzi preluai din registreiar rezultatul va fi depus tot ntr-un registru; 15 bii vor fi necesari pentru a specifica cele 3registre.

    Fig. 2.1. Formatul registru registru registru (formatul R-R-R)

    Este de dorit s pstrm cmpurile definite n formatul R-R-R pe aceleai poziii ntoate formatele pe care le vom defini ulterior. Aceasta nseamn c toate instruciunile carevor avea un registru destinaie (Rd) vor utiliza biii 25 la 21 pentru selecia destinaiei itoate instruciunile care utilizeaz dou registre surs vor utiliza biii 20 la 16 pentruselecia sursei Rs1 i respectiv biii 15 la 11 pentru selecia sursei Rs2. Instruciunile care

  • 8/7/2019 AC Suport Curs

    14/59

    Proiectarea setului de instruciuni

    14

    utilizeaz un singur registru surs, cum ar fi cele care opereaz cu un registru i o constant,vor specifica unicul registru surs n cmpul 20 la 16 (Rs1). Biii neutilizai din codulinstruciunii conduc la o slab compactare a secvenelor de cod i deci la o ineficientstocare a acestora n memorie. Dar nu acesta este factorul esenial care trebuie luat nconsiderare; factorul esenial este viteza cu care instruciunea poate fi decodificat iexecutat.

    Un exemplu de instruciune registru registru registru ar fi:

    ADD R1,R4,R5 ; R1 = R4 + R5

    Utiliznd R0, care memoreaz permanent constanta zero, putem crea o instruciunemove:

    ADD R2,R3,R0 ; R2 = R3 (+0)

    n consecin, o instruciune move registru registru registru specific este nenecesar.Instruciunile aritmetice (care se ncadreaz n acest format) vor realiza operaii ca:

    adunare, scdere, nmulire, mprire (operaii cu ntregi), deplasare/rotire la stnga sau ladreapta cu unul sau mai muli bii, iar instruciunile logice vor realiza operaii ca AND, OR, NOT, XOR. Numerele reprezentate n virgul flotant vor avea operaii (instruciuni) proprii de adunare, scdere, nmulire i mprire i n acest context s-ar putea renuna lainstruciunile de nmulire/mprire n virgul fix.

    Instruciunile de deplasare/rotire necesit numai un operand. Rs1 ar putea specificaoperandul deplasat iar Rs2 ar putea specifica numrul de poziii deplasate.

    Biii neutilizai (biii 10 la 0) ar putea fi utilizai ca sub-opcode pentru o unitatefuncional cum ar fi ALU. Astfel, cmpul opcode va specifica o clas de operaii (deexemplu aritmetico-logice), iar cmpul sub-opcode va selecta operaia propriu-zis laALU.

    2.2.2. Formatul registru - registru - constant (R-R-I)

    Sunt foarte frecvente situaiile n care unul dintre operanzii unei instruciuniaritmetico-logice este o constant. Pentru codificarea constantei respective se utilizeaz uncmp din codul instruciunii i de aceea acest mod de adresare se numete imediat, iar formatul se mai numete i registru - registru - imediat.

    Cel mai adesea constantele necesare sunt constante mici. O dimensiune rezonabil pentru aceste constante este 16 bii i aceast dimensiune se ncadreaz bine n formatul dinfig. 2.2. Combinnd dou constante de 16 bii se obine o constant pe 32 bii. Cmpurileopcode , Rd i Rs1 rmn pe aceleai poziii pe care au fost fixate n formatul R-R-R (important pentru reducerea complexitii decodificatorului instruciunii).

    Un exemplu de instruciune R-R-I ar fi:

    ADD R4,R5,64 ; R4 = R5 + 64

  • 8/7/2019 AC Suport Curs

    15/59

    ARHITECTURA SISTEMELOR DE CALCUL

    15

    Fig. 2.2. Formatul registru - registru - constant (formatul R-R-I)

    Formatul registruregistru-constant poate fi utilizat cu toate operaiile aritmetico-logice prevzute pentru formatul R-R-R, inclusiv operaiile de deplasare/rotire n carenumrul de poziii deplasate va fi specificat de constanta utilizat.

    2.2.3. Formatul registru - memorie (R-M)

    Pentru c toate instruciunile proceseaz operanzi preluai din registre, acetiatrebuie mai nti transferai din memorie n registre. Instruciunile R-M (instruciunile

    load/store ), prin care se vor realiza transferurile registru - memorie, trebuie s specificeadresa locaiei de memorie ce va fi implicat n transfer, i multe moduri de adresare pot fiutilizate pentru adresarea locaiei respective. Totui, modul de adresare registru indirect cuoffset pe care l vom implementa este un mod de baz din care deriv majoritateacelorlalte moduri. n modul de adresare indirect registru, un registru specificat conineadresa locaiei de memorie ce se va implica n transfer. Opional un offset dat de oconstant memorat n codul instruciunii poate fi adunat la coninutul registrului respectiv pentru a genera adresa utilizat la accesarea memoriei. Instruciunile load ncarcconinutul locaiei respective n registrul destinaie n timp ce instruciunile store memoreaz registrul surs n locaia respectiv.

    LD R1,200[R8] ; coninutul locaiei de memorie adresat; de R8 + 200 este ncrcat n R1.

    ST 16[R3],R4 ; R4 este copiat n locaia de memorie adresat

    ; de R3 + 16.O prim variant de format pentru instruciunile load / store ar fi formatul R-R-I

    din figura 2.3.Pentru load Rd specific registrul ce va fi ncrcat n timp ce pentru store Rd

    specific registrul ce va fi copiat n memorie; n ambele cazuri Rs1 specific registrul ceconine adresa. Inevitabil, n cazul load Rd este destinaie iar n cazul store Rd estesurs ceea ce implic o complicaie minor la proiectarea procesorului (decodificatoruluiinstruciunii). Complicaia poate fi evitat recurgnd la formatul din figura 2.4. a cruideficien const n reducerea numrului de bii alocai constantei de la 16 la 11 (offset ndomeniul-210 pn la+210 -1).

  • 8/7/2019 AC Suport Curs

    16/59

    Proiectarea setului de instruciuni

    16

    Fig.2.3. Formatul load / store - versiunea 1

    Fig.2.4. Formatul load / store - versiunea 2

    2.2.4. Formatul instruciunilor de branch

    n limbajele de nivel nalt apar puncte de decizie implementate, de exemplu, prindeclaraii IF:

    if((x!=y)&&(z

  • 8/7/2019 AC Suport Curs

    17/59

    ARHITECTURA SISTEMELOR DE CALCUL

    17

    Compilatoarele trebuie s translateze astfel de declaraii n instruciuni main.Este neraional s prevedem cte o instruciune main pentru fiecare declaraie IF (datoritnumrului vast de declaraii IF posibile). De asemenea, n-ar fi o idee bun ncercarea de a proiecta un set de instruciuni main copiind instruciunile unui anumit limbaj de nivelnalt. Este evident c trebuie s extragem primitivele eseniale ale limbajelor de nivel nalti acestea s fie implementate n limbajul main.

    O construcie IF de orice complexitate poate fi descompus n declaraii IF simplede forma:

    if (x rela ie y ) goto L1

    unde relaie poate fi orice relaie permis n limbajele de nivel nalt: , =, ==, !=.De exemplu, secvena C anterioar poate fi compilat ntr-o secven echivalent

    de instruciuni main:

    if (x==y) goto L1;if (z>=0) goto L1;a=b-3;b=b+4;

    L1:

    Exist mai multe posibiliti de implementare a declaraiei IF cu instruciunimain fiecare avnd un impact particular asupra proiectrii procesorului.

    Partea goto L1 revendic specificarea adresei de salt L1 de unde se va extrageurmtoarea instruciune n cazul n care condiia specificat n declaraia IF este ndeplinit.Deoarece astfel de instruciuni se utilizeaz pentru implementarea buclelor de program delungime relativ mic, pentru calculul adresei de salt se utilizeaz n general o adresarerelativ la PC (adresa de salt se obine adunnd la PC-ul curent un offset specificat).Acest mod de adresare permite compilatorului s genereze secvene de cod relocabile care pot fi ncrcate n orice zon de memorie fr schimbarea adreselor de branch . nconcluzie, instruciunile debranch vor realiza salturi condiionate relative la PC ( ProgramCounter ) .Adiional sunt necesare i salturi necondiionate pe care le vom realiza prininstruciuni jump .

    A. Utilizarea registrului de condiii

    Registrul de condiii sau de flag -uri este un registru special care caracterizeazrezultatele ALU obinute n cadrul instruciunilor aritmetice:

    Z - zero = 1 - caracterizeaz rezultat zero= 0 - caracterizeaz rezultat diferit de zero

  • 8/7/2019 AC Suport Curs

    18/59

    Proiectarea setului de instruciuni

    18

    C -carry = 1 - caracterizeaz rezultat cu transport (mprumut)= 0 - caracterizeaz rezultat fr transport (mprumut)

    S - semn = 1 - caracterizeaz rezultat negativ= 0 - caracterizeaz rezultat pozitiv

    O -overflow = 1 - caracterizeaz rezultat cu depire= 0 - caracterizeaz rezultat fr depire

    Pentru a implementa o declaraie IF, mai nti se execut o instruciune aritmetic poziionnd flag -urile de condiii n acord cu rezultatul obinut. Cea mai utilizat esteinstruciunea de comparare care este similar cu instruciunea de scdere, cu deosebirea crezultatul nu este depus la nici o destinaie ci doar se poziioneaz flag -urile n acord cuvaloarea sa. Apoi o instruciune debranch condiionat examineaz condiia testat i, dacaceasta este ndeplinit, realizeaz saltul la adresa specificat. Exist condiii pentru a cror verificare trebuie examinate mai multe flag -uri.

    O list tipic de instruciunibranch ar fi:

    BL -branch if less salt dac este mai mic dect ( < )BG -branch if greater salt dac este mai mare dect ( > )BGE -branch if greater or equal salt dac este mai mare sau egal cu ( >= )BLE -branch if less or equal salt dac este mai mic sau egal cu (

  • 8/7/2019 AC Suport Curs

    19/59

    ARHITECTURA SISTEMELOR DE CALCUL

    19

    B. Evitarea utilizrii unui registru de condiii

    O soluie care evit att utilizarea registrului de condiii ct i necesitatea execuieisuccesive a celor dou instruciuni const n combinarea celor dou instruciuni ntr-osingur instruciune debranch condiionat. Aceast instruciune compar coninutul a douregistre i execut saltul pe baza unei condiii specificate (de exemplu de egalitate):

    BEQ R1,R2,L1 ; salt la L1 dac R1 = R2

    O astfel de instruciune este necesar pentru fiecare condiie dei instruciunea BEQ ncombinaie cu o instruciune BL (sau BG) formeaz un set care face posibil orice tip de test.S presupunem c dispunem i de instruciunea:

    BL R1,R2,L1 ; salt la L1 dac R1 < R2

    Cele dou instruciuni (BEQ i BL) sunt suficiente pentru a implementa toate tipurile detest necesare:

    Condiie Secvena de cod aferent

    R1 < R2 BL R1,R2,L1

    R1 > R2 BL R2,R1,L1

    R1 >= R2 BL R2,R1,L1BEQ R1,R2,L1

    R1

  • 8/7/2019 AC Suport Curs

    20/59

    Proiectarea setului de instruciuni

    20

    BEQZ R3,L1 ; salt la adresa L1 dac R3 == 0.BEQNZ R3,L1 ; salt la adresa L1 dac R3 != 0.

    n cazul nostru aceste teste sunt uor de realizat utiliznd registrul R0 (care memoreaz permanent constanta zero) i instruciunile BEQ i BNE:

    BEQ R3,R0,L1 ; salt la adresa L1 dac R3 == 0.BNE R3,R0,L1 ; salt la adresa L1 dac R3 != 0.

    ntotdeauna alegerea instruciunilor n cazurile RISC este strns dependent demodul de implementare al procesului i de efectul pe care introducerea a ctorva noiinstruciuni l va avea asupra performanelor generale ale acestuia. Condiia de egalitaterevendic un comparator, care opereaz foarte rapid, n timp ce alte condiii cum ar fi maimare sau egal, revendic un sumator (scztor), care opereaz mai lent.

    C. Opiunea noastr privind instruciunile branch

    Considerm oportun includerea n clasabranch a patru instruciuni:

    BEQ Ri,Rj,L1BNE Ri,Rj,L1BL Ri,Rj,L1BGE Ri,Rj,L1

    Aceste instruciuni vor permite implementarea pe o singur instruciune a oricreicondiii de salt. Formatul cel mai potrivit pentru aceste instruciuni este prezentat n fig.2.5., unde Ri este Rd, Rj este Rs1 iL1=PC+ offset . Din nou utilizm cmpul Rd pentruselecia unui registru surs i nu destinaie.

    Fig. 2.5. Formatul instruciunilor debranch (format de tip R-R-I )

    2.2.5. Instruciunile de salt ( jump )

    Instruciunea jump realizeaz un salt necondiionat la o adres specificat n codulinstruciunii. Aceste instruciuni sunt necesare la implementarea construciilor IF-THEN-ELSE; sunt de asemenea utile la implementarea buclelor FOR i WHILE n care condiia de

  • 8/7/2019 AC Suport Curs

    21/59

    ARHITECTURA SISTEMELOR DE CALCUL

    21

    ieire din bucl este calculat la nceputul buclei. Instruciunea jump va fi utilizat lasfritul buclei pentru revenirea pe nceputul acesteia. Utiliznd mnemonica JMP, vom aveainstruciunea:

    JMP L1 ; salt la adresa L1

    Adresa de salt L1 se obine adunnd la PCoffset -ul specificat n codul instruciunii(adresare relativ la PC ca n cazul instruciunilor branch ).

    Fig. 2.6. Formatul instruciunii jump (formatul I)

    S menionm c i instruciunilebranch pot fi fcute necondiionate. Un exemplu ar fi:BEQ R1,R1,L1 ; salt dac R1 = R1

    Instruciunile jump utilizeaz unoffset pe 26 bii (fig. 2.6.) spre deosebire deinstruciunilebranch care utilizeaz unoffset doar pe 16 bii. Distana maxim de salt va fimult mai mare n cazul jump .

    Att n cazulbranch ct i n cazul jump ar putea fi folosit i un al doilea mod deadresare, modul registru - indirect. n acest caz n instruciune este specificat explicit unregistru (altul dect registrul PC) care conine adresa instruciunii pe care se va executasaltul (fig. 2.7.).

    Fig. 2.7. Formatul instruciunii jump cu mod de adresare indirect - registru

    Astfel de instruciuni ar putea fi utile la implementarea declaraiilor SWITCH/CASE dinlimbajele de nivel nalt i pentru revenirea din proceduri.

    Cu formatul din figura 2.7. putem avea, de exemplu:

    JMP [R1] ; salt la instruciunea a crei adres este; coninut n R1

  • 8/7/2019 AC Suport Curs

    22/59

    Proiectarea setului de instruciuni

    22

    sau chiar:

    JMP 134[R2] ; salt la instruciunea a crei adres se obine; adunnd R2 + 134.

    S notm c, n aceste cazuri, adresa de salt este o adres absolut i nu relativ laPC dei, dac se dovedete util, ea ar putea fi interpretat i ca adres relativ. S mainotm c notaia [R1] utilizat aici nu nseamn coninutul locaiei de memorie a creiadres este dat de R1 ca n cazul instruciunilor load / store .

    2.2.6. Apelul procedurilor

    O facilitate a limbajelor de nivel nalt este aceea de a permite organizarea iexecuia procedurilor. O secven de instruciuni care se repet de mai multe ori pe parcursul unui program se organizeaz ntr-o procedur care se apeleaz din diverse puncteale programului principal. Dup fiecare execuie procedura returneaz controlul programului principal printr-o revenire pe instruciunea urmtoare celei care a realizatapelul procedurii. Procedurile pot fi imbricate (o procedur apeleaz alt procedur, careapoi apeleaz alt procedur, ... etc.). De regul este permis ca o procedur s se apeleze peea nsi (proceduri recursive). La apel, procedurii i se transmit de regul parametrii carevor fi utilizai n calculele executate n interiorul procedurii. La sfritul execuiei procedurile pot returna valori.

    Dou mecanisme eseniale trebuie s funcioneze pentru implementarea procedurilor:

    - mecanismul de apel i respectiv de revenire din procedur.- mecanismul de transmitere a parametrilor procedurii i de returnare a

    rezultatelor obinute n procedur.

    A. Instruciunile CALL/RET

    n cazul procesoarelor CISC dou instruciuni speciale sunt prevzute pentruapelul procedurilor (instruciunea CALL) i pentru revenirea din proceduri (instruciuneaRET).

    Instruciunea CALL salveaz n stiv adresa de revenire (adresa instruciunii ceurmeaz dup CALL) i apoi execut un salt necondiionat la adresa de start a procedurii.Instruciunea RET de la sfritul procedurii realizeaz revenirea n programul principalcitind adresa de revenire din stiv i executnd un salt necondiionat la aceast adres (fig.2.8).

  • 8/7/2019 AC Suport Curs

    23/59

    ARHITECTURA SISTEMELOR DE CALCUL

    23

    B. Stiva

    Stiva este o structur de date de tip coad care funcioneaz pe principiul LIFO( Last-In-First-Out ). Stivele pot fi implementate n memoria principal sau utiliznd registreinterne procesorului. Stiva a fost preferat n memorie (mai cu seam n cazul procesoarelor CISC) datorit numrului aproape nelimitat de apeluri imbricate sau recursive. Un registruspecial al procesorului numit SP (Stack Pointer ) memoreaz permanent adresa vrfuluistivei. La memorarea unui cuvnt (de exemplu, de 32 bii) n stiv, mai nti estedecrementat cu 4 registrul SP (cuvntul este format din 4 octei) i apoi cuvntul respectiveste scris n memorie la adresa SP. La citirea unui cuvnt din stiv, mai nti se citetelocaia de la adresa SP i apoi SP este incrementat cu 4. A rezultat astfel o stiv care creten jos (depunerea n stiv se face cu decrementare de adres).

    Fig.2.8. Apeluri de procedur prin instruciuni CALL/RET

    Stiva poate fi creat i n interiorul procesorului utiliznd un set de registrededicate. Avantajul stivelor interne este viteza operaiilor cu stiva care va fi multsuperioar. n cazul RISC se prefer stivele interne dei, n aceast variant, stiva vaconine un numr finit i relativ mic de locaii.

    C. Transferul parametrilor prin stiv

    Procesoarele care execut instruciuni CALL/RET execut i instruciuniPUSH/POP pentru salvare/restaurare date n/din stiv. Instruciunea PUSH decrementeazregistrul SP i apoi memoreaz data specificat (registrul specificat) la aceast adres.

  • 8/7/2019 AC Suport Curs

    24/59

    Proiectarea setului de instruciuni

    24

    Instruciunea POP citete locaia adresat de SP (vrful stivei) i o plaseaz n registrulspecificat, dup care incrementeaz registrul SP. Transferul parametrilor se realizeaz prininstruciuni PUSH/POP. nainte de apelul procedurii (CALL) n programul principal parametrii sunt memorai n stiv prin instruciuni PUSH, iar dup apel (n procedur) parametrii sunt preluai din stiv prin instruciuni POP.

    D. Utilizarea ferestrei de registre pentru transferul parametrilor ipentru variabile locale

    Deoarece procedurile sunt foarte utilizate n multe aplicaii, salvarea i restaurarearegistrelor la apelul procedurilor i respectiv revenirea din proceduri consum o partesemnificativ din timpul procesorului afectnd negativ performanele acestuia. ProiectulRISC elaborat la Universitatea Berkeley (1985) introducea conceptul ferestrei de registre(register window ) prin care un set de registre interne era utilizat pentru simplificarea icreterea vitezei de transmitere a parametrilor ntre procedurile imbricate. Era prevzut unnumr de registre locale pentru fiecare procedur. Ideea a fost preluat n cteva dintreurmtoarele procesoare printre care i procesorul SUN Sparc.

    Principiul register window presupune implementarea n cadrul procesorului aunui set amplu de registre care va memora adresele de revenire i parametrii transferaintre proceduri (fig. 2.9.).

    Set de registre

    Pointer -ul de fereastr(selecteaz fereastra curent)

    Registre pentru procedura 1

    Registre pentru procedura 3

    Registre pentru procedura 2

    Registre pentru procedura 4

    parametrii de ieire din procedura 1i respectiv de intrare n procedura 2

    parametrii de ieire din procedura 2i respectiv de intrare n procedura 3

    Registre disponibiletuturor p rocedurilor (variabile globale)

    Fig. 2.9. Fereastra de registre implementat n procesoare RISC

  • 8/7/2019 AC Suport Curs

    25/59

    ARHITECTURA SISTEMELOR DE CALCUL

    25

    Fiecare procedur poate accesa un subset de registre alocat procedurii respective ncadrul setului de registre. Subsetul alocat unei proceduri este denumit fereastr de registre(register window ). Registrele din centrul ferestrei sunt utilizate numai de procedurarespectiv. Registrele din partea superioar a ferestrei sunt accesate de procedura respectivi de procedura care a apelat-o, iar registrele din partea inferioar de procedura respectiv i procedura apelat de aceasta. Att partea superioar ct i partea inferioar a ferestrei sesuprapune peste poriuni similare alocate altor proceduri. Cnd o procedur este apelat dectre alt procedur (iniial de ctre programul principal), fereastra se mut pe poziiaimediat urmtoare, iar la revenirea din procedur fereastra se mut napoi. Presupunnd csetul va conine un numr suficient de registre pentru imbricarea procedurilor, putem afirmac nu mai este necesar salvarea parametrilor i a adresei de revenire n memorie. Setul deregistre este gestionat de un registru pointer de fereastr care identific permanent fereastracurent. Un al doilea set de registre accesibil tuturor procedurilor este prevzut pentruvariabilele globale.

    Analiznd diverse programe s-a constatat c, de regul, numrul de proceduriimbricate nu este mai mare de 8 i extrem de rar depete 11, iar depirea accidental aacestor limite se face pentru perioade de timp rezonabil de scurte. Pentru exploatareaeficient a acestor caracteristici setul de registre este adresat ntr-o manier circular. Unexemplu specific ar fi procesorul RISC II realizat la Universitatea Berkeley, care are n total138 registre configurate n 8 ferestre a cte 32 registre fiecare, plus 10 registre globale.Aranjarea circular a celor 8 ferestre de registre este prezentat n figura 2.10.

    Fig. 2.10. Configuraia circular a ferestrelor de registre la procesorul RISC II

  • 8/7/2019 AC Suport Curs

    26/59

    Proiectarea setului de instruciuni

    26

    Pointerul ferestrei curente (CWP -Current Window Pointer ) are 3 bii i selecteaz permanent fereastra care va fi accesat. Registrul care va fi accesat n cadrul ferestrei va fispecificat n instruciune prin numrul su (0 - 31). Registrele numerotate de la 0 la 9 referntotdeauna registrele globale indiferent de numrul ferestrei curente. Registrele globalesunt accesibile tuturor procedurilor. Registrele numerotate de la 10 la 31 refer ntotdeaunaregistre din cadrul ferestrei curente. Adresa efectiv a unui registru din setul R10 - R31 seobine prin concatenarea celor 3 bii ce formeaz adresa de fereastr (coninutul CWP) cucei 5 bii care specific adresa registrului n cadrul ferestrei. S observm c prinsuprapunerea ferestrelor apar grupuri de registre care rspund la dou adrese. De exemplu,registrul 0:26 din fereastra 0 (programul principal) este n acelai timp i registrul 1:10 dinfereastra 1 (procedur pe primul nivel de imbricare).

    n general numrul procedurilor imbricate este limitat i aranjamentul circular alferestrelor se potrivete bine acestei caracteristici. Ori de cte ori acest numr depetevaloarea 8, va trebui utilizat memoria principal pentru salvarea coninutului anumitor registre. Un alt dezavantaj potenial apare n sistemele de operaremultitasking , lacomutareatask- urilor; salvarea contextului consum timp suplimentar (numr mare deregistre).

    E. Opiunea noastr privind mecanismul de apel al procedurilor

    Opiunea are la baz dou considerente. n primul rnd considerm oportunevitarea instruciunilor complexe de tip CALL/RET care vor crea probleme n cazulimplementrii procesorului n tehnic pipeline (instruciuni specifice CISC). n al doilearnd, pentru c apelul procedurilor poate fi foarte frecvent, considerm oportun evitareautilizrii memoriei pentru memorarea adreselor de revenire, a parametrilor i pentrusalvarea registrelor. Dac operaiile sunt frecvente, ar trebui implementate n acord cufilozofia RISC. Principiul ferestrelor de registre este atractiv i oportun pentru c utilizeazregistre i pentru modul eficient de transmitere a parametrilor. n cazurile n care numrul procedurilor imbricate depete numrul ferestrelor trebuie recurs la memorie pentrusalvarea adreselor de revenire i transmiterea parametrilor.

    O ultim posibilitate const n transformarea instruciunilor CALL/RET nsecvene de instruciuni simple. Un singur registru intern va fi utilizat pentru memorareaadresei de revenire: R31. O instruciune CALL simplificat, numit JAL ( Jump And Link ),va executa saltul la adresa specificat n instruciune i va memora adresa de revenire nR31. Pentru revenirea din procedur se poate utiliza un simplu salt necondiionat lainstruciunea a crei adres este dat de R31; va fi suficient o instruciune JMP cu mod deadresare indirect - registru. Instruciunea JAL poate utiliza formatul I din figura 2.6.Mecanismul va funciona evident pentru un singur nivel de apel. Pentru imbricare, R31 vafi memorat n stiv, utiliznd un al doilea registru ca pointer de stiv: R29. n esen, secreeaz o stiv n vrful creia se va afla R31, iar restul locaiilor se vor afla n memorie.Secvena de cod necesar pentru apelul i revenirea dintr-o procedur va fi:

  • 8/7/2019 AC Suport Curs

    27/59

    ARHITECTURA SISTEMELOR DE CALCUL

    27

    SUB R29,R29,4 ; decrementeaz pointerul de stiv (4 octei)ST [R29],R31 ; memoreaz ultima adres de revenire n stivJAL Proc_Label ; salt laProc_Label i memoreaz adresa de

    ; revenire n R31.LD R31,0[R29] ; dup revenirea din procedur, se restaureaz

    ; adresa de revenire anterioar n R31.ADD R29,R29,4 ; incrementeaz pointerul de stiv (4 octei)

    Revenirea de la sfritul procedurii va fi simpl:

    JMP [R31] ; salt la locaia a crei adres se afl n R31

    Exist dou alternative pentru salvarea registrelor: salvare nainte de apelul procedurii (salvarea executat de ctre apelant) i respectiv dup apel (salvarea executat dectre apelat). Pentru memorarea parametrilor n stiv, nainte de apel, va fi necesar osecven de forma:

    SUB R29,R29,4ST [R29],R31SUB R29,R29,4ST [R29],Parametru1SUB R29,R29,4ST [R29],Parametru2JAL Proc_Label

    Dup definirea principalelor formate de instruciune se poate trece la proiectarea procesorului. Evident c vor trebui incluse n setul de instruciuni prezentat i alteinstruciuni, dar putem considera c toate aceste instruciuni noi se vor ncadra n formateledeja descrise. Instruciunile descrise sunt specifice filozofiei RISC.

    2.3. Execuia instruciunilor

    Execuia instruciunilor se face n pai elementari succesivi. n fiecare paselementar se vor executa anumite operaii simple, interne procesorului.

    2.3.1. Structura procesorului

    Structura intern a procesorului este prezentat n figura 2.11. n structur pot fiidentificate registrele generale R0 - R31 i un numr de registre specializate:

    PC - Program Counter - conine permanent adresa urmtoarei instruciuni deexecutat

  • 8/7/2019 AC Suport Curs

    28/59

    Proiectarea setului de instruciuni

    28

    IR - Instruction Register - conine codul instruciunii curente (n curs deexecuie)

    MAR -Memory Address Register - conine adresa locaiei de memorie ce va fiaccesat n timpul unei operaii de citire/scriere memorie.

    MDR -Memory Data Register - conine data trimis spre memorie (la scriere) irespectiv data recepionat din memorie (la citire)

    A - registru tampon - memoreaz coninutul registrului surs Rs1 selectat nsetul de registre generale

    B - registru tampon - memoreaz coninutul registrului surs Rs2 selectat nsetul de registre generale

    C - registru tampon - conine valoarea ce va fi memorat n registrul destinaieRd selectat n setul de registre generale

    Fig. 2.11. Structura procesorului cu control centralizat

  • 8/7/2019 AC Suport Curs

    29/59

    ARHITECTURA SISTEMELOR DE CALCUL

    29

    n structur mai apare:

    ALU -unitatea aritmetico-logic n care se vor executa operaiilearitmetice i logice

    Unitate de control -va genera semnalele de comand pentru realizarea transferurilor dedate i a altor operaii interne procesorului. Va utiliza coninutulregistrului IR (codul instruciunii curente) pentru a determina cecomenzi trebuie s genereze i n ce secven. Instruciuni diferitevor impune secvene de comenzi diferite. Secvenierea n timp acomenzilor se va face pe baza semnalului de tact al procesorului.

    n structur mai apar 3 busuri interne (busurile S1, S2 i D) care interconecteazregistrele i ALU. Primele dou busuri, S1 i S2, sunt dedicate celor doi operanzi surs posibil de specificat n instruciune. S1 i S2 transport operanzii pe intrrile ALU. Busul Dtransport rezultatele ALU la destinaia specificat n instruciune. Structura cu trei busurieste specific formatului de instruciune cu trei adrese (de registru).

    Cele dou registre, MAR i MDR, au fost prevzute pentru interfaarea procesorului cu memoria i nu sunt accesibile programatorului (nu pot fi specificate n nicio instruciune main). naintea oricrui acces la memorie, n MAR va fi ncrcat adresalocaiei ce urmeaz a se accesa. n instruciunile LD (load ), MDR va fi ncrcat cu datelecitite din memorie , iar n instruciunile ST ( store ), MDR va fi ncrcat de ctre procesor cudatele ce vor fi scrise n memorie.

    Registrele A, B i C sunt de asemenea inaccesibile programatorului i au fost prevzute pentru interfaarea setului de registre generale R31 - R0. Registrele A i B vor fincrcate cu datele citite din registrele surs specificate n instruciune (Rs1 i Rs2) iar registrul C va fi ncrcat cu datele ce urmeaz a fi depuse n registrul destinaie specificatn instruciune (Rd).

    Setul de registre generale are structura unei memorii multiport sincron rapid cu32 locaii a cte 32 bii, care va avea 3 surse de adresare:

    - cmpul Rs1 din codul instruciunii pentru citirea primului registru surs n A- cmpul Rs2 din codul instruciunii pentru citirea celui de-al doilea registru

    surs n B- cmpul Rd din codul instruciunii pentru scrierea datelor din C n registruldestinaie specificat.

    Pentru descrierea transferurilor interne de date vom utiliza notaia:

    Rj Ri ; coninutul registrului Ri este transferat n registrul Rj

    n structura din figura 2.11. aceste transferuri pot fi realizate numai prin intermediul ALU,ceea ce implic:

  • 8/7/2019 AC Suport Curs

    30/59

    Proiectarea setului de instruciuni

    30

    a) ALUR Ri ; sursa Ri se aplic pe intrarea ALU i se transfer; pe ieirile ALU ( ALUR )

    b) Rj ALUR ; ieirile ALU

    R se transfer n registrul destinaie Rj

    Pentru transferul a) este utilizat unul din busurile surs (S1 sau S2), iar pentru transferul b)este utilizat busul destinaie (D). Cele dou transferuri sunt simultane ceea ce nseamn c,global, transferulRj Ri se va executa ntr-o singur perioad de tact. Registrele Ri i Rjtrebuie s fie registre conectate direct la busuri. Registrele generale R31-R0 nu suntconectate direct i de aceea vor realiza transferuri prin intermediul registrelor tamponA,B,C.

    2.3.2. Ciclul fetch instruciune

    n acest ciclu, registrul PC conine adresa instruciunii ce urmeaz a se citi dinmemorie. Aceast adres va fi transferat n MAR de unde va fi aplicat pe liniile de adresale memoriei. Dup o ntrziere datorat timpului de acces la memorie, cuvntul de 32 biicitit din locaia selectat (codul instruciunii) va fi ncrcat n MDR prin intermediul liniilor de date ale memoriei. Instruciunea este apoi transferat din MDR n IR i PC esteincrementat cu 4 pentru a pointa pe urmtoarea instruciune n memorie (codul instruciuniiconine 4 octei). Cele trei aciuni (operaii) din cadrul ciclului fetch instruciune sunt:

    MAR PC ; se ncarc n MAR adresa instruciuniiIR MDR ; se ncarc n IR codul instruciunii citit din memoriePC PC + 4 ; incrementare PC (codul instruciunii de lungime fix -

    ; 4 octei)

    Prima operaie trebuie executat naintea celei de a doua, dar a doua i a treia pot fiexecutate simultan dac incrementarea registrului PC nu implic utilizarea ALU (registrulPC implementat cu logic special de incrementare). Evideniind operaiile simultane,

    ciclul fetch instruciune devine:MAR PCIR MDR , PC PC + 4

    Procesorul opereaz sincron astfel c fiecare operaie sau grup de operaii simultanestarteaz la nceputul perioadei de tact. Ciclul fetch instruciune este independent de tipulinstruciunii i conine ntotdeauna aceleai operaii. Procesarea unei instruciuni ncepentotdeauna cu ciclul (faza) fetch instruciune.

  • 8/7/2019 AC Suport Curs

    31/59

    ARHITECTURA SISTEMELOR DE CALCUL

    31

    2.3.3. Ciclul de execuie

    A doua faz, faza de execuie a instruciunii, are un coninut dependent de tipulinstruciunii ce urmeaz a se executa. n cazul instruciunilor aritmetico-logice, de exemplu,cei doi operanzi trebuie preluai din registrele surs specificate n codul instruciunii itransferai n registrele tampon A i respectiv B:

    A Rs1B Rs2

    Biii IR 20 - 16 din codul instruciunii selecteaz registrul Rs1, iar biii IR 15 - 11 selecteazregistrul Rs2 (fig. 2.1.). Deoarece cele dou cmpuri de selecie a registrelor surs suntsituate, n general, pe aceleai poziii indiferent de tipul instruciunii, este posibilextragerea lor i adresarea setului de registre generale nainte de decodificarea instruciunii(decodificarea cmpuluiopcode ). Putem, de asemenea, permite ca cele dou operaii detransfer a registrelor surs n registrele A i respectiv B s se fac automat pentru toateinstruciunile chiar dac cei doi operanzi surs nu vor fi utilizai (cum ar fi cazulinstruciunii de salt necondiionat JMP care poate s nu specifice nici o surs - vezi fig.2.6.). Pentru aceste instruciuni care nu au operanzi surs, coninutul registrelor A i B nuva mai fi utilizat ulterior. Aceasta nu conduce la o degradare a performanelor procesoruluideoarece am prevzut ci de date dedicate i independente ntre setul de registre generale iregistrele tampon A i B. Dac setul RG (registre generale) este implementat ca o memoriemultiport atunci cele 2 operaii pot fi executate simultan:

    A Rs1 , B Rs2

    Am prevzut, de asemenea, o cale de date dedicat ntre registrul C i setul RG care va fiutilizat la memorarea rezultatului n registrul destinaie.

    Urmtoarele operaii depind de tipul sau clasa instruciunii ce urmeaz a seexecuta. Tipul instruciunii este codificat n cmpulopcode i va fi cunoscut doar dupdecodificarea acestui cmp. Cmpulopcode va fi decodificat n unitatea de control.

    A. Instruciunile aritmetico-logice R-R-R

    Execuia instruciunilor aritmetico-logice, cum ar fiADD R1,R2,R3 , presupune n continuare urmtoarele operaii:

    - transferul registrelor A i B (cei doi operanzi surs) pe intrrile ALU. A va fitransferat pe busul S1, iar B pe busul S2.

    - transferul rezultatului obinut pe ieirile ALU n registrul C; acest transfer vafi efectuat pe busul D.

    - transferul registrului C n registrul destinaie adresat n setul RG cu cmpulIR 25 - 21din codul instruciunii (fig. 2.1.).

  • 8/7/2019 AC Suport Curs

    32/59

    Proiectarea setului de instruciuni

    32

    n concluzie:

    C A BRd C

    Cele dou operaii specificate pot fi descompuse, specificnd i busurile:

    S1bus A , S2bus BDbus S1bus S2busC Dbus

    Operaia ALU va fi specificat prin decodificarea cmpuluiopcode (sau sub -opcode dacexist).

    B. Instruciunile aritmetico-logice R-R-I

    Instruciunile aritmetico-logice care utilizeaz dou registre i o constant suntsimilare cu cele care utilizeaz trei registre cu excepia c locul celui de-al doilea registrusurs este preluat de constanta specificat n cmpul IR 15 - 0din codul instruciunii (fig. 2.2).Utiliznd notaia IR 15 - 0 pentru a specifica constanta, vom avea:

    C A IR 15-0

    Constanta poate fi extras din codul instruciunii (aflat n IR) pe unul din busurile S1 sau S2(fig. 2.11.) de unde va fi aplicat pe una din intrrile ALU.

    S ne reamintim c nu am prevzut o instruciune special de transfer (move)registru-registru. Transferurile registru-registru pot fi executate numai prin ALU utilizndinstruciunea ADD n care unul dintre operanzi va fi R0 (constanta zero).

    C. Instruciunile cu referire la memorie ( load /store )

    n formatul instruciunilor load / store - versiunea 1 (fig. 2.3.), adresa locaiei dememorie este specificat de coninutul registrului surs Rs1 la care se adaug unoffset codificat n cmpul IR 15 - 0 al codului instruciunii. Adresa astfel calculat trebuie ncrcatn registrul MAR:

    MAR A + IR 15-0

    Aceast adunare poate fi efectuat n ALU. Urmtoarele operaii sunt dependente de tipulreferinei la memorie:load sau store .

  • 8/7/2019 AC Suport Curs

    33/59

    ARHITECTURA SISTEMELOR DE CALCUL

    33

    n cazul instruciunilor load , coninutul locaiei adresate n memorie va fitransferat prin intermediul registrelor MDR i C n registrul destinaie Rd selectat decmpul IR 25 - 21din codul instruciunii. Secvena complet va fi:

    MAR A + IR 15-0 ; fixarea adresei de acces C MDR ; ncrcarea datelor citite din memorie Rd C ; transferul datelor citite n Rd

    Un timp acoperitor trebuie s treac (timpul de acces la memorie) din momentul ncrcriiadresei n MAR i pn la transferul datelor din MDR n C.

    Pentru instruciunile store ne confruntm cu o excepie: registrul surs estespecificat n cmpul destinaie al codului instruciunii (IR 25 - 21). O prim soluie ar fi ca n primul pas al fazei de execuie, simultan cu ncrcarea registrelor A i B, s fie ncrcat iregistrul C cu coninutul registrului destinaie:

    A Rs1 , B Rs2 , C Rd

    Dup acest prim pas coninutul registrului C va fi emis spre memorie prin intermediulregistrului MDR. Secvena complet pentru execuie va fi:

    MAR A + IR 15-0 ; fixarea adresei de accesMDR C ; fixarea datelor de scris n memorie

    Acest principiu impune implementarea setului RG cu trei porturi de citire. O soluiealternativ, care pstreaz adresa registrului surs n cmpul destinaie al coduluiinstruciunii (IR 25 - 21), const n utilizarea unuihardware de redirectare atunci cnd estedecodificat o instruciune store . Acesthardware , activat pe durata fazei de execuie ainstruciunilor store , determin utilizarea registrului B n locul registrului C. Secvena deoperaii ce compun ciclul de execuie devine:

    A Rs1 , B Rd ; acioneazhardware -ul de redirectareMAR A + IR 15-0 MDR B ; acioneazhardware -ul de redirectare

    n acord cu structura procesorului din figura 2.11., n ultimele dou operaii (ncrcareaadresei n MAR i respectiv a datelor de scris n memorie n MDR), traseul datelor transferate trece prin ALU. Din acest motiv cele dou operaii nu pot fi executate simultan.Dac n structura procesorului s-ar implementa o cale de date direct ntre registrele B iMDR atunci cele dou transferuri ar fi putut fi simultane.

  • 8/7/2019 AC Suport Curs

    34/59

    Proiectarea setului de instruciuni

    34

    D. Instruciunile de branch

    n faza de execuie a instruciunilor debranch trebuie verificat condiia de saltspecificat n instruciune. Dac condiia este adevrat, atunci se va calcula adresa de salti se va ncrca n PC. Condiiile de salt, stabilite pe baza registrelor Rs1 i Rs2 (vezi paragraful 2.2.4 C), pot fi verificate examinnd rezultatul scderii Rs1 - Rs2:

    condi ie A B

    Adresa de salt se calculeaz adunndoffset -ul specificat n instruciune (fig. 2.5.) la adresacurent din PC:

    ALUR PC + IR 15-0

    Cu resursehard suficiente, adresa de salt poate fi calculat simultan cu evaluarea condiieide salt. Din pcate, calculul adresei de salt revendic ALU i busurile de date interne.Acesta e motivul pentru care anumite procesoare RISC opereaz cu o singur condiie debranch , A = 0, care poate fi evaluat utiliznd unhardware simplu i rapid de detecie dezero.

    Pasul final din faza de execuie const n ncrcarea adresei de salt n PC dac estendeplinit condiia testat:

    IF Condiie=TRUE THEN PC ALUR

    n caz contrar, ncrcarea n PC se inhib i se va trece la urmtoarea instruciune dinsecven.

    E. Instruciunile de salt ( jump )

    Realizeaz salturi necondiionate relative la PC prin simpla adunare aoffset -uluispecificat n instruciune la coninutul registrului PC. Deoarece avem de-a face cu unoffset pe 26 bii, va fi necesar unhardware de validare, activat pe durata execuiei instruciuniiJMP, i care va valida transferul ntreguluioffset (IR 25 - 0) pe busul intern. n aceste condiiiexecuia devine:

    PC PC + IR 25-0

    Pentru instruciunile jump cu adresare indirect-registru, ca de exempluJMP123[R4], secvena de execuie va fi:

    PC A + IR 15-0

  • 8/7/2019 AC Suport Curs

    35/59

    ARHITECTURA SISTEMELOR DE CALCUL

    35

    Registrul specificat a fost ncrcat n A n pasul anterior, iar offset -ul are doar 16 bii(fig.2.7.).

    Instruciunea de apel procedur, JAL, este similar cu instruciunea JMP;suplimentar JAL va ncrca adresa de revenire n R31. Execuia instruciunii JAL va fi:

    R31 PCPC PC + IR 25-0

    Deoarece registrul PC a fost incrementat deja n ciclul fetch instruciune, n R31 se vancrca adresa instruciunii ce urmeaz dup JAL n secven.

    F. Instruciunile de control

    Sunt instruciuni cel mai adesea fr operanzi i care specific doar o operaie.Instruciunea NOP ( No OPeration ) este prezent n orice set de instruciuni. Este utilizat lasepararea dependenelor ntre instruciuni (procesoare pipeline ) i la depanarea programelor cnd NOP nlocuiete instruciunile eliminate. Cel mai convenabil cod pentru NOP estezero (32 bii de 0) ceea ce nseamn c o memorie iniializat cu zero va conine numaiinstruciuni NOP.

    Instruciunea HALT oprete procesorul (inhib semnalul de tact). Ieirea dinaceast stare de oprire se poate face, de regul, numai printr-o ntrerupere sau prininiializarea procesorului (RESET).

  • 8/7/2019 AC Suport Curs

    36/59

    Proiectarea setului de instruciuni

    36

  • 8/7/2019 AC Suport Curs

    37/59

  • 8/7/2019 AC Suport Curs

    38/59

    Memorii cache

    38

    n cache i accesate apoi aici de ctre procesor. n mod normal programele i datele suntncrcate i pstrate n memoria principal (MP) astfel c memoriacache va conine copiileunor locaii din memoria principal (vezi locaia X din fig. 3.1). Pentru fiecare locaie MPcopiat ncache este necesar ca ncache s se memoreze i adresa din MP a locaieirespective astfel nct procesorul s poat adresacache -ul cu aceleai adrese cu careadreseaz i MP. Aceasta nseamn c la orice acces la memorie procesorul va utilizaadresa MP. Dac locaia MP respectiv are o copie ncache procesorul va accesa aceastcopie, iar dac locaia MP respectiv nu are o copie ncache procesorul va accesa chiar locaia MP respectiv. Funcionareacache -ului devine astfel transparent. Orice cuvnt dedate care urmeaz a fi scris n memorie de ctre procesor va fi scris (n primul rnd) ncache i scris i n MP, fie n acelai timp, fie ulterior cnd locaiacache respectiv trebuies preia copia unei alte locaii MP (cache -ul fiind de dimensiune redus va putea reine doar copiile aferente unui subset de locaii MP).

    X

    X

    Transfer de date

    Memoria principal

    Memoriacache

    Procesor

    Transfer de date

    Fig. 3.1. Principiul memorieicache

    Anumite caracteristici ale programelor au fost determinante pentru succesulmemoriilor cache . Dac programele ar fi avut o execuie pur secvenial, de la o anumitadres de memorie n sus, i dac aceleai instruciuni n-ar fi fost niciodat reexecutate,atuncicache -ul ar fi introdus ntrzieri suplimentare deoarece informaia ar fi trebuit mainti transferat din MP ncache i apoi n procesor i viceversa. Timpul de acces ar fi fost:

  • 8/7/2019 AC Suport Curs

    39/59

    ARHITECTURA SISTEMELOR DE CALCUL

    39

    t a = t m + t c (3.1)

    unde: t m = timpul de acces la MPt c = timpul de acces lacache

    Din fericire, dei codul este n general executat secvenial, de fapt toate programele repet anumite seciuni de cod i repet i accesele la aceleai date. Acestecaracteristici sunt cuprinse n principiul localizrii care se aplic la ambele tipuri dereferine la memorie (referine la instruciuni i respectiv date), dei este mult mai evidentn cazul referinelor la instruciuni. Principiul localizrii are dou componente:

    1. localizarea temporal (localizarea n timp). Odat referite, anumite locaii vor fi foarte probabil referite din nou, n viitorul apropiat.

    2. localizarea spaial (localizarea n spaiu). Referinele la memorie (inclusivcele la urmtoarea locaie) se fac cel mai adesea n apropierea (vecintatea)ultimei locaii referite.

    Referinele la urmtoarea locaie sunt uneori grupate ntr-o a treia component:localizarea secvenial.Localizarea temporal o gsim n buclele de instruciuni, stivele de date i acceselealeatoare. Localizarea spaial descrie caracteristica programelor de a accesa un numr dezone distincte n memorie. Localizarea secvenial descrie modul de referire secvenial alocaiilor (instruciunilor) care este o caracteristic de baz a programelor. Localizareasecvenial apare i la accesarea structurilor de date deoarece elementele unei structuri suntadesea memorate n locaii secveniale. Localizarea temporal este esenial pentru eficienacache -ului. Localizarea spaial este util la proiectareacache -ului, dar nu este esenial.

    3.1.1. Exploatarea avantajelor localizrii temporale

    Programele conin bucle i n general buclele sunt scurte. Dup ncrcarea ncache a unei bucle de program, instruciunile din bucl vor fi reaccesate ncache la fiecare reluarea buclei respective. Accesarea unor noi instruciuni n MP se va face doar la ieirea din bucl. Presupunnd c bucla este reluat den ori atunci, la prima parcurgere a bucleiinstruciunile vor fi accesate n MP i copiate ncache , iar urmtoarelen-1 parcurgeri sevor realiza cu accesarea instruciunilor ncache .

    Timpul mediu de acces la instruciunile buclei respective va fi:

    n

    t t

    n

    )t t (n accesdemediuTimp mc

    mc +=+

    = (3.2)

    Dac t c = 25 ns , t m = 200 ns i n = 10 , timpul mediu de acces va fi45 ns . Frcache timpul de acces ar fi200 ns . n concluzie, utiliznd uncache de opt ori mai rapid

  • 8/7/2019 AC Suport Curs

    40/59

    Memorii cache

    40

    dect MP (200/25) se obine o cretere substanial a vitezei de transfer procesor - memorie.S notm c, pe msur cen crete, timpul mediu de acces se apropie asimptotic devaloareat c. Creterea vitezei de transfer depinde de program. Anumite programe pot ficaracterizate de o puternic localizare temporal, n timp ce alte programe nu. Deasemenea, timpul mediu de acces d doar o indicaie aproximativ privitoare la creterea performanelor globale ale sistemului. Creterea real va fi diferit deoarece, pe lngtimpii de fetch instruciune i fetch operand, ciclul instruciunii mai conine i altecomponente.

    3.1.2. Exploatarea avantajelor localizrii spaiale

    Pentru a obine avantaje din localizarea spaial, vom transfera nu numai un octetsau un cuvnt din MP ncache (i viceversa) ci un numr de locaii secveniale careformeaz o linie sau un bloc. Pentru performane maxime, linia (blocul) trebuie transferatsimultan prin intermediul unui bus de date extins, prelund cte un octet sau un cuvnt dinfiecare modul de memorie principal. Organizarea memoriei MP n mai multe moduleconectate la memoriacache prin intermediul unui bus de date extins permite i egalizareatimpilor de acces lacache i respectiv MP. Structura de principiu este redat n fig. 3.2(vezi i paragraful 1.2). n exemplul din fig. 3.2, opt module de memorie creeaz o linie deopt octei pentrucache . Adresele sunt distribuite succesiv celor 8 module de memorie astfelnct octei succesivi sunt locai n module succesive, aa cum indic figura 3.2. Cmpulsuperior de adres (cmpulLinie ) este transmis tuturor modulelor pentru a selecta o locaien cadrul fiecrui modul. Cei mai puin semnificativi 3 bii (cmpul Byte) identific octetul(modulul din care provine octetul respectiv). Deci opt locaii consecutive pot fi citite ncache , sau scrise dincache n MP, simultan. Desigur c aceast tehnic presupune c ceiopt octei consecutivi sunt i necesari (procesorului).

    Numrul de module de memorie, n cazul generalm , se alege astfel nct s rezulteo egalizare a vitezelor de operare aferentecache -ului i respectiv MP. Pentru o egalizare perfectm va fi ales astfel nct:

    m t c = t m

    Cuvintele (octeii) din cadrul unei liniicache vor putea fi accesate de procesor nordine secvenial n altemt c secunde. Deci, timpul mediu de acces la aceste cuvinte, cndsunt pentru prima dat referite, va fi2m t c / m = 2 t c . Dac aceste cuvinte vor fi referite den ori (bucl de program), timpul mediu de acces va fi:

    n

    t 1)(n

    n

    t 1)-(nt 2 accesdemediuTimp ccc

    +=

    += (3.3)

    De exemplu, dact c = 25 ns i t m = 200 ns , opt module de MP vor permitetransferul ncache a opt cuvinte n200 ns .

  • 8/7/2019 AC Suport Curs

    41/59

    ARHITECTURA SISTEMELOR DE CALCUL

    41

    0 1 2 3 4 5 6 78 9 10 11 12 13 14 15

    MP format din 8 module de memorie

    Linie

    A dr es M em or ie

    Byte

    Byte

    Procesor

    Linie

    Cache

    Fig. 3.2. Memoriecache interfaat cu 8 module de memorie principal(memorie cu cuvnt de lungime extins )

    Pentrun = 10 , vom avea:

    ns27,510

    25)9(50 accesdemediuTimpul =

    +=

    Pentru valori mari ale luin timpul mediu de acces va fi aproximativt c.S notm c dac localizarea n cadrul programelor s-ar reduce doar la localizarea

    secvenial a instruciunilor, i dac instruciunile ar fi ntotdeauna adresate i localizatesecvenial, memoriacache n-ar mai fi necesar deoarece o memorie principal cu lungimeacuvntului extins mpreun cu unbuffer extins plasat ntre procesor i MP ar fi suficiente pentru alimentarea procesorului cu instruciuni la rata solicitat de ctre acesta (vezi 1.2.A).Totui, situaia real este alta i excepiile de la principiul localizrii secveniale att n ceeace privete fetch-ul instruciunilor ct i referinele la date trebuie luate n considerare.

    Pentru fetch -ul unui cuvnt am presupus c este necesar accesareacache -uluinainte de accesarea MP, c este deci uzual s se caute nti ncache pentru a vedea dacinformaia solicitat exist acolo sau nu. Avantajulcache -ului rezult din informaiile pecare acesta le conine, dei atunci cnd procesorul refer un cuvnt inexistent ncache ar finecesar o a doua referin lacache dup ce cuvntul a fost transferat din MP ncache (vezirelaia 3.1). Cuhardware adiional corespunztor, capabil s gestioneze i un bus de datedirect procesor - MP, performanele pot fi mbuntite n sensul c un cuvnt citit din MP poate fi transmis simultan sprecache i respectiv spre procesor (se elimin cea de-a douareferin lacache ).

  • 8/7/2019 AC Suport Curs

    42/59

    Memorii cache

    42

    Operaiile de scriere necesit o gestiune special care va fi prezentat la 3.3. Oricecuvnt scris ncache trebuie (eventual) transferat i n MP i acest transfer va reduce timpulmediu de acces. Vom deduce formulele pentru calculul timpului mediu de acces innd conti de operaiile de scriere, dar pentru nceput vom lua n considerare doar operaiile decitire. Formulele pe care le vom obine pot fi aplicate att la calculul timpului mediu deacces ct i la calculul ciclului mediu.

    3.1.3. Rata de HIT

    Probabilitatea ca un cuvnt solicitat s fie deja actualizat ncache depinde de program i de dimensiunea i organizareacache -ului; tipic 70-90% din referinele lamemorie vor gsi cuvintele solicitate ncache . Accesul n care cuvntul solicitat este gsitn cache este acces cuhit . Cnd cuvntul referit nu se afl ncache i drept consecintrebuie accesat n MP vom avea un acces cumiss. Rata dehit , h , se definete ca:

    memorielareferintedetotal Numarul cacheinhit cumemorielareferintede Numarul

    h =

    Rata dehit reprezint i probabilitatea ca un cuvnt s fie gsit ncache . Rata demiss estedat de1 - h . Timpul mediu de acces,t a, este dat de:

    t a = t c + (1-h) t m (3.4)

    presupunnd din nou c pentru fetch-ul unui cuvnt se acceseaz mai nticache -ul i, ncaz demiss, se acceseaz apoi i MP. Accesele la MP adaug timpul(1-h )t m. De exemplu,dac rata dehit este0,85 (o valoare tipic), timpul de acces la MP este100 ns i timpul deacces lacache este25 ns , atunci timpul mediu de acces va fi25+0,15 100 = 35 ns .Rearanjnd ecuaia (3.4) obinem:

    ( )c

    m

    c

    a

    t

    t h-

    t

    t += 11 (3.5)

    Obiectivul urmrit este de a obine pentru raportult a /t c o valoare ct mai apropiatde 1 ceea ce este posibil atunci cndh se apropie de 1 i cnd raportult m/t c se apropie devaloarea 1. Pentru memoriilecache implementate n sistemele actuale raportult m/t c iavalori n domeniul [2, 10]. n acest caz, pentruh n domeniul 70-90%, raportult a/t c ia valoriapropiate de 1.

    n cele ce urmeaz vom considera c atunci cnd data este citit din MP ncache (miss) aceasta va fi imediat disponibil i pentru procesor fr a mai fi nevoie de o noucitire dincache (exist un bus de date direct ntre MP i procesor).

    Exist diverse interpretri care se dau timpului de acces. De exemplu, timpul deacces lacache , t c, este compus din timpul necesar interogriicache -ului (pentru a descoperi

  • 8/7/2019 AC Suport Curs

    43/59

    ARHITECTURA SISTEMELOR DE CALCUL

    43

    dac data cutat este prezent sau nu ncache ) i timpul necesar producerii (citirii) acesteidate. Dac data solicitat nu este prezent ncache , atunci sunt necesaret m secunde pentru atransfera data din MP n procesor (incluznd orice timp adiional de ncrcare a dateirespective ncache ). Dac separmt c n t ci (timp de interogare acache -ului) it cr (timp decitire dincache ), relaia (3.4) devine:

    t a = t ci+ h t cr + (1-h)t m (3.6)

    sau:

    t a = h (t ci+ t cr ) + (1-h)(t ci +t m) (3.7)

    adic, timpul de acces este(t ci + t cr ) dac data este prezent ncache (timp dehit ) irespectiv(t ci +t m) dac data nu este prezent ncache (timp demiss).

    Ecuaia (3.6) poate fi rearanjat:

    t a = t ci + t cr + (1-h)(t m - t cr ) (3.8)

    sau:

    t a = t hit + (1-h)t miss-pen (3.9)

    unde:t hit = timpul de acces cnd data se afl ncache t miss-pen = timpul suplimentar care se adaug atunci cnd data nu se afl ncache

    (miss penalty )

    n practic, timpul de acces se exprim n cicluri main i nu n secunde. Ciclulmain reprezint ciclul (perioada) tactului aplicat procesorului. De asemenea i timpul de procesare aferent diferitelor instruciuni se exprim n cicli main. Tipict hit este 1 - 2 ciclimain iar t miss-pen este 5 - 20 cicli.

    3.2. Moduri de organizare a memoriilor cache

    Exist mai multe variante de implementare a memoriilor cache . n toate variantele procesorul acceseaz memoriacache cu adresa locaiei MP ce conine data solicitat. Decimemoriacache , indiferent de structura sa intern, trebuie s foloseasc adresa MP pentru aselecta intern data solicitat de procesor (dac aceasta este memorat ncache ) sau ssemnalezemiss (dac data solicitat nu se afl memorat ncache ). Maparea locaiilor MPn cache precum i transferul datelor din MP ncache i invers trebuie gestionate la nivelhardware ; pentru eficien maximcache -ul trebuie s fie complet transparent la nivel

    software .

  • 8/7/2019 AC Suport Curs

    44/59

    Memorii cache

    44

    3.2.1. Memoria cache complet asociativ

    Cea mai simpl metod de a asocia data memorat ncache cu adresa locaiei MPde unde provine este de a memora n aceeai locaiecache att data ct i adresa MP deunde aceasta provine. Acesta este principiul maprii complet asociative ( fully associative cache ). Pentru implementareacache -urilor complet asociative se utilizeaz memoriiasociative (memorii adresabile prin coninut). n fiecare locaiecache se memoreaz attadresa MP ct i data memorat n MP la acea adres. Cnd procesorul lanseaz o citire dinmemorie, adresa MP este comparat cu toate adresele memorate ncache (memorieasociativ) aa cum se indic n figura 3.3.Dac o locaiecache raporteaz egalitate (hit ), cmpul Data din locaia respectiv este cititi ncrcat n procesor (locaiacache respectiv a fost ncrcat anterior cu datele coninuten locaia MP selectat cu adresa emis de procesor). Dac compararea nu detecteazegalitate pe nici o locaiecache (miss), atunci procesorul va accesa i va citi data solicitatdin MP. Dac partea asociativ dincache (zona "Adresa MP") este capabil s memorezentreaga adres MP (fr trunchiere), atunci orice locaie MP poate fi actualizat(memorat) n orice locaiecache .

    Adresa MP emis de procesor Dac adresa nu este gsitn se acceseaz MP ( )cache miss

    Memoriacache

    Adresa MP DataComparare simultancu toate adresele memorate

    n cache

    Validare acces nMP lamiss

    Validare acces la hit (adres gsit)

    Procesorul acceseazlocaia ( )hit

    MemoriaPrincipal

    Fig. 3.3. Memoriacache complet asociativ

  • 8/7/2019 AC Suport Curs

    45/59

    ARHITECTURA SISTEMELOR DE CALCUL

    45

    Pentru a exploata avantajele localizrii spaiale (n toate tipurile decache ), ntr-olocaiecache se poate memora mai mult dect o locaie MP (o linie sau un bloc de locaiiMP consecutive). n figura 3.4., o liniecache este constituit din 4 cuvinte (locaii) MPconsecutive, fiecare cuvnt MP fiind format din 4 octei. Cea mai puin semnificativ partedin adresa emis de procesor (cmpul Byte) selecteaz octetul, cmpul urmtor (cmpulword ) selecteaz cuvntul ncache , iar biii cei mai semnificativi care rmn se compar cuadresele memorate ncache . ntreaga linie poate fi transferat printr-o singur tranzaciecache - MP dac se implementeaz un bus de date extins ntrecache i MP. Cu un busredus (de dimensiunea unui cuvnt), cuvintele unei linii trebuie transferate n tranzaciisuccesive, i drept consecin un bit adiional trebuie memorat ncache alturi de fiecarecuvnt pentru a indica starea de validitate/invaliditate a cuvntului respectiv (la un momentdat anumite cuvinte din cadrul liniei pot fi valide i altele nu i aceast stare este descris cuajutorul biilor de validare).

    Uzual unitatea adresabil n MP este octetul. Patru octei consecutivi formeaz uncuvnt de 32 bii. Procesorul poate iniia citirea unui octet, cuvnt de 16 bii, cuvnt de 32 bii (sau chiar mai mare). Exist diverse tehnici utilizate pentru specificarea dimensiuniicuvntului adresat n MP. n cadrul acestei lucrri vom considera c procesorul genereazadrese debyte i prin cteva semnale adiionale specific dimensiunea cuvntului ceurmeaz a fi transferat (un octet, 2 octei, 4 octei, mai muli octei). Patru octei reprezinto dimensiune convenabil pentru liniacache deoarece aceasta coincide cu lungimea uneiinstruciuni de 32 bii. O liniecache de 8 octei va gzdui dou instruciuni pe 32 bii. Deidimensiunea minim a liniei pare a fi 4 octei totui va fi necesar accesarea individual aocteilor n cadrul liniei; aceasta se realizeaz cu ajutorul cmpurilor word i byte din cadruladresei emise de procesor (fig. 3.4).

    Cache -ul complet asociativ ofer flexibilitate maxim n ceea ce privetecombinarea liniilor ncache (orice linie MP poate fi ncrcat n orice locaiecache ) i pentru o anumit capacitate acache -ului ofer minimum de conflict, dar este n acelai timpi cel mai scump datorit costului memoriilor asociative (zonacache n care se memoreazadresele MP este un plan de memorie asociativ). n ciclurilemiss informaia solicitat de procesor se va citi din MP i linia din care provine aceast informaie trebuie actualizat(copiat) ncache nlocuind astfel o alt linie actualizat anterior ncache . Linia care va finlocuit va fi selectat pe baza unui algoritm de nlocuire i acest algoritm trebuieimplementat nhardware deoarece trebuie s opereze la vitez ridicat. Implementareacomplet asociativ este viabil (din punct de vedere al costului) doar pentrucache -uri decapacitate mic pn la moderat. Microprocesoarele cucache -uri interne (on-chip ) micifolosesc frecvent implementarea complet asociativ deoarece asigur performane maxime.

    Biii de validare

    n toatecache -urile, dac dimensiunea liniei este mai mare dect dimensiunea busului de datecache - MP, vor fi necesare mai multe transferuri pentru a umple o liniecache cu cuvinte din MP i respectiv pentru a transfera liniile modificate ncache (princicluri de scriere date n memorie executate de procesor) napoi n MP.

  • 8/7/2019 AC Suport Curs

    46/59

    Memorii cache

    46

    Adresa MP emis de procesor

    M e m o r i a c a c h e

    Adresa MP Word 0Comparare simultan

    cu toate adresele memoraten cache

    Validare acces lahit (adres gsit)

    Word 1 Word 2 Word 3

    Selecie irespectiv

    Word Byte

    Procesorul acceseaz cuvntul(octetul) din cadrul liniei ( )hit

    Linie

    ByteWord

    2 2

    Fig. 3.4.Cache complet asociativ cu linii multicuvnt

    Deoarece cuvintele sunt transferate ncache succesiv este posibil ca la un moment dat olinie cache s nu conin toate cuvintele asociate liniei respective; o parte dintre cuvintesunt nc neactualizate i deci aparin liniei anterioare care fusese memorat ncache naceeai locaie. Pentru a gestiona astfel de situaii, fiecare cuvntcache este prevzut cu un bit de validare care este setat atunci cnd cuvntul face ntr-adevr parte din linia a creiadres este memorat ncache n linia respectiv. Cnd un cuvnt este ncrcat ncache , bitul su de validare este setat. Cmpul de adres din cadrul unei liniicache identific linia,dei nu toate cuvintele din linia respectiv aparin cu adevrat liniei curente; unele dintrecuvinte sunt motenite din linia precedent. Cnd procesorul acceseazcache -ul, adresaemis de procesor este comparat cu toate adresele memorate ncache . Dac se obine ocoresponden (egalitate), linia respectiv este selectat i bitul de validare asociatcuvntului selectat (n cadrul liniei) este verificat pentru a se vedea dac cuvntul respectiveste o parte valid a liniei sau nu. Dac este valid (bitul de validare setat), cuvntul este

  • 8/7/2019 AC Suport Curs