DISCA ARQUITECTURA DE COMPUTADORES PRÁCTICA 10 – 4ª parte: “Análisis de Rendimiento de la Memoria Caché” Arquitectura de Computadores – Práctica 10 – 4ª parte. Rendimiento de la Memoria Caché 1 DISCA • ASPECTOS TRATADOS: Memoria caché y rendimiento de la memoria dependiendo de las políticas de lectura y de escritura configuradas. • MATERIAL NECESARIO: Ordenador con acceso a internet. • CONCEPTOS NECESARIOS: Memoria caché y rendimiento de memoria. • DURACIÓN ESTIMADA: 60’ • DESCRIPCIÓN: A través de una página web se accederá a un analizador del rendimiento de la memoria caché a través del cual se podrán evaluar los diferentes rendimientos dependiendo de las políticas de lectura y escritura configuradas como parámetros por el usuario. Arquitectura de Computadores – Práctica 10 – 4ª parte. Rendimiento de la Memoria Caché 2 DISCA • PASOS: 1) Abre el navegador de internet y conéctate a la página web http://www.ecs.umass.edu/ece/koren/architecture/. Si necesitas traducir algunas de las palabras del inglés puedes utilizar la web http://wordreference.com/. El aspecto de la página es el que sigue: 2) Pulsando sobre la opción de Cache Demonstrator accede al menú del simulador de memoria caché: Arquitectura de Computadores – Práctica 10 – 4ª parte. Rendimiento de la Memoria Caché 3 DISCA 3) Entra en la opción de Cache Time Analyzer que da acceso al analizador del rendimiento de la memoria caché. Este analizador nos permitirá evaluar los diferentes rendimientos de la memoria dependiendo de las políticas de lectura y escritura configuradas como parámetros por el usuario. El analizador tiene el siguiente aspecto: 4) Antes de empezar con las simulaciones, haz click sobre el botón de ayuda y lee atentamente las definiciones que aquí se presentan. Hay que tener en cuenta las siguientes consideraciones: Associativity: número de conjuntos de bloques en caché. ¡No confundir con el grado de asociatividad! % Writes: sobre un total de 100 referencias a memoria indica cuántas lo han sido para escritura. Dirty Data: sobre un total de 100 bloques de caché, representa cuántos han sido modificados y deberán ser escritos en memoria central antes de ser desalojados de la caché. Este campo no se utiliza cuando la política de escritura es write-through. Miss Penalty (cycles): indica el número de ciclos de reloj con los que se ‘penaliza’ un fallo de caché (la información accedida no se encuentra en caché). Hit time (cycles): indica el número de ciclos de reloj que transcurren cuando la información accedida sí se encuentra en caché. Arquitectura de Computadores – Práctica 10 – 4ª parte. Rendimiento de la Memoria Caché 4 DISCA Mem. Write (cycles): indica el tiempo de escritura en la memoria central medido en ciclos de reloj. Write policy: indica la política de escritura a seguir cuando el bloque a modificar se encuentra en caché. Las opciones a configurar son: − Write back: Actualización posterior (también llamada copy back). − Write through: Actualización directa. Por otra parte, también se nos permite combinar ambas políticas de escritura cuando el bloque a modificar se encuentra en caché con las políticas de escritura cuando se da un fallo al intentar realizar una operación de escritura en caché (write miss). Estas políticas de write miss son: − Allocate on miss: Cuando se da el fallo de escritura en caché, se carga desde la memoria central el bloque referenciado y se procede a escribir en él (aplicando la política de write back o de write through seleccionadas). − No write allocate: Cuando se da el fallo de escritura en caché, el bloque se modifica directamente en la memoria central, sin ser cargado en la caché. Lógicamente y en la práctica, resulta normal combinar una política de write back con la de allocate on miss, mientras que la técnica de write through se suele combinar con la política de no write allocate. 5) Simulación nº 1: write back – allocate on miss: Configura el sistema de memoria con los siguientes parámetros: − Tamaño de caché: 2 KB − Nº de conjuntos: 4 − Tamaño de bloque: 32 Bytes − Política de escritura: write back – allocate on miss − % writes: 22 − % dirty data: 10 − Miss penalty (cycles): 40 − Hit time (cycles): 1 − Memory write (cycles): 6 Ejecuta la opción Analyze. ¿Cuál es el tiempo medio de acceso a memoria? ¿en qué unidades viene medido? Con la configuración de caché dada, ¿cuál es la tasa de aciertos y de fallos? ¿Cuánto tarda el sistema en realizar una operación de lectura? ¿Cuánto tarda el sistema en realizar una operación de escritura? ¿Cuándo tarda más el sistema, en una operación de lectura o de escritura? ¿por qué? ¿Se utiliza el parámetro Memory write (cycles)? ¿por qué? Arquitectura de Computadores – Práctica 10 – 4ª parte. Rendimiento de la Memoria Caché 5 DISCA 6) Simulación nº 2: write through – no write allocate: Configura el sistema de memoria con los siguientes parámetros: − Tamaño de caché: 2 KB − Nº de conjuntos: 4 − Tamaño de bloque: 32 Bytes − Política de escritura: write through – no write allocate − % writes: 22 − % dirty data: 10 − Miss penalty (cycles): 40 − Hit time (cycles): 1 − Memory write (cycles): 6 Ejecuta la opción Analyze. ¿Cuál es el tiempo medio de acceso a memoria? ¿en qué unidades viene medido? Con la configuración de caché dada, ¿cuál es la tasa de aciertos y de fallos? ¿difieren estos resultados de los obtenidos en la simulación nº 1? ¿por qué? ¿Cuánto tarda el sistema en realizar una operación de lectura? ¿Cuánto tarda el sistema en realizar una operación de escritura? ¿Qué sucede ahora con el tiempo de escritura en caché si el dato a modificar se encuentra en ella? ¿por qué? ¿Se utiliza el parámetro Memory write (cycles)? ¿por qué? 7) ¿Qué sistema de los estudiados resulta más eficiente? ¿por qué? 8) Realiza nuevas simulaciones cambiando la configuración del sistema. Comprueba si los resultados obtenidos son los que esperabas. Arquitectura de Computadores – Práctica 10 – 4ª parte. Rendimiento de la Memoria Caché 6 DISCA ANEXO: Políticas de interacción entre la memoria caché y la memoria principal Reads dominate processor cache accesses. All instruction accesses are reads, and most instructions do not write to memory. The block can be read at the same time that the tag is read and compared, so the block read begins as soon as the block address is available. If the read is a miss, there is no benefit - but also no harm; just ignore the value read. The read policies are: Read Through - reading a block from main memory to CPU No Read Through - reading a block from main memory to cache and then from cache to CPU Such is not the case for writes. Modifying a block cannot begin until the tag is checked to see if the address is a hit. Also the processor specifies the size of the write, usually between 1 and 8 bytes; only that portion of the block can be changed. In contrast, reads can access more bytes than necessary without a problem. The write policies on write hit often distinguish cache designs: Write Through - the information is written to both the block in the cache and to the block in the lower-level memory. Advantage: - read miss never results in writes to main memory - easy to implement - main memory always has the most current copy of the data (consistent) Disadvantage: - write is slower - every write needs a main memory access - as a result uses more memory bandwidth Write back - the information is written only to the block in the cache. The modified cache block is written to main memory only when it is replaced. To reduce the frequency of writing back blocks on replacement, a dirty bit is commonly used. This status bit indicates whether the block is dirty (modified while in the cache) or clean (not modified). If it is clean the block is not written on a miss. Advantage: - writes occur at the speed of the cache memory - multiple writes within a block require only one write to main memory - as a result uses less memory bandwidth Disadvantage: - harder to implement - main memory is not always consistent with cache - reads that result in replacement may cause writes of dirty blocks to main memory There are two common options on a write miss: Write Allocate - the block is loaded on a write miss, followed by the write-hit action. No Write Allocate - the block is modified in the main memory and not loaded into the cache. Although either write-miss policy could be used with write through or write back, write-back caches generally use write allocate (hoping that subsequent writes to that block will be captured by the cache) and write-through caches often use no-write allocate (since subsequent writes to that block will still have to go to memory). Arquitectura de Computadores – Práctica 10 – 4ª parte. Rendimiento de la Memoria Caché 7 DISCA Table 1 shows all possible combinations of interaction policies with main memory on write, the combinations used in practice are in bold case. Write hit policy Write miss policy Write Through Write Allocate Write Through No Write Allocate Write Back Write Allocate Write Back No Write Allocate Table 1. Possible combinations of interaction policies with main memory on write. Write Through with Write Allocate: on hits it writes to cache and main memory on misses it updates the block in main memory and brings the block to the cache Bringing the block to cache on a miss does not make a lot of sense in this combination because the next hit to this block will generate a write to main memory anyway (according to Write Through policy) Write Through with No Write Allocate: on hits it writes to cache and main memory; on misses it updates the block in main memory not bringing that block to the cache; Subsequent writes to the block will update main memory because Write Through policy is employed. So, some time is saved not bringing the block in the cache on a miss because it appears useless anyway. Write Back with Write Allocate: on hits it writes to cache setting “dirty” bit for the block, main memory is not updated; on misses it updates the block in main memory and brings the block to the cache; Subsequent writes to the same block, if the block originally caused a miss, will hit in the cache next time, setting dirty bit for the block. That will eliminate extra memory accesses and result in very efficient execution compared with Write Through with Write Allocate combination. Write Back with No Write Allocate: on hits it writes to cache setting “dirty” bit for the block, main memory is not updated; on misses it updates the block in main memory not bringing that block to the cache; Subsequent writes to the same block, if the block originally caused a miss, will generate misses all the way and result in very inefficient execution. En la dirección: http://www.cs.iastate.edu/~prabhu/Tutorial/CACHE/interac.html puedes encontrar un pequeño simulador de políticas de escritura en caso de acierto y fallo de la caché, que ilustra gráficamente todo lo comentado en este anexo. Arquitectura de Computadores – Práctica 10 – 4ª parte. Rendimiento de la Memoria Caché 8