Memoria Cache v113

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 58

Memoria Caché

Universidad Nacional de La Matanza


Dpto. Ingeniería e Investigaciones Tecnológicas
Arquitectura de Computadoras

Lectura recomendada: págs 254-269 Murdocca


Autor: Ing. Jaír E. Hnatiuk
Ver. 1.3 (2021)
¿Por qué se necesita una memoria caché?

Tomando como referencia 1980,


se presenta en el gráfico la brecha
de performance, medida como la
diferencia de tiempo entre la
solicitud de un dato en memoria
(para un solo procesador o
núcleo) y la latencia de un acceso
a DRAM. Note que el eje vertical
está en escala logarítmica.

Hennessy and Patterson Ed.5 Image Copyright © 2011, Elsevier Inc. All rights Reserved

Memoria caché - Arquitectura de Computadoras - Ing. Jaír Hnatiuk - Unlam (2021) 2


¿Por qué se necesita una memoria caché?

Factor clave: tiempo de acceso a memoria principal. La CPU lee instrucciones y


operandos desde MP, pero la diferencia de velocidad entre ambos es…

Tiempo de acceso Equivalente unidad humana


1 ciclo de CPU 0,15-0,3
0,3 ns ns 1 segundos
1 segundos
Caché de nivel
Memoria 1
principal 0,9 nsns
50-150 3 segundos
3-9 minutos
Caché
Unidadde nivel 2
SSD 2,8 nsµs
50-150 2-5 días 9 segundos
Caché de nivel
Disco rígido 3
magnético 12, 9 ns
1-10ms 43 segundos
1-12 meses
Memoria principal 30-200 ns 3-9 minutos
Unidad SSD 50-150 µs 2-5 días
Disco rígido magnético 5-10ms 1-12 meses

¿Cómo logra la memoria caché acortar las diferencias?

Memoria caché - Arquitectura de Computadoras - Ing. Jaír Hnatiuk - Unlam (2021) 3


Memoria caché Alta velocidad,
costo, ancho de
• La memoria caché es una memoria relativamente banda; baja
pequeña pero muy rápida. latencia y poco
• Su propósito es acelerar las operaciones CPU <-> tamaño
Memoria.
• Lógicamente se ubica entre CPU y la memoria principal.
• Físicamente puede estar en el mismo chip de la CPU o en
un módulo separado (y ambos si es multinivel).
• El ancho de banda es muy superior cuando se
encuentra en el mismo CI (on-chip)

La CPU sigue accediendo solo a la


memoria principal. La memoria
caché opera en forma transparente
a las operaciones de la CPU.

Memoria caché - Arquitectura de Computadoras - Ing. Jaír Hnatiuk - Unlam


(2021) 4
Cómo funciona la memoria caché
La memoria caché contiene una copia de una porción de memoria principal.
1. CPU solicita acceso a una dirección de memoria
2. El administrador de la memoria caché (MMU) verifica si la dirección existe en la caché
3. Si está presente (HIT, éxito) se lee desde caché
4. Si no está presente en la caché (MISS, falla), se lee el bloque correspondiente de MP (prefetch) y se actualiza la MC

Transferencia por Transferencia por


palabras bloques

Memoria
Unificada

CPU Cache
principal
Rápido Lento

Palabras Bloques Bloques Bloques


Multinivel

Cache Cache Cache Memoria


CPU
nivel 1 nivel 2 nivel 3 principal
Rapidísimo Rápido Menos rápido Lento
Memoria caché - Arquitectura de Computadoras - Ing. Jaír Hnatiuk - Unlam (2021) 5
Patrones comunes y predecibles en el acceso a memoria
Si volcáramos los accesos a
memoria a un gráfico…
Direcciones de
Bucle ¿cómo se vería?
memoria

Búsquedas de Principio de localidad temporal:


instrucciones Variables locales o cuando se accede a una instrucción
parámetros
o dato es altamente probable que se
la vuelva a acceder en el futuro
Accesos a pila cercano.
(stack) Principio de localidad espacial:
cuando se accede a una instrucción
o dato es altamente probable que
Variable las instrucciones o datos cercanos
Acceso a datos sean accedidos en el futuro cercano.
escalar
(vectores, Tiempo
escalares)

El 90% del tiempo de ejecución se consume el 10% del código

Memoria caché - Arquitectura de Computadoras - Ing. Jaír Hnatiuk - Unlam


(2021) 6
Principio de localidad temporal y espacial

Localidad espacial
Direcciones de memoria

Localidad temporal

¿Encuentra los patrones


en el acceso a memoria?

Localidad temporal
y espacial

Cada punto representa un


acceso a memoria.

Tiempo
Fuente: Program restructuring for virtual memory, DJ Hatfield, J Gerald - IBM Systems Journal, 1971.

Memoria caché - Arquitectura de Computadoras - Ing. Jaír Hnatiuk - Unlam 7


(2021)
Cómo funciona la memoria caché
Supongamos una MP de bus
…y supongamos una MC con líneas de 2 bytes (2
de datos de 8 bits y bus de
palabras)… ¿cómo se formarían las etiquetas?
direcciones de 16 bits.

Dirección Contenido
… … Etiqueta Offset 0 Offset 1
Línea n 101000000000000
10100000 000000 2B 3C
A000
10100000 00000000 2B
Línea n+1 10100000 0000001 4D 5E
A001
10100000 00000001 3C
A002
10100000 00000010 4D
A003
10100000 00000011 5E
1. Veamos las
… … direcciones en binario
La parte en común
entre los bits de la El último bit de la dirección
será el offset dentro de la línea Cada dirección se interpreta separándola en etiqueta / offset
dirección será la
Etiqueta: permite determinar si el contenido está en MC
etiqueta.
Offset: caso afirmativo, lo identifica dentro de la línea

Memoria caché - Arquitectura de Computadoras - Ing. Jaír


8
Hnatiuk - Unlam (2021)
Zoom en la memoria caché Ancho bus de direcciones

CPU Bus de direcciones


2. Si es un acierto, se usa la
parte restante de la dirección
como offset dentro de la línea
1. La parte alta de la
dirección se usa para buscar Etiquetas (DIR) Datos
Bus de datos

en la memoria de etiquetas

Comparador(es)

3. Se transfieren las palabras


Línea de MC: contenido de posiciones de datos MC <-> CPU.
Ancho bus de datos de memoria consecutivas cuyas Usualmente el mínimo
(tamaño de palabra de CPU) direcciones comienzan con <ETIQUETA> direccionable es un byte, y se
transfieren varios bytes en
simultáneo.

Memoria caché - Arquitectura de Computadoras - Ing. Jaír


9
Hnatiuk - Unlam (2021)
Zoom en una línea de memoria caché: más cerca de las dimensiones reales

Flags (bits) Aquí se almacena


Supongamos una línea de MC de 32 palabras de 32 bits cada una (128 bytes)
En cada offset se
asociados parte de una almacenan
a la línea Etiq. DIRECCIÓN Datos DATOS

Comparador

