You are on page 1of 16

Arquitectura de las Computadoras

Laboratorio N 3
Estudio de memorias cache
Ing. Walter Lozano Ing. Alejandro Rodrguez Costello

Objetivos
El presente laboratorio pretende ilustrar el funcionamiento de las memorias cach a travs del uso del simulador Dinero III1 y su interface grfica Xcache32. El usuario puede configurar todas las caractersticas del sistema mediante ventanas interactivas. El simulador es trace-driven, la entrada es un archivo de trazas de memoria. Cuando el procesador accede a memoria, coloca una determinada informacin en su bus de direcciones. Esta informacin puede ser recogida por software o hardware y almacenada en un archivo. Por tanto, los archivos de trazas no son ms que archivos cuyos registros poseen informacin referente a la direccin de memoria accedida por el procesador, al tipo de acceso del que se trata (lectura o escritura) y el tipo de informacin al que se est accediendo (datos o instrucciones). Esto es lo habitual en los estudios de prestaciones de sistemas de memoria. No interesa que la entrada de datos sea cdigo mquina, que necesariamente es dependiente del procesador, ni cdigo de alto nivel, donde es difcil aislar los accesos al sistema de memoria. Por el contrario, un fichero de trazas de memoria slo incluye la informacin relevante desde el punto de vista del sistema de memoria.

El simulador dinero y Xcache32


El punto de partida de la simulacin, como mencionamos, lo constituye un fichero que contiene la traza de la ejecucin de un programa. Esta traza, nos muestra las referencias a memoria que el programa efecta durante su ejecucin. El fichero de traza para el programa Dinero se compone de lneas de texto que constituyen referencias a memoria. Estas lneas constan de dos nmeros que indican, respectivamente, el tipo de referencia y la direccin de memoria a la cual se hace referencia. Los ficheros de traza se guardan con la extensin .din. Existen cinco tipos de referencias a memoria. Cada uno de ellos se identifica por un valor segn se indica la tabla 1, donde los ltimos 2 tipos de referencia son ignorados por Xcache32.

Hay versiones ms actualizadas que no sern usadas actualmente por la ctedra.

Tipo de referencia
Lectura de datos Escritura de datos Busqueda de instruccin (fetch) Escape (acceso desconocido) Vaciado (flush) de cache

Identificador
0 1 2 3 4

Tabla 1: Tipos de referencias a memoria 2 0 2 0 2 0 00000000 00000000 00000004 00000040 0000000c 00000080

Ejemplo de archivo de traza donde la primer columna indica el tipo de operacin y la segunda es la direccin del dato en cuestin. Las direcciones son de 32 bits en formato hexadecimal. El simulador slo lee las 2 primeras columnas, el resto ser ignorado, de modo que se pueden agregar comentarios2.

Pasos para realizar la simulacin: 1. Cargar archivo de trazas y configurar la cache. En la opcin SIMULATION, elegir RUN DINERO. Aqu se elige el archivo de entrada con las trazas, (de extensin DIN) y el archivo de salida, que ser de extensin OUT. Igualmente se seleccionan los parmetros de la cach, que se explican ms adelante. 2. Ejecutar la simulacin. Existen dos opciones: ver el archivo de resultados (FILE - OPEN DINERO OUTPUT FILE) ejecutar paso a paso la simulacin, que es la que nos interesa.

Configuracin de la cache
La configuracin de la cache se puede apreciar en la ventana mostrada en la figura 1 cuyos parmetros pasaremos a explicar a continuacin: Files (archivos) Input: (Entrada) Ingresamos el archivo de trazas Output: (salida) Nombre del archivo donde se guardaran los resultados General Options (opciones generales) Unified cache: (cache unificada) Seleccionamos si queremos una cache en donde se guarden datos e instrucciones.

el formato es muy similar al simulador SYSMEC98 usado anteriormente por la ctedra

Associativity: Nos permite elegir la funcin de correspondencia o tipo de asociacin entre memoria principal y memoria cache. Los distintos tipos de correspondencia, vistos individualmente, DINERO las considera como casos particulares del tipo asociativa por conjuntos: Mapeado directo: associativity = 1 Completamente asociativa: associativity = (tamao cache)/(tamao de bloque)

Figura 1: Opciones de la lnea de commandos de Dinero

Sizes (tamaos) data cache: Tamao de la cache de datos instr. cache: Tamao de la cache de instrucciones, deshabilitado si se eligi unified cache. block size: Tamao de bloque, como usaremos words de 4bytes, deber ser mltiplo de 4. sub-block size (tamao de sub-bloque3): No lo usaremos.

