gdf

Upload: enricsg

Post on 29-Mar-2016

231 views

Category:

Documents


0 download

DESCRIPTION

gdfgd

TRANSCRIPT

  • Quadern de laboratoriEstructura de Computadors

    Emilio CastilloJos Mara CelaMontse FernndezDavid LpezJoan Manuel ParcerisaAngel ToribioRubn TousJordi TubellaGladys Utrera

    Departament dArquitectura de ComputadorsFacultat dInformtica de BarcelonaQuadrimestre de Primavera - Curs 2014/15Aquest document es troba sota una llicncia Creative Commons

  • Licencia Creative CommonsEsta obra est bajo una licencia Reconocimiento-No comercial-Compartir bajo la misma licencia 2.5 Espaa de Creative Commons. Para ver una copia de esta licencia, visite

    http://creativecommons.org/licenses/by-nc-sa/2.5/es/

    o envie una carta a

    Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

    Usted es libre de: copiar, distribuir y comunicar pblicamente la obra hacer obras derivadas

    Bajo las condiciones siguientes: Reconocimiento. Debe reconocer los crditos de la obra de la manera especificada por el autor

    o el licenciador (pero no de una manera que sugiera que tiene su apoyo o apoyan el uso que hace de su obra).

    No comercial. No puede utilizar esta obra para fines comerciales. Compartir bajo la misma licencia. Si altera o transforma esta obra, o genera una obra derivada,

    slo puede distribuir la obra generada bajo una licencia idntica a sta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los trminos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los

    derechos de autor Nada en esta licencia menoscaba o restringe los derechos morales del autor.

    Advertencia: Este resumen no es una licencia. Es simplemente una referencia prctica para entender el Texto Legal (la licencia completa).Los derechos derivados de usos legtimos u otras limitaciones reconocidas por ley no se ven afectados por lo anterior.

  • - 61 -

    Sessi 5: Memria cacheObjectiu: Realitzar activitats relacionades amb la gesti del nivell de memria cache del sub-

    sistema de memria dun computador que afavoreixin lassimilaci dels conceptes implicats.

    Lectura prvia

    Considerem que el subsistema de memria dun computador consta duna memria principal

    (MP) i duna memria cache (MC). Tamb considerem en aquest punt que la MP permet

    emmagatzemar tot lespai adreable pel processador mentre que la MC emmagatzema un

    subconjunt daquest espai adreable. Daltra banda, sabem que el temps daccs a MP s

    ms elevat (ms dun ordre de magnitud) respecte al temps daccs a MC. Daltra banda,

    tamb coneixem que el cost per byte de fabricar la MP s ms baix que el cost de fabricar la

    MC. Lobjectiu en incorporar el nivell de memria cache en un computador s disminuir el

    temps mitj daccs a memria.

    A continuaci es resumeixen els diferents aspectes arquitectnics que considerem en el

    disseny duna memria cache.

    Mida de la MC. La MC sorganitza en blocs que contenen un cert nombre de paraules. El producte del nombre de blocs pel nombre de paraules per bloc estableix la capacitat de la

    MC quant a dades emmagatzemables de lespai adreable pel processador.

    Algorisme demplaament. Especifica en quina entrada de la MC subica el bloc de MP que cont la paraula de memria que accedeix el processador.

    Correspondncia directa: A cada bloc de MP li correpon una entrada fixa de MC. Completament associativa: Cada bloc de MP pot anar a qualsevol entrada de MC. Associativa per conjunts: La MC sorganitza en conjunts, que contenen un cert

    nombre de blocs cada un. A cada bloc de MP li correpon un conjunt fix de MC, i el

    bloc pot anar a qualsevol de les entrades que t el conjunt.

    Algorisme de reemplaament. Especifica quin bloc sha de eliminar de la MC quan no hi ha lloc per col.locar-ne un de nou. Aquest algorisme noms saplica en els emplaaments

    totalment associatiu i associatiu per conjunts. En la correspondncia directa el bloc a eliminar

    s nic i no hi ha alternativa. Lalgorisme de reemplaament que considerem s:

  • Sessi 5: Memria cache Estructura de Computadors

    - 62 -

    LRU: Selimina el bloc que fa ms temps que no es referencia.

    Poltica descriptura. Estableix com es gestionen les escriptures a memria. Duna banda cal decidir si conv copiar a la MC el bloc de MP quan lescriptura provoca una fallada i

    daltra banda cal mantenir la coherncia de les dues memries (MC i MP). La combinaci

    daquests dos aspectes ens dna les segents alternatives:

    Escriptura immediata amb assignaci: En cas de fallada en una escriptura es copia el bloc que saccedeix a MC. Es realitza lescriptura tant a MC com a MP.

    Aquesta poltica s lnica que es considera en el simulador MARS.

    Escriptura immediata sense assignaci: En cas de fallada en una escriptura no es porta el bloc a MC i lescriptura es realitza nicament a MP. Si lescriptura genera

    un encert la paraula sescriu tant a MC com a MP.

    Escriptura retardada amb assignaci: En cas de fallada en una escriptura es porta el bloc a MC. Lescriptura es realitza nicament a MC. La MP sactualitzar quan el

    bloc on es realitza lescriptura shagi de reemplaar, en un moment posterior de

    lexecuci del programa. Per a aquest efecte, sutilitza el bit D (bit de bloc modificat).

    Model de temps.

    A continuaci es descriu el model de temps que es considera per servir una referncia a

    memria, diferenciant si es tracta duna lectura o duna escriptura i si laccs provoca un

    encert o una fallada a la MC. A ms, el model contempla totes les poltiques descriptura

    estudiades.

    A nivell general cal considerar que el temps de servei duna referncia a memria s el temps

    en determinar si la referncia s un encert o una fallada a memria cache i servir la

    referncia en cas dencert (th) ms el temps de penalitzaci per resoldre la referncia en

    accedir al segent nivell de la jerarquia de memria (tp):

    taccs = th + tp

    Laccs a les etiquetes per comprovar si la referncia s un encert i el servei de la referncia

    en cas dencert es realitzen seqencialment durant el temps th: en la primera meitat daquest

    temps es fa laccs a les etiquetes i en la segona meitat es fa la lectura o escriptura a

    memria cache.

    Per aquelles configuracions de memria cache amb poltica descriptura immediata es

    considera lexistncia dun buffer descriptura amb llargada ilimitada on queden

  • - 63 -

    Estructura de Computadors Sessi 5: Memria cache

    emmagatzemades les escriptures pendents de portar a MP. Tamb es considera que cap

    referncia a memria entra en conflicte amb escriptures pendents en aquest buffer. Cal

    adonar-se que el contingut daquest buffer es porta a MP en paral.lel amb lexecuci de les

    instruccions que vnen a continuaci de laccs a memria.

    A continuaci es mostra una taula amb el temps de penalitzaci (tp) associat a una referncia

    segons sigui lectura/escriptura; encert/fallada i segons la memria cache contempli una

    poltica descriptura immediata sense assignaci/retardada amb assignaci:

    tpImmediata

    amb assignaciImmediata

    sense assignaciRetardada

    amb assignaci

    Lectura - Encert 0 0 0

    Lectura - Fallada tblock + th1 tblock + th

    1bloc modif.: 2*tblock + th

    2

    bloc no mod.: tblock + th1

    Escriptura - Encert 03 03 05

    Escriptura - Fallada tblock + th1 04

    bloc modif.: 2*tblock + th2

    bloc no mod.: tblock + th1

    1Es porta el bloc de MP i es reinicia laccs a memria.

    2Es porta el bloc modificat a MP; es porta el nou bloc de MP guardant-lo a lentrada que es

    reemplaa i es reinicia laccs a memria.

    3Lescriptura es fa a MC i a MP. Lactualitzaci de MP a partir del buffer descriptura es fa de

    forma concurrent amb la continuaci de la referncia a memria.

    4Lescriptura es fa nicament a MP. Lactualitzaci de MP a partir del buffer descriptura es fa

    de forma concurrent amb la continuaci de la referncia a memria.

    5Lescriptura es fa nicament a MC.

  • Sessi 5: Memria cache Estructura de Computadors

    - 64 -

    Enunciats de la sessi

    En la realitzaci daquesta sessi de laboratori considerarem un computador que disposa dun

    processador de 32 bits, com s ara el MIPS, i que el seu sistema de memria, adreable a

    nivell de byte, t una memria cache que gestiona de forma independent les instruccions i les

    dades. Noms analitzarem les referncies a paraules dins la memria cache de dades. Aquesta

    memria cache ser parametritzable pel que fa referncia a lalgorisme demplaament: cor-

    respondncia directa, completament associatiu i associatiu per conjunts i pel que fa referncia

    a la seva mida: nombre de blocs que cont i nombre de paraules per bloc (compte que no

    podem indicar el nombre de bytes per bloc). Tamb cal considerar de forma general per totes

    les activitats daquesta sessi que les variables globals que contenen els programes analitzats

    estan sempre emmagatzemades a memria a partir de ladrea 0x10010000.

    Activitat 5.A: Lectures a una cache de correspondncia directa

    En aquesta primera activitat analitzarem el comportament de la memria cache amb corres-

    pondncia directa en servir una seqencia de referncies, que seran nicament de lectura.

    En primer lloc identificarem els camps en qu es descomponen les adreces de memria, els

    quals intervenen en la gesti que sha de realitzar a la memria cache.

    Exercici 5.1: Considera que la memria cache cont 32 blocs i cada bloc t 4 paraules. Si

    el processador genera una referncia a memria consistent en la lectura de la paraula que t

    com adrea 0x1001014C, contesta les segents preguntes:

    1) Quin s el nmero (en hexadecimal) del bloc de memria principal al qual pertany aquesta referncia?

    2) Quin s lndex (en hexadecimal) del bloc de memria cache que correspon a aquesta referncia?

    3) Quina s letiqueta (en hexadecimal) que correspon a aquesta referncia?

  • - 65 -

    Estructura de Computadors Sessi 5: Memria cache

    Analitzarem com es comporta la memria cache en el recorregut seqencial dun vector. El

    programa que fa aquest recorregut es mostra a la figura 5.1. Examinal i contesta lexercici 5.2

    abans de continuar:

    int vector[100];

    main(){int i, sum=0;

    for (i=0; i

  • Sessi 5: Memria cache Estructura de Computadors

    - 66 -

    Per verificar lexercici 5.2, i daqu en endavant per analitzar el funcionament de la memria

    cache, farem servir el mdul "Data Cache Simulator" del MARS, que es troba a lopci

    "Tools" del seu men. Carrega aquest mdul i observa que sobre una nova finestra. En

    aquesta finestra es poden canviar els parmetres de disseny a la part anomenada "Cache Orga-

    nization". A la part anomenada "Cache Performance" obtindrem dades estadstiques del com-

    portament de la memria cache en lexecuci dun programa: les referncies a memria que es

    produeixen durant la seva execuci, el nombre dencerts, el nombre de fallades, i la taxa

    dencerts. Inicialment, cal prmer el bot "Connect to MIPS" per poder usar aquest mdul.

    El fitxer s5a.s cont el programa de la figura 5.1. Carrega aquest programa al MARS, assem-

    blal i posa en marxa el mdul "Data Cache Simulator". Executa completament el programa i

    verifica si la taxa dencerts que has contestat a lexercici 5.2 s la que indica el simulador.

    Completa lexercici 5.3 abans de continuar:

    Exercici 5.3: Contesta les segents preguntes:

    1) Si dupliquem la mida de la cache en base a duplicar el nombre de blocs que cont, hi haur alguna variaci en la taxa dencerts obtinguda? Per qu?

    2) Si dupliquem la mida de la cache en base a duplicar el nombre de paraules per bloc, hi haur alguna variaci en la taxa dencerts obtinguda? Per qu?.

    Verifica la respostes de lexercici 5.3 canviant la geometria de la cache en el mdul "Data

    Cache Simulator" i executant novament de forma completa el programa. Tingues en compte

    dinicialitzar la cache, prement el bot "Reset", cada cop que executis el programa.

    Laccs als elements del vector tamb es pot efectuar en ordre contrari, ats que el que volem

    obtenir s la suma de tots els elements. Contesta lexercici 5.4 abans de continuar:

    Exercici 5.4: La taxa dencerts que sobtindria en lexecuci del programa si el recorregut

    es fa des del darrer element del vector fins al primer s la mateixa o diferent respecte el

    recorregut en ordre creixent dels elements?

    Modifica el programa del fitxer s5a.s invertint lordre del recorregut i guardal amb el nom

    s5a2.s. Verifica amb el simulador la taxa dencerts de lexercici 5.4.

  • - 67 -

    Estructura de Computadors Sessi 5: Memria cache

    A continuaci analitzarem leficincia de la cache comparant un processador amb i sense

    cache de dades. Completa el segent exercici:

    Exercici 5.5: Suposem un sistema computador amb cache dinstruccions i dades separades.

    La dinstruccions s una cache ideal. La de dades s de correspondncia directa amb 32

    blocs i blocs d 4 paraules, i t el segent model de temps simplificat:

    Temps de cicle: tc = 10 ns.

    En cas de no tenir cache, temps daccs a memria principal: tMP = 6 cicles

    En cas dencert a la cache, temps daccs a memria : th = 1cicle

    En cas de fallada de cache cal afegir una penalitzaci addicional: tp = tblock + th.

    Consisteix en el temps per copiar el bloc de MP a cache: tblock = 10 cicles

    ms el temps per llegir/escriure de nou la paraula a la memria cache: th = 1 cicle

    Suposem que per al programa de la figura 5.1 hem mesurat que CPIideal =2 (s el CPI si tots

    els accessos a cache sn encerts). Quin s el guany en el rendiment del programa en el sis-

    tema amb cache de dades respecte dun sistema sense cache de dades?

    Nota1: Per calcular el nmero dinstruccions executades, tingueu en compte que algunes lnies dassemblador sn macros

    que sexpandeixen a ms duna instrucci; que el test del salt del bucle sexecuta una vegada ms que la resta dinstrucci-

    ons; i que sexecuten 3 instruccions del fitxer startup.s, 1 al principi del programa i 2 ms al final del programa.

    Podeu usar les eines "Instruction Statistics" i "Instruction Counter" del simulador MARS.

    Nota2: A fi de calcular el temps dexecuci del sistema sense cache coneixent el CPIideal del mateix sistema per amb

    cache caldr considerar que el temps daccs a memria s taccs = tMP i modelitzar-lo com si fos un sistema amb cache en

    qu tots els accessos fallen (m=100%) i amb una penalitzaci per fallada tp = tMP - th.

    Sense cache: texe (en ns.) = Amb cache: texe (en ns.) = Guany =

    Activitat 5.B: Escriptures en una cache de correspondncia directa

    Introduirem ara les escriptures en les referncies que genera el processador. Considerant el

    programa de la figura 5.2, que realitza lordenaci dels elements dun vector, completa lexer-

    cici 5.6 abans de continuar.

  • Sessi 5: Memria cache Estructura de Computadors

    - 68 -

    int vec[5] = {20, -18, 45, 12, -1};main() {int i, j, aux, max;

    for (i=0; i

  • - 69 -

    Estructura de Computadors Sessi 5: Memria cache

    El fitxer s5b.s cont la traducci del programa de la figura 5.2. Verifica la taxa dencert calcu-

    lada a lexercici anterior carregant al simulador aquest fitxer, assemblant-lo, configurant cor-

    rectament el mdul "Data Cache Simulator", i executant el programa.

    Completa el segent exercici abans de continuar:

    Exercici 5.7: Indica com canviaria la taxa dencerts si hagussim considerat una poltica

    descriptura immediata sense assignaci. dem per al cas duna poltica descriptura

    retardada amb assignaci? Raona les respostes.

    Un cop vist el comportament de la memria cache durant lexecuci del programa, volem abs-

    traure aquest comportament per entendre com es comportar amb vectors ms grans. Com-

    pleta el segent exercici abans de continuar: Exercici 5.8: Suposem que el vector a ordenar tingus 64 elements:

    1) Considerant la mateixa geometria de la cache de lexercici 5.6, quantes fallades es produirien?

    2) Suposem que volem reduir al mxim la capacitat de la memria cache per sense que augmenti el nombre de fallades del programa. Raona fins a quin nombre mnim de blocs la podem reduir.

    Modifica el programa del fitxer s5b.s (copiant-lo amb el nom s5b2.s) perqu el vector tingui

    64 elements: canvia la declaraci (per a aquest experiment no importa que no sinicialitzin els

    elements del vector), i tamb el nombre diteracions dels dos bucles.

    Verifica amb el simulador que les respostes donades a lexercici 5.8 siguin correctes.

  • Sessi 5: Memria cache Estructura de Computadors

    - 70 -

    Activitat 5.C: Accs a mltiples dades estructurades

    Analitzarem ara com es comporta la memria cache en lexecuci dun programa que acce-

    deix a mltiples estructures de dades, on es posa de manifest lexistncia de conflictes per

    accedir als mateixos blocs de la cache. Considereu el programa de la figura 5.3, que realitza la

    suma de dos vectors i deixa el resultat en un tercer vector. int A[128], B[128], C[128];main() {

    int i;

    for (i=0; i

  • - 71 -

    Estructura de Computadors Sessi 5: Memria cache

    Ara analitzarem quin seria el rendiment del programa de la figura 5.3 en una memria cache

    associativa. En primer lloc ho farem per a una cache completament associativa. Completa el

    segent exercici:

    Exercici 5.11: Considerant una memria cache completament associativa (de 16 blocs de

    4 paraules cadascun), calcula quina s la taxa dencerts que obtindrem en lexecuci del

    programa de la figura 5.3.

    Verifica-ho amb el simulador.

    A continuaci analitzarem el programa en una memria cache associativa per conjunts. Com-

    pleta el segent exercici:

    Exercici 5.12: Considerant una memria cache amb blocs de 4 paraules, associativa per

    conjunts amb 16 conjunts, raona quin ha de ser el grau mnim de lassociativitat (nombre de

    blocs per conjunt) perqu la taxa dencerts del programa de la figura 5.3 sigui diferent de 0

    (recorda que lassociativitat no s necessriament potncia de 2).

    Al simulador pots especificar el nombre de blocs que t cada conjunt (el grau de lassociativi-

    tat) al camp "Set size". Malauradament, el simulador noms tracta graus dassociativitat que

    sn potncies de 2. Verifica la resposta amb el simulador, ajustant lassociativitat al valor que

    saproximi ms a la teva resposta.

  • Sessi 5: Memria cache Estructura de Computadors

    - 72 -

    Activitat 5.D: Optimitzaci de codi (opcional)

    En aquesta darrera activitat lobjectiu s arribar a optimitzar lexecuci dun programa tenint

    en compte la memria cache de qu disposa el sistema. Considereu el programa de la figura

    5.4, que realitza el producte duna matriu per un vector:

    El fitxer s5d.s cont aquest programa tradut a assemblador MIPS.

    Determina mitjanant el simulador MARS quina s la taxa dencerts que sobt executant el

    programa de la figura 5.4. Considera que els blocs de la memria cache sn de 4 paraules. Cal-

    cula aquesta taxa per a diferents mides de la cache completant la segent taula (dins de cada

    fila suposem que la mida total no canvia, sols lassociativitat):

    Capacitatde la cache

    Correspondnciadirecta

    Associativade grau 2

    Associativade grau 4

    Associativade grau 8

    CompletamentAssociativa

    8 blocs

    16 blocs

    32 blocs

    64 blocs

    128 blocs

    int V1[16], M[16][16], V2[16];main() {

    int i,j,tmp;

    for (i=0; i

  • - 73 -

    Estructura de Computadors Sessi 5: Memria cache

    Loptimitzaci que volem aplicar est basada en aprofitar la localitat temporal de les refern-

    cies al vector V2. Fixat que aquest vector es llegeix tot sencer, una vegada per cada fila que

    tractem de la matriu M. El que pretenem s que els accessos al vector corresponguin nica-

    ment a aquells elements que caben en un bloc de la cache que, en el cas que considerem, sn 4.

    Aix, en lloc de multiplicar tota una fila de la matriu M per tot el vector V2 volem fer el tracta-

    ment de 4 en 4 elements1: s a dir, que dividirem la matriu en blocs de 4 columnes i farem

    primer totes les operacions involucrades amb els elements del primer bloc (iterant totes les

    seves files) abans de passar al bloc segent. Completa el segent exercici abans de continuar:

    1. Aquesta optimitzaci rep el nom de "loop blocking" o "tiling", que consisteix en transformar un bucle en dos bucles de forma que lespai diteracions de loriginal (bucle j) passa a tenir menys iteracions (de 16 passa a 4) per aprofitar la localitat temporal de les estructures que shi accedeixen (en aquest cas, la localitat temporal del vector V2)

    Exercici 5.13: El codi que hi ha a continuaci correspon a una versi optimitzada del

    programa de la figura 5.4, on shi ha aplicat loptimitzaci anomenada "tiling". Lndex k

    itera els 4 blocs de la matriu (amb 4 columnes per bloc). Completa les caselles buides amb

    les sentncies dalt nivell que contenen els accessos a les estructures de dades.

    int V1[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};int M[16][16], V2[16];

    main(){

    int i,j,k,tmp;

    for (k=0; k

  • Sessi 5: Memria cache Estructura de Computadors

    - 74 -

    Completa el segent exercici abans de continuar:

    Escriu el programa de lexercici anterior en un fitxer nou, i anomenal s5d2.s. Verifica amb el

    simulador que s correcte, comprovant que el resultat que sobt al vector V1 coincideix amb

    lobtingut al programa original del fitxer s5d.s.

    Determina amb el simulador la taxa dencerts que sobt executant el programa optimitzat:

    Quina s la diferncia entre la millor taxa dencerts daquesta versi i la de la versi no opti-

    mitzada?

    Capacitatde la cache

    Correspondnciadirecta

    Associativade grau 2

    Associativade grau 4

    Associativade grau 8

    CompletamentAssociativa

    8 blocs

    16 blocs

    32 blocs

    64 blocs

    128 blocs

    Exercici 5.14: Tradueix a assemblador MIPS el programa de lexercici 5.13.

    Portada-Quadern-de-LaboratoriQuadern-de-laboratori-sessio5-sp