V D
Si las direcciones son de 32
bits, la etiqueta tendrá un
tamaño MENOR a 32.
La etiqueta será la parte “en
común” de las direcciones de Cada palabra de caché (en 32 de datos
las palabras de datos cada offset) hay bits
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
10
Hnatiuk - Unlam (2021)
Características de la memoria caché

Construcción: memoria estática de alta velocidad (SRAM)


Direccionamiento: por contenido (CAM: content addressable memory).
No existen direcciones de caché, sino que se almacena la dirección y el contenido.
Utiliza comparadores para verificar si una dirección de MP está presente en MC.
Política de carga y escritura: en qué momento se actualiza la memoria principal cuando se modifica
la caché. Cómo se realiza la lectura de MP para completar la MC.
Organización: Debe determinarse la existencia de una palabra en caché de forma extremadamente
rápida (se analizan a continuación tres formas).
Tamaño de la memoria y del bloque: impactan en la performance por lo que se busca un equilibrio
Costo: la memoria caché se encarece al aumentar de tamaño por su propia construcción y por los
comparadores que requiere para operar.
Señalización: cada porción de caché tendrá (como mínimo) dos indicadores:
• Dirty bit: o bit de suciedad. Indica si fue actualizada por CPU y por tanto debe actualizarse la MP.
• Valid bit: o bit de validez. Indica si el contenido de caché corresponde a información válida
recuperada desde MP.
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
11
Hnatiuk - Unlam (2021)
Asignación asociativa (fully asociative)

Cada bloque de memoria principal puede ubicarse en cualquier línea de caché.


La búsqueda de etiquetas se realiza en paralelo, ¡la palabra buscada puede estar en
cualquier línea de caché!

Cada bloque de MP (auto) puede utilizar cualquier ubicación en el estacionamiento.

¡Nadie tiene cochera asignada!


Memoria caché - Arquitectura de Computadoras - Ing. Jaír
12
Hnatiuk - Unlam (2021)
Asignación asociativa
Cualquier bloque de memoria principal puede ir a parar a cualquier línea de caché

Memoria Tamaño de la MC / tamaño de línea =


principal cantidad de líneas
Bloque 0
Bloque 1 Memoria Caché
Bloque 2 Línea 0
Bloque 3 Línea 1
Bloque 4 Línea 2
Línea MC Bloque de MP que alojará
Bloque 5 Línea 3
0 Cualquiera
Bloque 6
1 Cualquiera
Bloque 7 Cada línea tiene un
comparador y todos los 2 Cualquiera
Bloque …
comparadores actúan en 3 Cualquiera
Bloque N
simultáneao
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
13
Hnatiuk - Unlam (2021)
Asignación asociativa
Interpretación de cada dirección de memoria según la CPU la coloca en el bus.

S+W = tamaño de dirección de memoria (ancho bus de direcciones)

Especifica un bloque de MP o línea de MC Define la palabra dentro de la línea

Etiqueta (tag) Palabra (offset)


S = log2(cantidad de bloques)
W = log2(tamaño de línea)
S = log2 (tamaño MP/tamaño bloque)

Para determinar si una palabra se encuentra en MC se deben comparar todas las etiquetas
de cada línea de caché en paralelo. Se necesita una memoria especial que permita dicha
búsqueda (asociativa).
La comparación se efectúa solamente sobre el campo de etiqueta.
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
14
Hnatiuk - Unlam (2021)
Asignación asociativa
Ejemplo: Supongamos direcciones de 32 bits (total direccionable = 4GB), líneas de 32 bytes,
tamaño de caché 128 KB.
1. ¿En cuántas líneas se divide la memoria caché?
2. ¿Cuál es el tamaño de cada campo de la dirección?
Cantidad de líneas =
tamaño de MC / tamaño de línea = 128 KB / 32 = 217 / 25 = 212= 4096 líneas
Cantidad de bloques =
tamaño MP / tamaño de línea = 4 GB / 32 bytes = 232/25=227 = 128 M bloques

Longitud del campo etiqueta = Longitud del campo offset =


log2(cantidad de bloques) = log2(128 M) = log2(227) = 27 log2(tamaño de línea)=log2(32) = 5
Etiqueta (tag) Offset (palabra)
27 bits 5 bits

¿Debo multiplicar los 4G por 8? ¿O los 128K por 8? ¿Se multiplica por el tamaño de palabra?
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
15
Hnatiuk - Unlam (2021)
Asignación asociativa
¿Cómo funciona? Supongamos que la CPU solicita la dirección 0x7D771B38…

7D771B38 base 16 =
01111101011101110001101100111000 base 2

Etiqueta (tag) – 27 bits Palabra (offset) – 5 bits


011111010111011100011011001 11000

• La etiqueta de la dirección (011111010111011100011011001) se compara en forma simultánea


con las etiquetas de todas las líneas de caché. Si existe en MC una línea cuya etiqueta tenga el
mismo valor, es un ACIERTO. Por lo tanto se accede a la palabra ubicada en el offset 11000 (2410)
de la línea.
• Si ninguna de las etiquetas de MC tiene el valor buscado, es una FALLA.

En asignación asociativa se comparan todas las etiqueta en paralelo

Memoria caché - Arquitectura de Computadoras - Ing. Jaír


16
Hnatiuk - Unlam (2021)
Asignación asociativa
Bus de direcciones

¿Cómo funciona? La CPU solicita la dirección 0x7D771B38, y la palabra está en la memoria caché (HIT)

Etiqueta (tag) Offset (palabra) Ej: 32 palabras de 1 byte c/u


110002=2410
011111010111011100011011001 11000

Memoria Caché
Etiqueta Datos (32 bytes por línea)

Comparador 000001010111011100011011001
Comparador 000001010111011100011011001
Comparador 011111010111011100011011001
Comparador 000001010111011100011011001
Comparador …
Comparador
Se transfiere una palabra de datos de CPU
P/e en IA-32 serán 32 bits (4 bytes)
1. Se comparan simultáneamente todas las etiquetas de MC
2. Si existe una coincidencia se devuelve el contenido de
caché en el offset solicitado. Bus de datos
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
17
Hnatiuk - Unlam (2021)
Asignación asociativa
Bus de direcciones

¿Cómo funciona? La CPU solicita la dirección 0x7D771B38, y la palabra NO está en la memoria caché (MISS)

Etiqueta (tag) Offset (palabra)


011111010111011100011011001 11000

Memoria Caché
Etiqueta Datos (32 bytes c/u)

Comparador 000000010111011100011011001
Comparador 000001010111011100011011001
Comparador 000011010111011100011011001
Comparador 011000101101011100011011001
Comparador …
Comparador

1. Se comparan simultáneamente todas las etiquetas de MC


Bus de datos
2. Si no existe coincidencia se debe acceder a MP.

Memoria caché - Arquitectura de Computadoras - Ing. Jaír