Los sub bloques consisten en una cantidad de palabras de tamao inferior al bloque, que puede ser usada como unidad de lectura/escritura en la cache. Usado en antiguos chips de cache.

Write policy (poltica de escritura)4 write back: Post escritura write through: Escritura directa Write Allocation Policy (poltica de carga en escritura) write allocate: Carga en escritura non write allocate: Sin carga en escritura Replacement policy (poltica de reemplazo) LRU Least Recently Used menos recientemente utilizada FIFO First In First Out random: Aleatoria Reference counts: (conteo de referencias) skip: nmero de referencias (lneas del archivo de trazas) a saltearse, contando desde el inicio flush: nmero de referencias entre descargas de cach. (0: nunca) max: nmero mximo de referencias a ejecutar a partir de aquellas que hayan sido salteadas (opcin skip) fetch policy (politica de carga5) demand fetch: (carga bajo demanda): Se cargan bloques a memoria cache solo si son pedidos. always prefetch: (siempre precarga) cada vez que se hace una carga se cargan tambien bloques adicionales. miss prefetch: precarga slo en caso de fallo (miss). tagged prefetch: precarga con etiqueta -No lo usaremos, se explica ms adelanteLas siguientes opciones no se usarn, look-foward prefet, subblock prefetch, y son slo aplicables si se trabaja con subbloques. prefetch distance (longitud de precarga): Indica el nmero de subbloques que se precargarn, en caso de que est habilitado. Si no lo est, representa la cantidad de bloques. Output style (sin uso) terse: Escribe los resultados al final de la simulacin. Verbose: Escribe los resultados luego del medio milln de referencias y al final de la simulacin debug (sin uso) -opcin para depuracin del simulador- no se usar.

4 5

No se cuenta con la opcin de usar buffer en ningn caso. Se entiende por carga el hecho de copiar en memoria cache lo ledo de memoria principal

Configuracin del acceso a bloques de memoria


La configuracin del acceso a bloques de memoria se muestra en la figura 2 y no se usar en la realizacin de este laboratorio, por lo que se comentar brevemente lo ms importante. Aquellos alumnos con inters particular en el acceso a memorias dinmicas pueden ahondar opcionalmente con alguna actividad de ensayo propuesta y documentada optativamente.

Figura 2: Configuracin del acceso a bloques de memoria

memory bus width in words Numero de words que son transferidos simultneamente a la cach. Si resulta ser mayor que el tamao de word, se leer la cantidad suficiente para llenar un (sub-) bloque de cach. Usado tanto para datos como para instrucciones. Debe ser un mltiplo del tamao de word. Si se defini subbloques, el ancho no puede ser mayor a este. Si no hay subbloques, el ancho no puede ser mayor al tamao de bloque read access time in cycles first address setup: RAS + RAS to CAS + CAS first data transfer: CAS delay subsequent address setup: only the CAS time involved with the same RAS info. Depende del llamada command rate de la memoria, suele variar entre 1 y 2 se suele llamar Tx subsequente data transfer: Depende del tipo de DDR. 3 words por ciclo para DDR3

Interpretacin de la interfaz de resultados

Figura 3: Vista general del conjunto de ventanas de resultados.

Donde la configuracin para este ejemplo es:

Figura 4: Parte de la ventana de configuracin del ejemplo de la figura 3.

Podemos resumir la configuracin:


Divisin N de vias (asociatividad) N de conjuntos Tamao (bytes) Separada 3 Datos: 4 Datos: 240 Instrucc: 3 Instrucc: 180

El archivo de trazas es ex1.din que viene incluido con el programa Xcache32 y est en el directorio de instalacin del mismo.

Botones de men

Figura 5: Barra de men

Ventana de trazas
Titulada DINERO-Input, muestra la lnea del archivo de trazas que se est ejecutando, resaltando en rojo la ltima lnea ejecutada. line: el n de lnea del archivo acc.: tipo de instruccin. Fetch: Lectura de instruccin Read: Lectura de un dato address: Direccin de memoria principal accedida.

Color window
Invalid: El bloque fu cargado y descargado de la cache. Cache hit: Se hall la direccion de memoria requerida en la cache. Fallos de cache: (ver clasificacion de fallos mas adelante) Capacity miss: Fallo de capacidad Conflict miss: Fallo de conflicto Compulsory miss: Fallo forzoso Block set dirty: Se escribi en la cache, pero an no en MP, Por tanto, hay un problema de consistencia (contenido de la cach difiere con el de la memoria principal). Block written: Bloque escrito

