ArqComp p10-4

Anuncio
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
Descargar