18
Hnatiuk - Unlam (2021)
Organización: Mapeo directo
Cada dirección de memoria principal tiene un lugar específico donde alojarse en caché.
Pero dado que la MC es mucho más pequeña, ¡cada ubicación de MC tiene asignadas
muchas porciones de MP!
Dado que cada bloque de MP solo puede ubicarse en una línea específica de MC, cuando se
produzca una falla siempre se reemplazará el bloque que estaba ocupando el mismo lugar.
Cada bloque de MP (auto) tiene asignada una ubicación en el estacionamiento.

Memoria caché - Arquitectura de Computadoras - Ing. Jaír


23
Hnatiuk - Unlam (2021)
Mapeo directo
Una misma línea de caché puede alojar distintos bloques de MP. Pero cada bloque de MP tiene
asignado solamente una línea en la MC.
Memoria Tamaño de la MC / tamaño de línea =
principal cantidad de líneas
Bloque 0
Bloque 1 Memoria Caché
Bloque 2 Línea 0
Bloque 3 Línea 1
Bloque 4 Línea 2
Línea MC Bloque de MP que alojará
Bloque 5 Línea 3
0 0, 4, 8, ...
Bloque 6
1 1, 5, 9, …
Bloque 7 Cada línea tiene un
Bloque … comparador. Un decodificador 2 2, 6, 10, …
habilita la comparación para 3 3, 7, 11, …
Bloque N
una sola línea a la vez.
Cada línea de caché normalmente
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
contiene múltiples palabras. 24
Hnatiuk - Unlam (2021)
Mapeo directo
Interpretación de cada dirección de memoria según la CPU la coloca en el bus.
S+W = tamaño de dirección de memoria

Especifica un bloque de MP: S = log2(cantidad de bloques)

Identifica la línea de Define la palabra dentro


caché de la línea

Etiqueta (tag) Línea Palabra (offset)


S-Q
Q = log2(cantidad de líneas) W = log2(tamaño de línea)
log2 (MP/MC)

Para determinar si una palabra se encuentra en MC se ubica la línea de caché (siempre corresponderá una sola
para cada bloque de memoria) y luego se compara la etiqueta.
La comparación se efectúa solamente sobre el campo de etiqueta.

Memoria caché - Arquitectura de Computadoras - Ing. Jaír


25
Hnatiuk - Unlam (2021)
Mapeo directo
Ejemplo: Supongamos direcciones de 32 bits (total direccionable = 4GB), líneas de 64 bytes,
tamaño de caché 32 KB.
1. ¿En cuántas líneas se divide la memoria caché?
2. ¿Cuál es el tamaño de cada campo de la dirección?
Cantidad de líneas = tamaño de MC / tamaño de línea 32 KB / 64 = 512
Cantidad de bloques =
tamaño MP / tamaño de línea = 4 GB / 64 bytes = 232/26=226 = 64 M bloques
Longitud del campo etiqueta =
log2(cantidad de bloques) - log2(cantidad de líneas) = log2(226)- log2(512) = 26-9 = 17
Longitud del campo etiqueta (bis) = Longitud del campo offset =
log2(tamaño MP / tamaño MC) = log2(4 GB/32 KB)=log2(232/215)=log2(217) = 17 log2(tamaño de línea)=log2(64) = 6

Etiqueta (tag) Línea Palabra (offset)


17 bits 9 bits 6 bits
Longitud del campo línea= log2(cantidad de líneas) = log2(512) = 9

Memoria caché - Arquitectura de Computadoras - Ing. Jaír


26
Hnatiuk - Unlam (2021)
Mapeo directo
¿Cómo funciona? Supongamos que la CPU solicita la dirección 0x7D771B38…

7D771B38 base 16 =
01111101011101110001101100111000 base 2

Etiqueta (tag) – 17 bits Línea – 9 bits Palabra (offset) – 6 bits


01111101011101110 001101100 111000

• La porción de línea de la dirección (001101100= 10810) determina que se verificará la línea 10810
de caché. Si en esa línea el campo etiqueta tiene el valor 01111101011101110, es un ACIERTO.
Por lo tanto se accede a la palabra ubicada en el offset 111000 (5610) de la línea.
• Si en la línea 108 el campo etiqueta tiene un valor distinto, es una FALLA.

En asignación directa se compara sólo la etiqueta que corresponde a la línea en que debería
encontrarse el bloque buscado.
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
27
Hnatiuk - Unlam (2021)
Mapeo directo
Bus de direcciones

¿Cómo funciona? La CPU solicita la dirección 0x7D771B38, y la palabra está en la memoria caché (HIT)

Etiqueta (tag) Línea Palabra (offset)


1110002=5610
01111101011101110 001101100 111000

Memoria Caché
Línea Etiqueta Datos (64 bytes c/u)

106 01111000011110000
107 01111101011101110
108 01111101011101110
109 11001101011101010

Comparador

1. Se selecciona la línea 108 (001101100)


2. Se compara la etiqueta en MC con la porción de etiqueta de la dirección Bus de datos
3. Si son iguales, se devuelve el contenido de caché en el offset solicitado
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
28
Hnatiuk - Unlam (2021)
Mapeo directo
Bus de direcciones

¿Cómo funciona? La CPU solicita la dirección 0x7D771B38, y la palabra NO está en la memoria caché (MISS)

Etiqueta (tag) Línea Palabra (offset)


01111101011101110 001101100 111000

Memoria Caché
Línea Etiqueta Datos (64 bytes c/u)

106 01111000011110000
107 01111101011101110
108 01000000011111110
109 11001101011101010

Comparador

1. Se selecciona la línea 108 (001101100)


2. Se compara la etiqueta en MC con la porción de etiqueta de la dirección Bus de datos
3. Si son distintas, se produce una falla: debe acceder a MP
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
29
Hnatiuk - Unlam (2021)
Asignación asociativa por conjuntos

Cada bloque de memoria principal puede ubicarse en cualquier línea de caché dentro de un conjunto
acotado (normalmente de 2, 4, 8, o 16 líneas o vías).
La búsqueda de etiquetas se realiza en paralelo pero solo para las líneas del conjunto.

Cada bloque de MP (auto) puede utilizar cualquier ubicación en el estacionamiento dentro del conjunto.

Reservado para docentes de Análisis Reservado para docentes de


matemático I Arquitectura de Computadoras

Memoria caché - Arquitectura de Computadoras - Ing. Jaír


31
Hnatiuk - Unlam (2021)
Asignación asociativa por conjuntos
Un bloque de memoria principal puede ir a parar a cualquier línea de caché dentro de un
conjunto determinado.

Memoria Tamaño de la MC / tamaño de línea =


principal cantidad de líneas
Bloque 0
Bloque 1 Memoria Caché
Bloque 2 Línea 0
Conjunto 0
Bloque 3 Línea 1
Bloque 4 Línea 2
Conjunto 1 Bloque de MP
Línea 3 Línea MC
Bloque 5 que alojará
Bloque 6 0
0, 2, 4, 8….
Bloque 7 Cada línea tiene un 1
Bloque … comparador, solo se efectúan
2
las comparaciones de un 1, 3, 5, 7…
Bloque N
conjunto por acceso. 3
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
32
Hnatiuk - Unlam (2021)
Asignación asociativa por conjuntos
Interpretación de cada dirección de memoria según la CPU la coloca en el bus.
S+W = tamaño de dirección de memoria