Timing window
Esta ventana brinda estadsticas del acceso a memoria, a saber: Number of read accesses: numero de accesos a memoria para lectura number of words read: nmero de words leidos Cycles used for write accesses: ciclos usados para accesos de escritura: Total accesses: nmero total de accesos 7

Total words written: numero total de palabras escritas Total cycles for memory accesses6

data/instruction memory status


Estas ventanas muestran el estado de la memoria. Cada cuadrado corresponde a un word en memoria. Al principio de cada lnea, se muestra la direccin del primer word de la lnea.

Los bloques actualmente cargados en memoria figuran en verde, y aquellos que fueran cargados y descargados, aparecen en rojo. El rango de memorias a mostrar se puede especificar con la opcin Address range del men contextual, que ofrece 2 opciones, una es adjusto to stream; el autoajuste de acuerdo a los datos del archivo de trazas, y la otra opcin es Define... que muestra el cuadro de dialogo de la derecha. Esta ltima es la opcin ms recomendable, de forma que podamos especificar el rango en unidad de bloques, cosa que puede no suceder con el autoajuste. start address: direccin de inicio en hexadecimal number of words: nmero de words que se mostraran7 en hexadecimal Recomendacin:

data/instruction cache

Permite visualizar el estado de la cache. El resultado de la ltima operacin figura arriba a la izquierda, que en el caso de los datos, corresponde a un bloque marcado como sucio. La ltima operacin realizada figura a la derecha del anterior dato, en este caso una escritura. El bloque de memoria cach objeto de la ltima operacin es

El nmero de ciclos (que no usaremos en el laboratorio) se puede configurar en: Options > Memory configuration, de la barra de men que mostrar la ventana memory block accesss settings, comentada anteriormente A fines de mayor claridad, es recomendable ajustar el ancho de estas ventanas de forma que cada lnea tenga el tamao de un bloque, es decir que por lnea haya el numero de words (cuadraditos) que corresponde al tamao de un bloque, que es la unidad de lectura.
7

marcado con el nmero correspondiente a la lnea del archivo de trazas, en este caso, la lnea es la nmero 12. Informacin adicional aparece inmediatamente a la izquierda del bloque anteriormente referido. En la figura aparece de color rojo, indicando que dicho bloque de memoria principal fue cargado y descargado.

Fundamentos de cache
En esta seccin repetiremos conceptos abordados en clase, aplicados a las distintas configuraciones posibles de la cach, incluyendo posibilidades no incluidas en el simulador, haciendo la aclaracin pertinente. El funcionamiento de las mismas se basa en dos principios de localidad, que es una propiedad de los programas: Localidad espacial: dado un acceso a una particular zona de memoria, existe una alta probabilidad de que sitios prximos sean tambien referenciados durante la ejecucin del programa. Debido a la secuencialidad, si se hizo referencia al sitio S, probablemente el sitio S+1 sea referenciado pronto. A la misma se la puede considerar un subtipo de localidad espacial. Localidad temporal: complementario al anterior, establece que un sitio accedido recientemente probablemente vuelva a serlo en corto tiempo. Las caches pueden tener distintas caractersticas que se resumen en el siguiente cuadro que sern explicadas:
A) Nivel B) Divisin

L1

L2

L3

Unificada Separada C) Funcion de correspondencia Directa Asociativa Asociativa por conjuntos D) Algoritmos de reemplazo Aleatoria LRU LFU FIFO E.1) Politica Directa Post-escritura NOTA: ambas pueden tener buffer E) Escritura E.2) Carga bajo fallo Write allocate Non write allocate F) Precarga Sin Siempre Bajo fallo Con etiqueta
Tabla 2: Caractersticas de caches

En la tabla 2 se muestra una vista global de la mayora de opciones de configuracin de una cache y en la tabla 3 veremos un ejemplo de una arquitectura de Intel.
L1 Separada 32KB cada una Nivel L2 256KB 64bytes L3 Unificada 4 -16MB compartida 16 vas ?? 0

Divisin Tamao Tamao de bloque Correspondencia (Asociativa por conjunto) Reemplazo Escritura Prefetchers8

4 vas (instrucciones) 8 vas 8 vas (datos) Variante LRU Post escritura, write allocate 2 2