Especifica un bloque de MP
S = log2(cantidad de bloques)

Identifica el conjunto Define la palabra dentro


de la línea

Etiqueta (tag) Conjunto (set) Offset (palabra)


Q = log2(cantidad de
S-Q = log2 (MP/MC) W = log2(tamaño de línea)
conjuntos)

Una porción de la dirección (conjunto) se utiliza para especificar qué conjunto le corresponde. Se puede utilizar
cualquier línea dentro de dicho conjunto.
La comparación se efectúa solamente sobre el campo de etiqueta para las líneas del conjunto.
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
33
Hnatiuk - Unlam (2021)
Asignación asociativa por conjuntos
Ejemplo: Supongamos direcciones de 32 bits (total direccionable = 4GB), líneas de 64 bytes,
tamaño de caché 32 KB. Se trata de una memoria caché asociativa de 4 vías.
1. ¿En cuántas líneas se divide la memoria caché?
2. ¿Cuál es el tamaño de cada campo de la dirección?
Cantidad de líneas =
tamaño de MC / tamaño de línea = 32 KB / 64 = 215 / 26 = 29= 512 líneas
Cantidad de bloques =
tamaño MP / tamaño de línea = 4 GB / 64 bytes = 232/26=226 = 64 M bloques
Cantidad de conjuntos =
cantidad de líneas / líneas por conjunto = 512 / 4 = 29/22=27 = 128 conjuntos
Longitud del campo de conjunto = Longitud del campo offset =
log2(cantidad de conjuntos) = log2(128) = log2(27) = 7 log2(tamaño de línea)=log2(64) = 6
Longitud del campo de etiqueta =
Longitud de dirección – Campo conjunto – Campo palabra = 32-7-6 = 19

Etiqueta (tag) Conjunto (set) Palabra (offset)


19 bits 7 bits 6 bits
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
34
Hnatiuk - Unlam (2021)
Asignación asociativa por conjuntos
¿Cómo funciona? Supongamos que la CPU solicita la dirección 0x7D771B38…
7D771B38 base 16 =
01111101011101110001101100111000 base 2

Etiqueta (tag) – 19 bits Conjunto (set) – 7 bits Palabra (offset) – 6 bits

0111110101110111000 1101100 111000

La etiqueta de la dirección (0111110101110111000) se compara en forma simultánea con las


etiquetas de las líneas de caché del conjunto 11011002 (10810). Si existe en MC una línea cuya
etiqueta tenga el mismo valor, es un ACIERTO. Por lo tanto se accede a la palabra ubicada en el offset
111000 (5610) de la línea. Si ninguna de las etiquetas de MC del conjunto tiene el valor buscado, es
una FALLA.

En asignación asociativa por conjuntos se comparan en


paralelo las etiquetas de las líneas del conjunto.

Memoria caché - Arquitectura de Computadoras - Ing. Jaír


35
Hnatiuk - Unlam (2021)
Asignación asociativa por conjuntos
Bus de direcciones

¿Cómo funciona? La CPU solicita la dirección 0x7D771B38, y la palabra está en la memoria caché (HIT)

Etiqueta (tag) Conjunto (set) Palabra (offset)


1110002=5610
0111110101110111000 1101100 111000

Memoria Caché
Etiqueta Datos (64 bytes c/u)

Comparador 1110111100001111000

Conjunto 108
Comparador 1101111110101110111
Comparador 0111110101110111000
Comparador 1111100110101110101

109

1. Se comparan simultáneamente las etiquetas de MC del conjunto seleccionado


Bus de datos
2. Si existe una coincidencia se devuelve el contenido de caché en el offset solicitado.

Memoria caché - Arquitectura de Computadoras - Ing. Jaír


36
Hnatiuk - Unlam (2021)
Asignación asociativa por conjuntos
Bus de direcciones

¿Cómo funciona? La CPU solicita la dirección 0x7D771B38, y la palabra NO está en la memoria caché (MISS)

Etiqueta (tag) Conjunto (set) Palabra (offset)


0111110101110111000 1101100 111000

Memoria Caché
Conjunto Etiqueta Datos (64 bytes c/u)

Comparador 108 11101111000011110000


Comparador 108 11011111101011101110
Comparador 108 01000101011101110001
Comparador 108 11111001101011101010
109

1. Se comparan simultáneamente las etiquetas de MC del conjunto seleccionado


Bus de datos
2. Si no existe coincidencia se debe acceder a MP.

Memoria caché - Arquitectura de Computadoras - Ing. Jaír


37
Hnatiuk - Unlam (2021)
Asignación asociativa y asociativa por conjuntos
Políticas de reemplazo
En asignación directa cada bloque de MP tiene una sola línea de MC donde puede
alojarse. Pero en mapeo asociativo se puede utilizar cualquier línea para cualquier
bloque. Si la memoria está llena y se produce una falla… ¿a quién se reemplaza?

¿Quién se va?

Memoria caché - Arquitectura de Computadoras - Ing. Jaír


39
Hnatiuk - Unlam (2021)
Políticas de reemplazo
No se aplica en memoria caché de mapeo directo
LRU (least recently used)
Se basa en la localidad temporal. A cada línea de caché se le agrega una marca de tiempo (time stamp). En cada
acceso a MC se actualiza la marca de la línea accedida. Se reemplaza la línea que hace más tiempo no se acede.
Cada marca de tiempo requiere almacenamiento adicional y los circuitos para actualizarse.
Pseudo-LRU (pseudo least recently used)
En asociativa por conjuntos: se asigna un bit uso por vía para cada línea. Cuando se accede a un conjunto, el bit
de la línea accedida se activa. Si todos los bits están activos, se desactivan todos con excepción del último.
Cuando una línea debe reemplazarse, se escoge la que no esté activa (si hay más de una…. usualmente random)
LFU (least frecuently used)
A cada línea de caché se le agrega un contador. En cada acceso a MC se actualiza el contador de la línea
accedida. Se reemplaza la línea cuyo valor sea el inferior.
FIFO (first in first out, también llamado Round Robin)
Al completarse la MC se reemplaza la línea que entró primero. Luego la segunda, y así. Es sencillo de
implementar con la ténica de búffer circular o round robin.
RANDOM
No requiere lógica adicional… y funciona bastante bien!
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
40
Hnatiuk - Unlam (2021)
Asignación asociativa
Políticas de reemplazo

Asociatividad
Dos vías Cuatro vías Ocho vías
Tamaño LRU Random FIFO LRU Random FIFO LRU Random FIFO
16 KB 114,1 117,3 115,5 111,7 115,1 113,3 109,0 111,8 110,4
64 KB 103,4 104,3 103,9 102,4 102,3 103,1 99,7 100,5 100,3
256 KB 92,2 92,1 92,5 92,1 92,1 92,5 92,1 92,1 92,5

Fallas en caché cada 1000 instrucciones comparando los algoritmos de reemplazo LRU, RANDOM y
FIFO para distintos tamaños de caché y número de conjuntos. Hay muy poca diferencia entre LRU y
random para los tamaños mayores de caché, aunque LRU se impone en memorias pequeñas. El
benchmark se hizo con tamaño de bloque de 64 bytes para arquitectura Alpha.

Memoria caché - Arquitectura de Computadoras - Ing. Jaír


41
Hnatiuk - Unlam (2021)
Asignación asociativa
Uso Etiqueta Datos
Políticas de reemplazo: Pseudo-LRU
01 10101111

Conjunto n
Ejemplo: asociativa por conjuntos de 2 vías
Se reemplaza la línea en el conjunto 01 11001111
que ha estado más tiempo en la caché
sin que se haga referencia a ella.
Cuando se accede a una línea se pone 1 00001001

Conjunto n+1
en 1 el bit de uso de la misma y en 0
los bits de uso de las otras líneas del
conjunto. (Caso particular de 2 vías). 0 11111000
Al momento de deber reemplazarse
una línea, la que tenga el bit de uso en
cero será la víctima.

Etiqueta Conjunto Palabra


10101111 n xxxxxx

Bus de direcciones

Memoria caché - Arquitectura de Computadoras - Ing. Jaír


42
Hnatiuk - Unlam (2021)
Comparativa: Ventajas y desventajas
• Diseño simple: menor tamaño
de la memoria de etiquetas y
• Combina simpleza de Directa comparadores más reducidos
con eficiencia de Asociativa. • No requiere búsqueda
• Cuanto más grande el asociativa.
conjunto (n- vías) mayor la Asociativa • Se suele usar para caché de
performance pero también la por Directa instrucciones.
complejidad y costo. • Riesgo de thrashing
• Obliga a implementar políticas conjuntos • Peor performance
de reemplazo
• Mejor performance

Intel Pentium 4 usa 8 vías en la


MC de datos de L1. También de 4, Asociativa • Buena performance, pero también
8, 16 o 24 vías para L2.
diseño más complejo.
ARM implementa asociativa por
• Comparadores de mayor tamaño
conjuntos de 8, 32 y 64 vías!
• Obliga a implementar políticas de
reemplazo
• Se utiliza en el TLB con unas pocas
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
Hnatiuk - Unlam (2021)
docenas de entradas (muy pequeña)
43
Comparativa: ¿Dónde puede ubicarse el bloque 14 en cada organización de MC?
Ejemplo: la MC tiene 8 líneas y la MP tiene 32 bloques.

Asociativa Directa
Línea: 0 1 2 3 4 5 6 7 Línea: 0 1 2 3 4 5 6 7

Memoria caché

El bloque 14 podrá ubicarse El bloque 14 se ubicará en la


en cualquier línea libre línea 6 (resto entre 14 y 8)

10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
0
1
2
3
4
5
6
7
8
Bloque: 9

Memoria principal

Memoria caché - Arquitectura de Computadoras - Ing. Jaír


44
Hnatiuk - Unlam (2021)
Comparativa: ¿Dónde puede ubicarse el bloque 14 en cada organización de MC?
Ejemplo: la MC tiene 8 líneas y la MP tiene 32 bloques.

Asociativa por Dos formas de razonarlo…


conjuntos (2 vías)
Línea: Bloque 14 = 01110
0 1 2 3 4 5 6 7
Dado que hay 4 conjuntos, usamos 2 bits
para el conjunto. Etiqueta = 011
Memoria caché Desconozco el tamaño de la línea, por ende Conjunto = 10
no podemos representar la porción de
Conjunto offset de la dirección.
0 1 2 3
Cada bloque se puede
ubicar en cualquier El bloque 14 se ubicará en
línea del conjunto que cualquier línea del conjunto 2
le corresponde

10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
0
1
2
3
4
5
6
7
8
Bloque: 9

Memoria principal

Memoria caché - Arquitectura de Computadoras - Ing. Jaír


45
Hnatiuk - Unlam (2021)
Política de carga y escritura
¿Cómo se realiza la carga de MC cuando se produce un falla?
Carga inmediata vs carga diferida (Load through vs load back)
• Carga inmediata (load through): Se carga el bloque de MC y en forma simultánea se transfiere la palabra a la CPU.
• Carga diferida (load back): Se actualiza el bloque en MC y luego la CPU accede a la MC.
¿Cómo se realiza la escritura desde CPU a MP?
Acierto: Escritura inmediata vs escritura diferida (Write through vs write back)
• Escritura inmediata (write through): Se actualiza la MC y en forma simultánea se actualiza MP.
• Segura (coherencia) y sencilla de implementar.
• Peor performance, tiende a cuellos de botella y exceso de tráfico a memoria.
• El procesador puede que deba demorarse (stall) durante la escritura. Se usan write buffers para reducir esto.
• Escritura diferida (write back): Se actualiza el bloque en MC; cuando se reemplaza la línea se actualiza MP
• Se utiliza un bit de suciedad (dirty bit) para indicar que la línea fue modificada.
• Si se producen lecturas/escrituras Mem <-> E/S o en entornos multiprocesador puede generar inconsistencias.
Falla: Asignación y escritura vs escritura sin asignación (Write allocate vs write no allocate)
• Asignación y escritura (write allocate): se carga el bloque en MC y se actualiza
• Escritura sin asignación (write no allocate): se actualiza en MP sin cargar en MC

Memoria caché - Arquitectura de Computadoras - Ing. Jaír


46
Hnatiuk - Unlam (2021)
Write buffer: mejora para escrituras de ARM
• Consiste en un pequeño buffer (conjunto de direcciones y un conjunto de palabras) FIFO que se ubica entre la MC
y la MP.
• Es más chico que la MC: puede contener hasta cuatro direcciones independientes.

Cómo funciona
1. Cuando el procesador realiza una escritura (CPU -> MC), los datos se colocan en el buffer de escritura a la
velocidad de reloj del procesador (CPU -> MC -> WB), y el procesador continua la ejecución.
2. Luego se realiza la escritura desde el write buffer en paralelo.
Si el write buffer está lleno el procesador se demora hasta que haya suficiente espacio en él.
3. Mientras se realizan operaciones que no son de escritura, el write buffer continúa escribiendo en memoria
principal hasta que esté completamente vacío.
Dirección Traducción de Dirección física
virtual direcciones

Memoria caché Memoria caché


Core ARM
de nivel 1 de nivel 2 Memoria
principal
Organización de Caché y Write Buffer ARM Write buffer
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
47
Hnatiuk - Unlam (2021)
Bits de control
Se asocian a cada línea de memoria caché.

Bit de suciedad (dirty bit / use bit)


Cada línea tiene asociado un bit de suciedad que indica si la línea sufrió modificaciones y por lo tanto debe
actualizarse la MP antes de ser reemplazada. Dirty (sucio) equivale a modificado. Clean es no-modificado.