Tabla 3: Ejemplo de arquitectura Intel Nehalem (i3, i5, i7, XEON) de 2 a 12 ncleos

http://software.intel.com/sites/products/collateral/hpc/vtune/performance_analysis_guide.pdf

A) Niveles de cache El simulador Dinero III solo soporta un nivel de cache. Debido al rpido incremento de la frecuencia de los procesadores y la creciente9 demora en el acceso a memoria principal a medida que la misma aumenta su tamao, surge la necesidad de contar con ms de un nivel de cache. La cache de nivel L1 (level 1), es la cach interna parte del ncleo del microprocesador y la ms rpida, la L2 es tambin parte del microprocesador, pero externo al ncleo y la L3 es parte del encapsulado del microprocesador y de las 3 la ms alejada del ncleo10. En la figura se observa una vista microscpica de una pastilla de procesador IBM Power donde puede apreciarse visualmente los niveles de cache que ocupan la mayora de la superficie de la pastilla.

Figura 3: Microprocesador IBM Power 7, L2: 256Kb, L3: 32Mb

B) Divisin Se puede hacer una cache exclusiva tanto para datos como para instrucciones (cache separada), que operan en paralelo, hacer que ambos usen la misma memoria (cache unificada). C) Funcin de correspondencia El detalle sobre las funciones de correspondencia sobrepasa el objetivo de este repaso11 de forma que se har una breve mencin a las mismas. Directa: a cada direccin de memoria principal le corresponde un sitio nico en la cache. Dicho de otra forma, dada una direccin de memoria principal, sabemos en qu sitio de la cach debe estar, de forma que conocemos la lnea ya sea para cargarla a cache o para buscarla en la misma. Ventajas: Sencillez, economa.

Es importante notar que a medida que avanza el diseo y las tcnicas de fabricacin, las memorias dinmicas no lo hacen en la misma medida produciendo un gap importante.
10 11

Esta informacin es aplicable a microprocesadores recientes. Ver el libro de ctedra

10

Desventajas: En caso de uso de 2 bloques que tengan asignada la misma memoria en la cache, se producirn fallos continuos mientras se accedan alternativamente. Asociativa: Permite cargar un bloque de memoria principal en cualquier posicin en cache. Ventaja: Es la forma ms flexible de carga (muy usada en el nivel L1 o caches extremadamente pequeas) Desventaja: Bsqueda ms compleja (puede estar en cualquier sitio), mucho ms costoso (enormes comparadores). Asociativa por conjuntos: Es una combinacin de las anteriores. Se divide la cache en conjuntos (sets), cada uno con un determinado nmero de bloques que constituyen una va (way). Dada una direccin en memoria principal, se le asigna un conjunto de la cache en forma anloga a la asociacin directa y luego se asigna de forma asociativa el bloque a alguna va dentro del conjunto donde finalmente se cargar. D) Algoritmos de reemplazo Responden a la pregunta de cmo hacer sitio en la cache cuando esta est llena. Aleatoria: Se descarta cualquier lnea. Facil implementacin, pero puede descartarse un dato muy usado LRU: El bloque que se us menos recientemente, usa el principio de localidad temporal. Requiere registrar el ltimo momento de acceso. LFU: (no soportado por DINERO III) el bloque menos frecuentemente usado, hay que recalcularlo a cada operacin de cache. Usualmente: frecuencia = (n de accesos)/(tiempo en cache) FIFO: Se saca al primero que se carg. E) Escritura E.1) Poltica de escritura Al escribir un word que ya est en cach (acierto), se puede hacer de 2 formas: Directa (write trought): Se escribe la cach y la MP simultneamente (en paralelo). Como la MP es mucho ms lenta, se pierde tiempo. Post escritura (write back): Se escribe solo en el cache, y en MP cuando dicha palabra va a ser reemplazada en cache. Mientras tanto, es marcado como dirty (sucio). El uso de buffer no es soportado por Dinero III pero conlleva algunas ventajas: Directa: Se agrega un buffer donde se guarda el dato a guardarse en MP, mientras, el microprocesador contina trabajando. El buffer se vaciar cuando finalmente sea escrito a MP. Ventaja: Evita la espera inmediata de escritura a MP. Post escritura: En caso de falla de cache, normalmente se debe escribir el bloque modificado a MP antes de cargar el bloque pedido. Para acelerar el

11

proceso, el buffer se usa para guardar el bloque modificado, y mas tarde se escribir a MP. Ventaja: Si se escribe varias veces el mismo bloque, (sin ser reemplazado en cache) slo ser necesario un acceso a MP. E.2) Carga bajo fallo Si el word a escribir no est en cach, se puede proceder de dos formas: Write allocate: Se carga el word (en realidad, el bloque) a cache y luego se escribe. Non write allocate: Se escribe directamente en MP, y no se carga al cache. F) Prefetching (precarga) Tcnica que trata de anticiparse a los requerimientos del procesador cargando bloques al cache antes de ser requeridas. Las polticas de prediccin para precarga se basan tambin en el principio de localidad tanto espacial como temporal. Las ms usadas son: Siempre (always fall through prefetch): Se realiza siempre que se accede a memoria principal, pre-cargando un numero preestablecido de bloques, intentando tomar ventaja de la localidad espacial. Bajo fallo (prefetch on miss): Variante de la anterior, consiste en 2 posibilidades: Precarga de un nmero extra de bloques en caso de fallo (no soportado por Dinero III). Precarga slo en caso de falla (no existe precarga en otro caso). Con etiqueta (tagged prefetch): Cada bloque tiene una etiqueta de un bit, que indica: 0: No cargado cargado y no usado. 1: Fue cargado y usado. La precarga se realiza siempre que la etiqueta haya cambiado a 1, evitndose la precarga de bloques anteriormente cargados y descargados sin haber sido usados. Basado en hilos (threaded prefetch): (No soportado por Dinero III), se basa en una lista de de direcciones que probablemente tambin sern usadas. Se basa en comportamiento ya observado (emprico). En el ejemplo de la tabla 3 vemos que el microprocesador tiene 2 unidades de hardware en cada cache L1 y L2 dedicadas a la prediccin, para hacer precarga. Clasificacin de fallos Los fallos de cach se clasifican en: Forzosos: Los producidos al acceder por primera vez a un bloque. De capacidad: Fallos por falta de sitio, no hay mas lugar en la cache para los datos usados concurrentemente.

12

De conflicto: Debido a que se asigna al mismo sitio de cache un bloque que se carga y el que se saca se necesita.

Descripcin
1. Utilizando la traduccin de la rutina en C bucle1.c al cdigo assembler de MIPS provista en el archivo bucle1.s, realice el trazado manualmente o mediante el simulador SPIM y recoja los resultados en un archivo de trazas bucle1.prg con el formato adecuado para simular en Dinero III suponiendo que MAX=10. En l se incluyen tanto los accesos a cdigos como a datos. Ntese que la longitud del archivo es mucho mayor que la del cdigo, pues en los archivos de trazas de memoria los bucles se desenrollan. Considere una cache de 2 Kb de tamao en total, inicialmente con lneas de 8 bytes. Para las alternativas indicadas a continuacin realice la ejecucin paso a paso, comprobando detalles como valor de etiqueta, nmeros de lneas, etc. Finalmente debe consignar en un resumen tabular el valor de miss-rate y un breve comentario sobre lo ms relevante observado en la simulacin. Por ejemplo, si hay algn conflicto digno de mencin, por qu determinada configuracin mejora o empeora la situacin de anteriores pruebas, por qu algn cambio de parmetros no parece afectar los resultados, etc. a) Caches separadas, mapeado directo.

b) Cache unificada, mapeado directo.

c) Cache unificada, asociativa por conjuntos (2 vias)

d) Cache unificada, totalmente asociativa

13

e) Repita lo anterior con tamao de lnea de 16 bytes e indique los cambios observados. En todos los casos anteriores la escritura es:

En el bucle anterior, todas las escrituras se realizan sobre datos previamente ledos, por lo que siempre hay aciertos en escritura. Para estudiar cmo funciona el cach en caso de fallo en escritura, necesitamos otra traza. En concreto, obtenga la nueva traza haciendo que el ncleo del bucle sea por ejemplo y[i]=x[i]+1, con x[i] almacenado a partir de 0xDA100000 e y[i] almacenado a partir de 0xDA200000. Observe los resultados en las siguientes situaciones (tamao de lnea 8 bytes): f) Cachs separadas, mapeado directo, cach de datos CB-WA12. g) Cach unificada, asociativa por conjuntos (2 vas), CB-WA. Pruebe tanto el algoritmo LRU como el aleatorio. Si observa algn cambio interesante, indquelo con un comentario. h) Cach unificada, totalmente asociativa, CB-WA. 2. Usando el bucle bucle2.c estudiaremos los accesos a datos, suponiendo siempre cachs separadas. El bucle presenta las siguientes diferencias: El acceso al array no es elemento a elemento, sino que hay un parmetro STEP que establece el salto entre elementos accedidos. Los accesos al array son slo de lectura. El tamao del array, MAX, puede tomar el valor que ms convenga. Considere un cache de datos de 1Kb con lneas de 32 bytes, directamente mapeado. Se pide: a) Genere una traza con zancada tal que MR131 (el peor caso, fallos continuos en cache). b) Genere una traza con zancada tal que MR0.5. c) Genere una traza con zancada tal que MR0.25. En todos los casos debe comprobar que el MR medido por el simulador coincide con el deseado. 3. Suponga que se desean comparar dos alternativas: Cache A: Cachs separadas, asociativa por conjuntos, 8 conjuntos, 2 vas por conjunto, lneas/vas de 64 bytes, CB-WA. Cache B: Cach unificada, mapeado directo, 32 lneas de 64bytes, CB-WA.