Bit de validez
Cada línea tiene asociado un bit de validez. Cuando una línea de MC aun no ha sido cargada se indica con este bit
que no es válida. Si este bit no está activo, la etiqueta de la línea no coincidirá en ninguna comparación. Se usa
para indicar si la línea contiene o no un bloque que pertenezca al proceso en ejecución. Limpiar la MC equivale a
poner los bits de validez en cero.

V D Etiqueta (tag)

Memoria caché - Arquitectura de Computadoras - Ing. Jaír


48
Hnatiuk - Unlam (2021)
Bits de control
Cache Disable (CD, solo Pentium 4)
Habilita/deshabilita el mecanismo de carga de la línea de caché.
Si CD=1 la caché no se llenará con nuevos datos cuando se produzcan fallos, pero continuará funcionando para los
aciertos. Si CD=0 los fallos producirán que se actualice la MC.

Not Write-Through (NW, solo Pentium 4)


Selecciona el modo de operación para la caché de datos. Si NW=1 la caché operará en Write Back; Si está en cero
operará en Write-Through.

Core valid bit (Intel Nehalem y posteriores)


Se agrega un bit por core a cada línea de MC L3 en procesadores multicore (NEHALEM en adelante; luego vino
SANDY BRIDGE y IVY BRIDGE). De esa forma detecta quien esta accediendo a cada línea.
Si la línea puede que esté en L1/L2 del core, se indica con Core valid bit=1. Si más de un bit=1 la línea no se puede
modificar en ningún core.

Write through / write back (Motorola PPC 601)


Permite que se asigne a las líneas de MC la política write through (contra write back que es default). En un
esquema de 3 buses puede ser necesario para no generar inconsistencias con interfaces de E/S.

Memoria caché - Arquitectura de Computadoras - Ing. Jaír


49
Hnatiuk - Unlam (2021)
Direccionamiento virtual
Los procesos manejan las direcciones desde un punto de vista lógico, sin preocuparse por el total de memoria
física disponible. Los campos de direccion de las instrucciones de máquina contienen direcciones virtuales.

Dirección Dirección Dirección Dirección


lógica física lógica física
MMU MMU

CPU Caché MP CPU Caché MP

Datos Datos

Caché lógica Caché física


• La CPU accede a MC sin pasar por la MMU (más rápido)
• Pero dado que la mayoría de los sistemas de MV le dan a cada proceso el mismo espacio de direccionamiento
virtual, la MC debe limpiarse en cada cambio de contexto, o deben agregarse bits para identificar el espacio de
direccionamiento virtual.
• L1 puede ser lógica y L2+ física en un mismo sistema.
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
50
Hnatiuk - Unlam (2021)
Tiempo de acceso
𝑐𝑎𝑛𝑡𝑖𝑑𝑎𝑑 𝑑𝑒 𝑎𝑐𝑖𝑒𝑟𝑡𝑜𝑠 𝑐𝑎𝑛𝑡𝑖𝑑𝑎𝑑 𝑑𝑒 𝑓𝑎𝑙𝑙𝑎𝑠
Tasa de aciertos (HR)= Tasa de fallas (MR) =
𝑐𝑎𝑛𝑡𝑖𝑑𝑎𝑑 𝑑𝑒 𝑎𝑐𝑐𝑒𝑠𝑜𝑠 𝑎 𝑚𝑒𝑚𝑜𝑟𝑖𝑎 𝑐𝑎𝑛𝑡𝑖𝑑𝑎𝑑 𝑑𝑒 𝑎𝑐𝑐𝑒𝑠𝑜𝑠 𝑎 𝑚𝑒𝑚𝑜𝑟𝑖𝑎

HR + MR = 1 (Miss Rate y Hit Rate son complementarios)


Tiempo de acceso medio (tacc) = HR × 𝑡𝑎𝑐𝑐𝑀𝐶 + 𝑀𝑅 × Tiempo de penalización
Tiempo de penalización = 𝑡𝑎𝑐𝑐 MC + (𝑡𝑎𝑐𝑐 𝑀𝑃 ×Tamaño de bloque )

tacc = HR × 𝑡𝑎𝑐𝑐𝑀𝐶 + 𝑀𝑅 × [ 𝑡𝑎𝑐𝑐 MC + (𝑡𝑎𝑐𝑐 𝑀𝑃 ×Tamaño de bloque ) ] reemplazamos HR por (1-MR) y distribuimos en 2do term
tacc = (1−MR) × 𝑡𝑎𝑐𝑐𝑀𝐶 + 𝑀𝑅 × 𝑡𝑎𝑐𝑐 MC + 𝑀𝑅 × 𝑡𝑎𝑐𝑐 𝑀𝑃 ×Tamaño de bloque multiplicamos en 1er term
tacc = 𝑡𝑎𝑐𝑐𝑀𝐶−MR × 𝑡𝑎𝑐𝑐𝑀𝐶 + 𝑀𝑅 × 𝑡𝑎𝑐𝑐 MC + 𝑀𝑅 × 𝑡𝑎𝑐𝑐 𝑀𝑃 ×Tamaño de bloque hay dos términos que se anulan
tacc = 𝒕𝒂𝒄𝒄𝑴𝑪+ 𝑴𝑹 × 𝒕𝒂𝒄𝒄 𝑴𝑷 ×Tamaño de bloque

Cuando se produce una falla debe cargarse un bloque entero de MP en MC.


El tamaño de bloque se expresa en cantidad de palabras que se leen por acceso a MP.
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
51
Hnatiuk - Unlam (2021)
Tiempo de acceso: ejemplo
Contamos con una MC de un solo nivel, cuyo tiempo de acceso es 3ns y una MP de tiempo de acceso de 60ns.
En cada acceso a MP se lee una palabra. La MC está organizada con mapeo directo. No hay escrituras. Aplica
política de carga Load through.

Memoria principal Direcciones


Memoria caché Bloque 0 0-15 El programa ejecuta desde
Línea 0 Bloque 1 16-31 la dirección 48 a la 95 una
Línea 1 vez. Luego ejecuta desde la
Bloque 2 32-47 dirección 15 a 31 diez veces
Línea 2 Bloque 3 48-63 en un bucle, y finaliza.
Línea 3 Bloque 4 64-79 ¿Cuánto demora su
ejecución?
Bloque 5 80-95
Bloque 6 …
…. ….

Tiempo de acceso medio = Tiempo de acceso total / Cantidad total de palabras leídas por CPU
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
52
Hnatiuk - Unlam (2021)
Se podría sumar 3ns x 5 fallas al tiempo de acceso final.
Tiempo de acceso: ejemplo (respuesta) Corresponde al tiempo de buscar en MC en cada falla.

Evento Ubicación (dir.) Tiempo Comentarios