12 13

copy back (en Dinero III se llama write back) y write allocate miss rate

14

a) Escribir un fichero de traza (cdigo y datos) que haga la mquina con cache A lo ms rpida posible comparada con la mquina con cache B. b) Escribir un fichero de traza que haga la mquina con cache B lo ms rpida posible comparada con la mquina con cache A. En ambos casos14, debe tratarse de ficheros breves y debe aclarar con comentarios a qu correspondera cada acceso del fichero de traza (tipo de instruccin, tipo de dato). 4. De qu forma son afectados los fallos de cache segn su clasificacin en los siguientes casos? a) Se incrementa el tamao de cache. b) Se incrementa el tamao de bloque c) Se incrementa la asociatividad 5. Cmo se espera que varen los fallos incrementando el tamao de bloque? 6. Al usar cachs separadas para datos e instrucciones se incrementa la tasa de fallos Qu ventaja tiene entonces el uso de cachs separadas? 7. Al comenzar la ejecucin de un programa, qu tipo de fallo se produce? Se pueden mitigar los fallos con alguna configuracin en particular? Sin el uso de alguna de las posibilidades de configuracin listadas en el cuadro 2.1 de que otra forma? 8. Qu algoritmo de reemplazo se usa en la cach de asociacin directa? 9. Qu tipo de cach segn funcin de correspondencia es ms proclive a presentar fallos de conflicto? Para los siguientes problemas, sean Z Y matrices de 16*16, enteros, sin signo y menores a 4 cifras, (las direcciones de los datos estn dados en el archivo de trazas adjunto), y la configuracin de la cach para ambos es: tamao de 12 words, tamao de bloque de 4 words y para el resto usar inicialmente la configuracin por defecto. 10. Calcular X=Y*Z. A continuacin se muestra parte del cdigo en C para el clculo de X. su equivalente en assembler MIPS es parte del archivo adjunto.
for( i=0; i<16; i++ ) for( j=0; j<16, j++ ) for( k=0; k<16, k++ ) X(i,j) += Y(i,k) * Z(k,j)

Se pide: a) Maximizar la tasa de aciertos y fallos cambiando el orden en memoria de los datos de las matrices (variamos la traza) para la misma configuracin de cach. Explicar en qu consisti el cambio realizado. Variar en forma acorde el anterior cdigo en C. b) Para las dos trazas anteriores, determinar las mejores configuraciones de cach. Explicar porqu resultan ser las mejores configuraciones.

14

Las cachs A y B son equiparables en tamao

15

c) Supuesto que los datos de las matrices estuviesen distribuidos aleatoriamente en la memoria, qu configuracin de cach es la ms conveniente? d) Qu estructura de datos vista en java nos aproximara mas a la anterior situacin?, Porqu? 11. Calcular X=Y+Z. a) Con la misma configuracin de cach inicialmente usada, cul es el porcentaje de fallo?, Cul es el principal tipo de fallo que ocurre? b) Realizando un solo cambio en la configuracin, lograr la mayor mejora posible en la tasa de aciertos. Indicar la misma. c) Usando la configuracin obtenida en el tem b realice un cambio adicional para lograr la mayor mejora posible en la tasa de aciertos. Indicar la misma. d) Usando la configuracin resultado del item b) sin cambiar NINGUN parmetro de los mostrados en la tabla 2, mejorar la performance de la cach. 12. Elabore conclusiones sobre todo lo experimentado y realice cualquier crtica de interes que vea conveniente para el mejor entendimiento de los temas abordados y su posible solucin a implementar.

16