1 falla 48 960 ns 16 lecturas x 60 ns. Bloque 3 -> Línea 3
15 aciertos 49-63 45 ns 15 aciertos x 3 ns de Tiempo de acceso a MC
1 falla 64 960 ns 16 lecturas x 60 ns. Bloque 4 -> Línea 0
15 aciertos 65-79 45 ns
1 falla 80 960 ns 16 lecturas x 60 ns. Bloque 5 -> Línea 1
15 aciertos 81-95 45 ns
1 falla 15 960 ns 16 lecturas x 60 ns. Bloque 0 -> Línea 1
1 falla 16 960 ns 16 lecturas x 60 ns. Bloque 1 -> Línea 1
15 aciertos 17-31 45 ns
9 aciertos 15 27 ns Últimas iteraciones del bucle
144 aciertos 16-31 432 ns Últimas iteraciones del bucle
5 fallas /
Total 5439 ns Tiempo promedio de acceso = 5439 ns / 218 accesos = 24,9 ns
213 aciertos

¿Cuál es el HIT RATE? ¿Qué impacto tiene la MC en la performance de este sistema? ¿Cómo podría mejorarse?
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
53
Hnatiuk - Unlam (2021)
Caché unificada (unified) vs fraccionada o dividida (Split)
Caché unificada: almacena tanto instrucciones como Caché dividida: existen dos MC, una para
datos instrucciones y otra para datos
• Mayor tasa de aciertos • Elimina posibles bloqueos entre la unidad de
• Balancea la carga de datos e instrucciones búsqueda/decodificación y ejecución
• Sencilla: una sola para diseñar e implementar • Importante para pipelining
• Se suele implementar en L2, L3 • Se suele implementar en L1

Memoria principal Fallas cada mil instrucciones


Bus Tamaño (KB) Cache de instrucciones Caché de datos Caché unificada
8 8.16 44.0 63.0
16 3.82 40.9 51.0
Cache L3
32 1.36 38.4 43.3
64 0.61 36.9 39.4
Cache L1
Cache L2 128 0.30 35.3 36.2
Instrucciones
256 0.02 32.6 32.9
74% de referencias a instrucciones y 26% a datos. MC asociativa de 2 vías, bloques de 64 bytes,
Cache L1 arquitectura Alpha.
Core CPU
Datos Memoria caché - Arquitectura de Computadoras - Ing. Jaír
54
Hnatiuk - Unlam (2021)
Tiempo de acceso en estructura multinivel
Supongamos una estructura de dos niveles de MC (L1 y L2) de tipo unificada (datos e instrucciones comparten
cada nivel). Los fallas de L1 se buscarán en L2. Los fallas de L2 se buscarán en MP.

Tiempo de acceso medio = Tacc L1 + MRL1 × (HRL2 × Tacc L2 + MRL2 × Tacc MP)

Los términos de la ecuación de tiempo de acceso


medio a memoria pueden medirse en unidades de
tiempo absolutas (usualmente nanosegundos) o
el número de ciclos de reloj que el procesador
debe esperar.

El diagrama corresponde a la línea Intel Nehalem.


Los niveles L1 y L2 de caché son privativos por
core, mientras que la caché L3 es compartida.
QPI (Quick Path Interconnect) es el reemplazo de
FSB (Front Side Bus). Permite que un core
obtenga datos de la MC de otro core.

Memoria caché - Arquitectura de Computadoras - Ing. Jaír


55
Hnatiuk - Unlam (2021)
Configuración de memoria caché en algunos procesadores
Procesador Tipo Lanzamiento Caché L1 Caché L2 Caché L3
IBM 360/85 Mainframe 1968 16-32 kB
PDP-11/70 Minicomputadora 1975 1 kB
VAX 11/780 Minicomputadora 1978 16 kB
Intel 80486 PC 1989 8 kB
Pentium PC 1993 8 kB/8 kB 256-512 kB
PowerPC 601 PC 1993 32 kB
PowerPC G4 PC/Server 1996 32Kb/32kB 256 kB–1 MB 2 MB
Pentium 4 PC/Server 2000 8 kB/8 kB 256 kB
CRAY MTA Supercomputadora 2000 8 kB 2 MB
Itanium PC/Server 2001 16 kB/16 kB 96 kB 4 MB
ICRAY XD-1 Supercomputadora 2004 64 kB/64 kB 1 MB
Intel Core i7 EE 990 Workstation/Server 2011 6x32kB/32kB 1.5 MB 12 MB
Intel Xeon E7 v4 Server 2017 24x32 kB/32 kB 24x256 kB 60 MB
Memoria caché - Arquitectura de Computadoras - Ing. Jaír Hnatiuk - Unlam 56
(2021)
Optimizaciones a la memoria caché
¿Por qué se producen las fallas (miss)?
• Compulsory (obligatorio). El primer acceso a un bloque inevitablemente generará un falla. También se les
llama fallas de inicio frío o de primera referencia.
• Capacity (capacidad). Si la caché no puede contener todos los bloques necesarios para ejecutar un programa,
estos fallas ocurrirán cuando deba descartar y luego volver a cargar bloques.
• Conflict. En asignación directa o asociativa por conjuntos puede ocurrir que un bloque se descarte y se vuelva
a leer por haber muchos bloques necesarios para la ejecución del proceso que se mapean al mismo conjunto
o línea.
¿Cómo se soluciona?
• Utilizar organización asociativa (fully asociative). Pero es costosa y aumenta el tiempo de acierto (hit time).
• Incrementar el tamaño de bloque. Reducirá el miss rate, pero incrementará la penalización.
• Incrementar el tamaño de caché. Potencialmente aumenta el hit time y el consumo de energía.
• Incrementar el grado de asociatividad. La organización de 8 vías a los efectos prácticos logra reducir fallas
igual que la totalmente asociativa.
• Agregar niveles: el nivel debe ser tan rápido como la CPU y los subsiguientes ser grandes para disminuir la
penalización por falla.

Memoria caché - Arquitectura de Computadoras - Ing. Jaír Hnatiuk - Unlam (2021) 57


Composición de la tasa de fallos
100%

90%

80%

70%

60%

50%

40%

30%

20%

10%

0%
1 vía 2 vías4 vías8 vías 1 vía 2 vías4 vías8 vías 1 vía 2 vías4 vías8 vías 1 vía 2 vías4 vías8 vías 1 vía 2 vías4 vías 8 vías 1 vía 2 vías4 vías8 vías 1 vía 2 vías 4 vías8 vías 1 vía 2 vías4 vías8 vías
4 4 4 4 8 8 8 8 16 16 16 16 32 32 32 32 64 64 64 64 128 128 128 128 256 256 256 256 512 512 512 512

Compulsoy Capacity Conflict


Memoria caché - Arquitectura de Computadoras - Ing. Jaír Hnatiuk - Unlam 58
(2021)
Tasa de fallos en distintos grados de asociatividad
0,1

0,09

0,08

0,07

0,06

0,05

0,04

0,03

0,02

0,01

0
1 vía 2 vías 4 vías 8 vías 1 vía 2 vías 4 vías 8 vías 1 vía 2 vías 4 vías 8 vías 1 vía 2 vías 4 vías 8 vías 1 vía 2 vías 4 vías 8 vías 1 vía 2 vías 4 vías 8 vías 1 vía 2 vías 4 vías 8 vías 1 vía 2 vías 4 vías 8 vías
4 4 4 4 8 8 8 8 16 16 16 16 32 32 32 32 64 64 64 64 128 128 128 128 256 256 256 256 512 512 512 512
Memoria caché - Arquitectura de Computadoras - Ing. Jaír Hnatiuk - Unlam 59
(2021)
Composición de la tasa de fallos (parte 1)

Componentes de la tasa de fallos (porcentaje relativo)


Tamaño de Tasa de fallos (suma el 100% de la tasa de fallos total)
Asociatividad
caché (KB) total
Compulsory Capacity Conflict
4 1 vía 0,098 0,0001 0,10% 0,07 72% 0,027 28%
4 2 vías 0,076 0,0001 0,10% 0,07 93% 0,005 7%
4 4 vías 0,071 0,0001 0,10% 0,07 99% 0,001 1%
4 8 vías 0,071 0,0001 0,10% 0,07 100% 0,000 0%
8 1 vía 0,068 0,0001 0,10% 0,044 65% 0,024 35%
8 2 vías 0,049 0,0001 0,10% 0,044 90% 0,005 10%
8 4 vías 0,044 0,0001 0,10% 0,044 99% 0,000 1%
8 8 vías 0,044 0,0001 0,10% 0,044 100% 0,000 0%
16 1 vía 0,049 0,0001 0,20% 0,04 82% 0,009 17%
16 2 vías 0,041 0,0001 0,20% 0,04 98% 0,001 2%
16 4 vías 0,041 0,0001 0,20% 0,04 99% 0,000 0%
16 8 vías 0,041 0,0001 0,20% 0,04 100% 0,000 0%
32 1 vía 0,042 0,0001 0,20% 0,037 89% 0,005 11%
32 2 vías 0,038 0,0001 0,20% 0,037 99% 0,000 0%
32 4 vías 0,037 0,0001 0,20% 0,037 100% 0,000 0%
32 8 vías 0,037 0,0001 0,20% 0,037 100% 0,000 0%
64 1 vía 0,037 0,0001 0,20% 0,028 77% 0,008 23%
64 2 vías 0,031 0,0001 0,20% 0,028 91% 0,003 9%
64 4 vías 0,03 0,0001 0,20% 0,028 95% 0,001 4%
64 8 vías 0,029 0,0001 0,20% 0,028 97% 0,001 2%

Memoria caché - Arquitectura de Computadoras - Ing. Jaír Hnatiuk - Unlam 60


(2021)
Composición de la tasa de fallos (parte 2)

Componentes de la tasa de fallos (porcentaje relativo)


Tamaño de Tasa de fallos (suma el 100% de la tasa de fallos total)
Asociatividad
caché (KB) total
Compulsory Capacity Conflict
64 1 vía 0,037 0,0001 0,20% 0,028 77% 0,008 23%
64 2 vías 0,031 0,0001 0,20% 0,028 91% 0,003 9%
64 4 vías 0,03 0,0001 0,20% 0,028 95% 0,001 4%
64 8 vías 0,029 0,0001 0,20% 0,028 97% 0,001 2%
128 1 vía 0,021 0,0001 0,30% 0,019 91% 0,002 8%
128 2 vías 0,019 0,0001 0,30% 0,019 100% 0,000 0%
128 4 vías 0,019 0,0001 0,30% 0,019 100% 0,000 0%
128 8 vías 0,019 0,0001 0,30% 0,019 100% 0,000 0%
256 1 vía 0,013 0,0001 0,50% 0,012 94% 0,001 6%
256 2 vías 0,012 0,0001 0,50% 0,012 99% 0,000 0%
256 4 vías 0,012 0,0001 0,50% 0,012 99% 0,000 0%
256 8 vías 0,012 0,0001 0,50% 0,012 99% 0,000 0%
512 1 vía 0,008 0,0001 0,80% 0,005 66% 0,003 33%
512 2 vías 0,007 0,0001 0,90% 0,005 71% 0,002 28%
512 4 vías 0,006 0,0001 1,10% 0,005 91% 0,000 8%
512 8 vías 0,006 0,0001 1,10% 0,005 95% 0,000 4%

Memoria caché - Arquitectura de Computadoras - Ing. Jaír Hnatiuk - Unlam 61


(2021)
Tiempo de acceso: ¿el tamaño importa?

Variación del tiempo de acceso en una memoria caché CMOS de acuerdo a tamaño y grado de asociatividad.
Basado en modelo CACTI 4, asumiendo tecnología de 90nm, un solo banco y bloques de 64 bytes.
Hennessy and Patterson Ed.5 Image Copyright © 2011, Elsevier Inc. All rights Reserved
Memoria caché - Arquitectura de Computadoras - Ing. Jaír Hnatiuk - Unlam 62
(2021)
Conclusiones

• En la medida que los procesadores sigan mejorando sus prestaciones pero la


memoria no logre acompañar ese crecimiento al mismo ritmo, la brecha se
mantendrá y aumentará.
• Las técnicas avanzadas de optimización (solo expuestas en formar parcial y
muy breve en este material) son un intento de disminuir dicha diferencia,
pero será necesario seguir trabajando fuerte en este campo.
• Es indiscutible que los diseñadores de sistemas operativos y particularmente
de compiladores pueden hacer mucho para que las memorias caché
aprovechen el principio de localidad al máximo.

Memoria caché - Arquitectura de Computadoras - Ing. Jaír


67
Hnatiuk - Unlam (2021)
Bibliografía

• Computer’s Architecture: A Quantitative Approach 5th Ed.


Hennessy – Patterson, Morgan Kaufmann, 2012, ISBN 978-0-12-383872-8
• Computer Organization and Architecture. Designing for performance, 9th Ed.
William Stallings, Pearson Education, 2013. ISBN 13: 978-0-13-293633-0
• MUR00 Principios de arquitectura de computadoras, 1ra Ed.
Murdocca – Heuring, Prentice Hall, 2002, ISBN 987-9460-69-3
• Microprocesadores Intel 7ma ed
Barry Brey, Prentice Hall, 2006, ISBN970-26-0804-X
• Program restructuring for virtual memory
DJ Hatfield, J Gerald - IBM Systems Journal, 1971 - ieeexplore.ieee.org
• An Introduction to the Intel QuickPath Interconnect" (PDF).
Intel Corporation. January 30, 2009. Retrieved June 14, 2011.
• Computer Architecture ELE 475 / COS 475 Slide Deck 3: Cache Review,
David Wentzlaff, Department of Electrical Engineering, Princeton University
• Intel® Xeon® Processor E7-8890 v4 Product Specification
• Memoria cache (Perez Berro – Perrone – Rodríguez, UNLAM)
• PowerPC 601 RISC Microprocessor. Technical Summary.
https://www.nxp.com/docs/en/data-sheet/MPC601.pdf

Memoria caché - Arquitectura de Computadoras - Ing. Jaír Hnatiuk - Unlam (2021) 68

También podría gustarte