Beruflich Dokumente
Kultur Dokumente
. Juan C. Regidor
Condiciones que hacen necesario el uso de Memoria Cach Concepto de Memoria Cach y lgica de funcionamiento Escritura y Lectura en Cach, Acierto y Fallo en Cach Implementacin de Memorias Cach en la jerarqua de Memoria. Diseo de Memorias Cach: Correspondencias Directa, Asociativa y Asociativa por Conjuntos Estudio del desempeo de sistemas con Memoria Cach Casos de Estudio
Basado en y configuras de C. O. D de Patterson & Hennessy/ 3ra ed., C.O.D. de William Stallings y en material del Prof. Lee Hsien.
Medida de Desempeo
Ley de Moore
100 10
DRAM CPU
1
1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000
Time
Posibles soluciones
!
Para la capacidad de memoria requerida por las computadoras modernas resulta prohibitivo, debido al costo de fabricacin por bit.
Usar memorias tan rpidas como el Procesador, en cantidades pequeas, costeables, optimizando su uso.
" "
Usar diversas tecnologas de memoria, para garantizar no slo alto desempeo, sino capacidad y generalizacin en su uso.
" "
Latencia
"
Ancho de banda
"
Capacidad
"
Tamao de la memoria
Costo de uso
"
Dos tipos de Localidad: " Localidad Temporal: Si se hace referencia a una direccin dada, es muy probable que vuelva a ocurrir pronto.
!
"
Localidad Espacial: Si se hace referencia a una direccin dada, es muy probable que sus direcciones vecinas lo sean tambin.
!
El diseo de hardware utiliza frecuentemente principios de localidad para optimizar desempeo y costo.
Principio de localidad
int A[100], B[100], C[100], D; for (i=0; i<100; i++) { C[i] = A[i] * B[i] + D; }
Principio de localidad
int A[100], B[100], C[100], D; for (i=0; i<100; i++) { C[i] = A[i] * B[i] + D; }
A[7]
A[6]
A[5]
A[4]
A[3]
A[2]
A[1]
A[0]
Principio de localidad
int A[100], B[100], C[100], D; for (i=0; i<100; i++) { C[i] = A[i] * B[i] + D; }
D
..............
C[7] C[6] C[5] B[9] B[1] A[5] C[4] B[8] B[0] A[4]
..............
B[11] B[10] B[3] B[2] A[7] A[6] B[7] B[6] B[5] B[4] A[99] A[98] A[97] A[96] A[3] A[2] A[1] A[0]
..............
A cach Line (One fetch)
Universidad Simn Bolvar 6
Cach
!
Palabra francesa (escondido, p. p. del verbo cachr) Pequea cantidad de memoria rpida Se sita entre la memoria principal y el CPU Puede estar fsicamente en el chip del procesador o en la misma tarjeta que ste
! ! !
Proveer a los programas la mayor cantidad de memoria posible usando tecnologa de bajo costo. Proveer acceso de alta velocidad usando la tecnologa de alto desempeo y costo.
Procesador Control Cach nivel 2 (SRAM) Cach nivel 3 (SRAM) Almacenamiento Secundario (Disco) Almacenamiento Terciario (Disco, Cinta, DVD-ROM)
L1 I cach
Datapath
100K Bytes 10-100 ns 1-0.1 cents/bit G Bytes 200ns- 500ns $.0001-.00001 cents /bit 100G Bytes, 10 ms (10,000,000 ns) 10-5 10-6 cents/bit infinita sec-min 10-8
Registros
L1 D cach
Registros
Operandos de Inst. Compilador 1-8 bytes
Memoria Cach
Bloques de cach Controlador de cach 8-128 bytes
Memoria principal
Paginas de Memoria Systema Operativo 512-4K bytes
Discos Duros
Pginas de Memoria y Archivos Usuario Mbytes lento, grande y barato
10
Un acceso al sistema de memoria es una lectura una escritura, tanto de memoria de programa, como de memoria de datos. El procesador usa el nivel de memoria mas cercano a l (superiores). Debido a los tamaos de cada nivel, no toda la informacin cabe en todos los niveles. Cuando una informacin no se encuentra en el nivel buscado, se busca en el nivel inferior siguiente. La informacin se consigue eventualmente. Aumenta el desempeo del sistema si se garantiza un alto porcentaje de accesos que no bajan a los niveles inferiores. Hay diversas implementaciones en el caso de la escritura.
11
Memoria Principal
2.
Localidad General: La memoria de Datos y de Programa de una aplicacin se pueden encontrar relativamente cerca. Localidad intrnseca de los accesos por tipo de memoria:
1. 2.
Programa Datos
Aplicacin 1
Programa Datos.
Programa Datos
Aplicacin 2
"
Esto lleva a aprovechar ambos tipos de localidad con una estructura mas compleja, por niveles.
Cach de Programa Cach de Datos
Cach de Nivel 1
Programa Datos
Aplicacin 3
Cach de Nivel 2
12
Fuente: http://www.sandpile.org
Universidad Simn Bolvar 13
Core0
Core1
L2 cach
Fuente: http://www.sandpile.org
Universidad Simn Bolvar 13
Core0
IL1
DL1
DL1
Core1
IL1
L2 cach
Fuente: http://www.sandpile.org
Universidad Simn Bolvar 13
Versin de 3MB L3
Versin de 6MB L3
14
Each SPE contains 128 x128 bit registers, 256KB, 1-port, ECC-protected local SRAM (Not cach)
Universidad Simn Bolvar 16
17
Funcionamiento y Terminologa
!
Acceso (a memoria): Toda aquella operacin, visible o no al programador que requiere lecturas o escrituras de memoria.
"
"
Cada vez que el Procesador busca un byte o palabra de la memoria de programa (FETCH), para traer un opcode, argumento, etc., se produce un acceso. Cada vez que el procesador ejecuta una instruccin que usa direccionamientos a memoria de programa (variables) de datos (tablas fijas, constantes) (directos, indirectos indexados), se produce un acceso por cada operando y/o resultado. La ejecucin de la instruccin de IJVM IADD en Mic1 realiza 4 accesos a memoria:
!
Ejemplos:
"
Traer la instruccin de la memoria de programa (PC = PC + 1; Fetch). Acceso de Lectura Leer los dos Sumandos de la Pila son dos accesos a Memoria (MAR = SP; rd y MAR = SP 1; rd) (suponiendo que no se dispone de un registro TOS). Escribir el Resultado en el Tope de la Pila es un acceso de Escritura (MAR = SP; wr)
Universidad Simn Bolvar 18
Funcionamiento y Terminologa
!
Tasa de aciertos (Hit Rate): fraccin o porcentaje de accesos a memoria que han producido acierto en un nivel dado. Tiempo de acierto (Hit Time): Tiempo necesario para acceder al nivel (tiempo de acceso a la memoria del nivel + tiempo de respuesta de la lgica que determina que hubo acierto).
Fallo (miss): No se encuentra el dato en el nivel. Debe ser buscado en bloques de memoria de niveles inferiores.
" "
Tasa de fallos (Miss Rate) = 1 (Tasa de aciertos) Penalizacin por Fallos (Miss Penalty): Tiempo que toma traer un bloque de un nivel inferior + Tiempo para enviar el dato solicitado al procesador
Del Procesador
Al Procesador
Universidad Simn Bolvar 19
Funcionamiento y Terminologa
!
Tasa de aciertos (Hit Rate): fraccin o porcentaje de accesos a memoria que han producido acierto en un nivel dado. Tiempo de acierto (Hit Time): Tiempo necesario para acceder al nivel (tiempo de acceso a la memoria del nivel + tiempo de respuesta de la lgica que determina que hubo acierto).
Fallo (miss): No se encuentra el dato en el nivel. Debe ser buscado en bloques de memoria de niveles inferiores.
" "
Tasa de fallos (Miss Rate) = 1 (Tasa de aciertos) Penalizacin por Fallos (Miss Penalty): Tiempo que toma traer un bloque de un nivel inferior + Tiempo para enviar el dato solicitado al procesador
Del Procesador
Al Procesador
Universidad Simn Bolvar 19
Funcionamiento y Terminologa
!
Tasa de aciertos (Hit Rate): fraccin o porcentaje de accesos a memoria que han producido acierto en un nivel dado. Tiempo de acierto (Hit Time): Tiempo necesario para acceder al nivel (tiempo de acceso a la memoria del nivel + tiempo de respuesta de la lgica que determina que hubo acierto).
Fallo (miss): No se encuentra el dato en el nivel. Debe ser buscado en bloques de memoria de niveles inferiores.
" "
Tasa de fallos (Miss Rate) = 1 (Tasa de aciertos) Penalizacin por Fallos (Miss Penalty): Tiempo que toma traer un bloque de un nivel inferior + Tiempo para enviar el dato solicitado al procesador
Del Procesador
Al Procesador
Universidad Simn Bolvar 19
Funcionamiento y Terminologa
!
Tasa de aciertos (Hit Rate): fraccin o porcentaje de accesos a memoria que han producido acierto en un nivel dado. Tiempo de acierto (Hit Time): Tiempo necesario para acceder al nivel (tiempo de acceso a la memoria del nivel + tiempo de respuesta de la lgica que determina que hubo acierto).
Fallo (miss): No se encuentra el dato en el nivel. Debe ser buscado en bloques de memoria de niveles inferiores.
" "
Tasa de fallos (Miss Rate) = 1 (Tasa de aciertos) Penalizacin por Fallos (Miss Penalty): Tiempo que toma traer un bloque de un nivel inferior + Tiempo para enviar el dato solicitado al procesador
Del Procesador
Al Procesador
Universidad Simn Bolvar 19
TA suele ser de pocos ciclos para el nivel 1 de cach TPF suele ser de muchos ciclos, pues se realiza una transferencia de bloques entre los dos niveles, y est en funcin de: " Tiempo de Acceso: es funcin de la latencia. " Tiempo de transferencia: es funcin del ancho de banda entre niveles, sabiendo que se transfiere un bloque por cada fallo.
Universidad Simn Bolvar 20
Ejemplo de desempeo
1 ciclo
Cach L1
h * TA
Ejemplo: TA = 1 ciclo h = 90% = 0.9 TPF(Mem) = 300 ciclos TPAM = 0.9*1 + 0.1*300 = 30.9 ciclos
Universidad Simn Bolvar 21
10 ciclos
Cach L2
20 ciclos Cach L3
TPAM = (h (L1) x TA(L1))+ ((1h) (L1) x TPF(L1)) TPAM = (h (L1) x TA(L1))+ ((1h) (L1) x [(h (L2) x TA(L2))+ ((1h) (L2) x TPF(L2))]) TPAM = (h (L1) x TA(L1))+ ((1h) (L1) x (h (L2) x TA(L2))+ ((1h) (L2) x [(h (L3) x TA(L3))+ ((1h) (L3) x TPF(Mem))])])
Universidad Simn Bolvar 22
10 ciclos
Cach L2
20 ciclos Cach L3
h(L1)= 90% = 0.9 h(L2)= 95% = 0.95 h(L3)= 99% = 0.99 TPAM = 0.9*1 + 0.1*[ 0.95*10 + 0.05*(0.99*20+0.01*300)] = 0.9 + 0.1*[9.5 + 0.05*22.8]
TPAM=1.964 ciclos. Comparado con 30.9 ciclos para un solo nivel, es una mejora de 15.73 veces aprox.
Universidad Simn Bolvar 23
Memoria para bloques de datos Memoria para informacin de Control Circuitos lgicos que realizan las tareas de la cach:
" " " "
Buscar el dato en la cach. Determinar si est. Si contiene el dato, generar seal de acierto (Hit), que activa los mecanismos de transferencia del dato al procesador. Si no contiene el dato, generar seal de fallo (Miss), que activa los mecanismos de transferencia de bloques. La trasferencia de bloques en el caso de los fallos es bidireccional, pues un bloque que viene de un nivel inferior podra tener que reemplazar otro que ya se encuentra en la cach, y que ha sido modificado.
24
Memoria Principal
0x000 2
dato
0x00020000
dato
0x0002FFFF 0x00030000 0x0003FFFF ... 0xFFFD0000 0xFFFDFFFF 0xFFFE0000 0xFFFEFFFF 0xFFFF0000 0xFFFFFFFF
Buscar si un dato (direccin de memoria) est en el cach es verificar que el bloque que est en la cach corresponde al bloque de memoria que contiene al dato. Uso de etiqueta para identificar el bloque de memoria que se encuentra en la cach. La etiqueta forma parte de la direccin del dato. Ejemplo: En la figura, el dato de direccin 0x00020AC3 se encuentra en la Cach. El dato de direccin 0x00030AC3 no se encuentra. Una instruccin LDA 0x00020AC3 dar un Acierto, y la otra resultar en un Fallo
25
Memoria Principal
0x000 2
0x00020000
0x00020AC3 = 0x3F
0x0002FFFF 0x00030000
Interpret. de la Cach Etiqueta Despl. 0AC3
0002
0x00020AC3
0xFFFDFFFF 0xFFFE0000
26
Memoria Principal
0x000 2
dato
0x00020000
dato
0x0002FFFF 0x00030000
Desventajas Solo un bloque de memoria puede estar en cach a la vez. Poca flexibilidad en el comn de los programas con saltos y llamados a funciones frecuentes. Soluciones Cach de multiples bloques.
27
Correspondencia Directa
" " " "
Existe una relacin directa por direccionamiento entre grupos de bloques de la memoria, y los bloques de la cach. Para un bloque de memoria dado, slo le corresponde uno de los bloques de la memoria cach. Simplificacin significativa del circuito de control de la cach. Se reduce la flexibilidad. Cualquier bloque de la memoria puede estar en cualquier bloque de cach. Mxima flexibilidad Circuitos costosos y lentos. Muchas verificaciones.
Correspondencia Asociativa
" " "
28
Correspondencia Directa
! !
Cada bloque de la memoria principal se mapea a una ubicacin fija de la cach La direccin de una palabra se divide en tres campos:
" " "
Los w bits menos significativos identifican a la palabra dentro del bloque Los siguientes s bits identifican un nmero de linea dentro de la cach Los t bits ms significativos forman la etiqueta del bloque
29
Memoria Principal
0x0(00)
0x0000 ... 0xFFFF 0x0000 ... 0xFFFF 0x0000 ... 0xFFFF 0x0000 ... 0xFFFF
0x0000
0x1(01)
0x0000
0x2(10)
0x3(11)
0000 0000 0000 0111 0000 0000 0000 0000 0000 0000 0000 0111 1111 1111 1111 1111 ... 1111 1111 1111 1100 0000 0000 0000 0000 1111 1111 1111 1100 1111 1111 1111 1111 1111 1111 1111 1101 0000 0000 0000 0000 1111 1111 1111 1101 1111 1111 1111 1111 1111 1111 1111 1110 0000 0000 0000 0000 1111 1111 1111 1110 1111 1111 1111 1111 1111 1111 1111 1111 0000 0000 0000 0000 1111 1111 1111 1111 1111 1111 1111 1111
...
30
Memoria Principal
0x0(00)
0x0000 ... 0xFFFF 0x0000 ... 0xFFFF 0x0000 ... 0xFFFF 0x0000 ... 0xFFFF
0x0000
0x1(01)
0x0000
0x2(10)
0x3(11)
0000 0000 0000 0111 0000 0000 0000 0000 0000 0000 0000 0111 1111 1111 1111 1111 ... 1111 1111 1111 1100 0000 0000 0000 0000 1111 1111 1111 1100 1111 1111 1111 1111 1111 1111 1111 1101 0000 0000 0000 0000 1111 1111 1111 1101 1111 1111 1111 1111 1111 1111 1111 1110 0000 0000 0000 0000 1111 1111 1111 1110 1111 1111 1111 1111 1111 1111 1111 1111 0000 0000 0000 0000 1111 1111 1111 1111 1111 1111 1111 1111
...
30
Memoria Principal
0x0(00)
0x0000 ... 0xFFFF 0x0000 ... 0xFFFF 0x0000 ... 0xFFFF 0x0000 ... 0xFFFF
0x0000
0x1(01)
0x0000
0x2(10)
0x3(11)
0000 0000 0000 0111 0000 0000 0000 0000 0000 0000 0000 0111 1111 1111 1111 1111 ... 1111 1111 1111 1100 0000 0000 0000 0000 1111 1111 1111 1100 1111 1111 1111 1111 1111 1111 1111 1101 0000 0000 0000 0000 1111 1111 1111 1101 1111 1111 1111 1111 1111 1111 1111 1110 0000 0000 0000 0000 1111 1111 1111 1110 1111 1111 1111 1111 1111 1111 1111 1111 0000 0000 0000 0000 1111 1111 1111 1111 1111 1111 1111 1111
...
Interpretacin de la Cach: Dir: 0x00020AC3 = 0000 0000 0000 0010 0000 1010 1100 0011 Etiqueta 0000 0000 0000 00 Lnea 10 Desp. 0000 1010 1100 0011
30
Memoria Principal
0x0(00)
0x0000 ... 0xFFFF 0x0000 ... 0xFFFF 0x0000 ... 0xFFFF 0x0000 ... 0xFFFF
0x20AC3 = 0x3F
0x0000
0x1(01)
0x0000
0x2(10)
0x3(11)
0000 0000 0000 0111 0000 0000 0000 0000 0000 0000 0000 0111 1111 1111 1111 1111 ... 1111 1111 1111 1100 0000 0000 0000 0000 1111 1111 1111 1100 1111 1111 1111 1111 1111 1111 1111 1101 0000 0000 0000 0000 1111 1111 1111 1101 1111 1111 1111 1111 1111 1111 1111 1110 0000 0000 0000 0000 1111 1111 1111 1110 1111 1111 1111 1111 1111 1111 1111 1111 0000 0000 0000 0000 1111 1111 1111 1111 1111 1111 1111 1111
...
Interpretacin de la Cach: Dir: 0x00020AC3 = 0000 0000 0000 0010 0000 1010 1100 0011 Etiqueta 0000 0000 0000 00 Lnea 10 Desp. 0000 1010 1100 0011
30
Memoria Principal
0x0(00)
0x0000 ... 0xFFFF 0x0000 ... 0xFFFF 0x0000 ... 0xFFFF 0x0000 ... 0xFFFF
0x20AC3 = 0x3F
0x0000
0x1(01)
0x0000
0x2(10)
0x3(11)
0000 0000 0000 0111 0000 0000 0000 0000 0000 0000 0000 0111 1111 1111 1111 1111 ... 1111 1111 1111 1100 0000 0000 0000 0000 1111 1111 1111 1100 1111 1111 1111 1111 1111 1111 1111 1101 0000 0000 0000 0000 1111 1111 1111 1101 1111 1111 1111 1111 1111 1111 1111 1110 0000 0000 0000 0000 1111 1111 1111 1110 1111 1111 1111 1111 1111 1111 1111 1111 0000 0000 0000 0000 1111 1111 1111 1111 1111 1111 1111 1111
...
Interpretacin de la Cach: Dir: 0x00020AC3 = 0000 0000 0000 0010 0000 1010 1100 0011 Etiqueta 0000 0000 0000 00 Lnea 10 Desp. 0000 1010 1100 0011
30
Memoria Principal
0x0(00)
0x0000 ... 0xFFFF 0x0000 ... 0xFFFF 0x0000 ... 0xFFFF 0x0000 ... 0xFFFF
0x20AC3 = 0x3F
0x0000
0x1(01)
0x0000
0x2(10)
0x0AC3 = 0x3F
0x3(11)
...
Interpretacin de la Cach: Dir: 0x00020AC3 = 0000 0000 0000 0010 0000 1010 1100 0011 Etiqueta 0000 0000 0000 00 Lnea 10 Desp. 0000 1010 1100 0011
30
Memoria Principal
0x0(00)
0x0000 ... 0xFFFF 0x0000 ... 0xFFFF 0x0000 ... 0xFFFF 0x0000 ... 0xFFFF
0x20AC3 = 0x3F
0x0000
0x1(01)
0x0000
0x2(10)
0x3(11)
...
Interpretacin de la Cach: Dir: 0x00020AC3 = 0000 0000 0000 0010 0000 1010 1100 0011 Etiqueta 0000 0000 0000 00 Lnea 10 Desp. 0000 1010 1100 0011
30
Memoria Principal
0x0(00)
0x0000 ... 0xFFFF 0x0000 ... 0xFFFF 0x0000 ... 0xFFFF 0x0000 ... 0xFFFF
0x0000
0x1(01)
0x0000
0x2(10)
0x0AC3 = 0x3F
0x3(11)
...
Interpretacin de la Cach: Dir: 0x00020AC3 = 0000 0000 0000 0010 0000 1010 1100 0011 Etiqueta 0000 0000 0000 00 Lnea 10 Desp. 0000 1010 1100 0011
30
Memoria Principal
0x0(00)
0x0000 ... 0xFFFF 0x0000 ... 0xFFFF 0x0000 ... 0xFFFF 0x0000 ... 0xFFFF
0x0000
0x1(01)
0x0000
0x2(10)
0x3(11)
...
Interpretacin de la Cach: Dir: 0x00020AC3 = 0000 0000 0000 0010 0000 1010 1100 0011 Etiqueta 0000 0000 0000 00 Lnea 10 Desp. 0000 1010 1100 0011
Todos los bloques de memoria que corresponden con la lnea 10 estn asignados al mismo bloque (lnea) del cach. Se diferencian entre s porque tienen etiquetas distintas.
30
Correspondencia Directa
Procesador: LDA 0x00020AC3
Desp.
0000 1010 1100 0011
Lne a
Etiqueta
00 01 10 11
0 1 1 0
0x0000 0x0000 -
0x0000 a 0xFFFF
0x0AC3 = 0x6B
0x0AC3 = 0x3F
0x0000 a 0xFFFF
=
Acierto/Fallo (al procesador)
31
Correspondencia Directa
! ! ! ! ! !
Longitud de direccin = n = (t + s + w) bits Nmero de unidades direccionables = 2n palabras o bytes Tamao de bloque = tamao de linea = 2w palabras o bytes Nmero de bloques en memoria ppal. = 2n/2w = 2t+s Nmero de lineas en cach = m = 2s Tamao de la etiqueta (tag) = (n s w) bits
Interpretacin de la Cach: Etiqueta t bits Lnea s bits Desp. w bits
32
! !
Si un programa accede repetidamente a 2 bloques que se mapean a la misma lnea, la tasa de fallos puede ser muy alta
33
Correspondencia Asociativa
! ! ! !
Un bloque de la memoria principal puede cargarse en cualquier linea de la cach La direccin es interpretada como dos campos, etiqueta (t bits) y palabra (w bits) La etiqueta identifica unvocamente a un bloque de memoria Se comparan las etiquetas de todas las lineas para encontrar el bloque buscado en la cach
Interpretacin de la Cach: Etiqueta t bits Desp. w bits
34
Correspondencia Asociativa
Direccin de datos dentro de la cach V Etiqueta de bloque Bloque de datos en cach V Etiqueta de bloque Bloque de datos en cach V Etiqueta de bloque Bloque de datos en cach V Etiqueta de bloque Bloque de datos en cach
1 0x0002
1 0xFFFE
0 -
1 0x0000
=
Dir = 0x00020AC3
OR
35
Correspondencia Asociativa
! ! ! ! ! !
Logitud de la direccin = n = (t + w) bits Nmero de unidades direccionables = 2n palabras o bytes Tamao de bloque = Tamao de linea = 2w palabras o bytes Nmero de bloques en memoria ppal. = 2n/2w = 2t Nmero de lineas en cach = indeterminado Tamao de la etiqueta (tag) = t bits
36
Flexibilidad y Alto Porcentaje de Aciertos (Correspondencia Asociativa) Bajo Costo y Rapidez (Correspondencia Directa).
Solucin: Aprovechar parcialmente ambos beneficios haciendo grupos de bloques que cumplan con ambas correspondencias. En la prctica: Construir una Cach de Correspondencia Directa, donde cada Lnea sea en realidad un Conjunto de Lneas que se relacionan entre s por Correspondencia Asociativa.
Universidad Simn Bolvar 37
38
Etiquet a
Datos
0x0000
Etiquet a
Etiquet a
Datos
0x0000
0xFFFF
0xFFFF
0xFFFF
38
Via 01
V Etiquet a Datos
0x0000
Via 10
V Etiquet a Datos 0x0000 0xFFFF V
Via 11
Etiquet a Datos
0x0000
0xFFFF
0xFFFF
0xFFFF
38
Via 00
V Etiquet a Datos
0x0000
Via 01
V Etiquet a Datos
0x0000
Via 10
V Etiquet a Datos 0x0000 0xFFFF V
Via 11
Etiquet a Datos
0x0000
0xFFFF
0xFFFF
0xFFFF
38
Via 00
V Etiquet a Datos
0x0000
Via 01
V Etiquet a Datos
0x0000
Via 10
V Etiquet a Datos 0x0000 0xFFFF V
Via 11
Etiquet a Datos
0x0000
0xFFFF
0xFFFF
0xFFFF
Etiquet a
01
0x0000 0xFFFF
10
0x0000 0xFFFF
11
0x0000 0xFFFF
38
Via 00
V Etiquet a Datos
0x0000
Via 01
V Etiquet a Datos
0x0000
Via 10
V Etiquet a Datos 0x0000 0xFFFF V
Via 11
Etiquet a Datos
0x0000
0xFFFF
0xFFFF
0xFFFF
Etiquet a
01
0x0000 0xFFFF
10
0x0000 0xFFFF
11
0x0000 0xFFFF
38
Via 00
V Etiquet a Datos
0x0000
Via 01
V Etiquet a Datos
0x0000
Via 10
V Etiquet a Datos 0x0000 0xFFFF V
Via 11
Etiquet a Datos
0x0000
0xFFFF
0xFFFF
0xFFFF
Directa
- Tiene 4 Lneas de 64K c/u Total: 256Kbytes de Datos
00
Etiquet a
01
0x0000 0xFFFF
10
0x0000 0xFFFF
11
0x0000 0xFFFF
38
Via 00
V Etiquet a Datos
0x0000
Via 01
V Etiquet a Datos
0x0000
Via 10
V Etiquet a Datos 0x0000 0xFFFF V
Via 11
Etiquet a Datos
0x0000
0xFFFF
0xFFFF
0xFFFF
Directa
- Tiene 4 Lneas de 64K c/u Total: 256Kbytes de Datos
00
Etiquet a
01
0x0000 0xFFFF
10
0x0000 0xFFFF
11
0x0000 0xFFFF
Linea 0
Etiquet a
Etiquet a
0x0000 0xFFFF
38
Via 00
V Etiquet a Datos
0x0000
Via 01
V Etiquet a Datos
0x0000
Via 10
V Etiquet a Datos 0x0000 0xFFFF V
Via 11
Etiquet a Datos
0x0000
0xFFFF
0xFFFF
0xFFFF
Directa
- Tiene 4 Lneas de 64K c/u Total: 256Kbytes de Datos
00
Etiquet a
01
0x0000 0xFFFF
10
0x0000 0xFFFF
11
0x0000 0xFFFF
Via 0
Linea 0 V Etiquet a Datos 0x0000 0xFFFF 1 0x0000 0xFFFF V
Via 1
Etiquet a Datos 0x0000 0xFFFF 0x0000 0xFFFF
Conjunto 0 Conjunto 1
38
Via 00
V Etiquet a Datos
0x0000
Via 01
V Etiquet a Datos
0x0000
Via 10
V Etiquet a Datos 0x0000 0xFFFF V
Via 11
Etiquet a Datos
0x0000
0xFFFF
0xFFFF
0xFFFF
Directa
- Tiene 4 Lneas de 64K c/u Total: 256Kbytes de Datos
00
Etiquet a
Lnea 00 Lnea 01 Lnea 10 Lnea 11 Esta es una Lnea, del Conjunto 00, Via 1.
Datos 0x0000 0xFFFF 0x0000 0xFFFF
01
0x0000 0xFFFF
10
0x0000 0xFFFF
11
0x0000 0xFFFF
Via 0
Linea 0 V Etiquet a Datos 0x0000 0xFFFF 1 0x0000 0xFFFF V
Via 1
Etiquet a
Conjunto 0 Conjunto 1
38
Via 00
V Etiquet a Datos
0x0000
Via 01
V Etiquet a Datos
0x0000
Via 10
V Etiquet a Datos 0x0000 0xFFFF V
Via 11
Etiquet a Datos
0x0000
0xFFFF
0xFFFF
0xFFFF
Directa
- Tiene 4 Lneas de 64K c/u Total: 256Kbytes de Datos
00
Etiquet a
Lnea 00 Lnea 01 Lnea 10 Lnea 11 Esta es una Lnea, del Conjunto 00, Via 1.
Datos 0x0000 0xFFFF 0x0000 0xFFFF
01
0x0000 0xFFFF
10
0x0000 0xFFFF
11
0x0000 0xFFFF
Via 0
Etiquet a Datos 0x0000 0xFFFF 0x0000 0xFFFF V
Via 1
Etiquet a
Conjunto 0 Conjunto 1
38
39
Etiqueta de bloque
1 0x0001
0x3F
1 0x0A01
0 -
1 0x0A01
39
Etiqueta de bloque
1 0x0001
0x3F
1 0x0A01
0 -
1 0x0A01
Procesador: rb 0x00020AC3
39
Etiqueta de bloque
1 0x0001
0x3F
1 0x0A01
0 -
1 0x0A01
Dir = 0x00020AC3
Procesador: rb 0x00020AC3
39
Etiqueta de bloque
1 0x0001
0x3F
1 0x0A01
0 -
1 0x0A01
Dir = 0x00020AC3
Procesador: rb 0x00020AC3
39
Etiqueta de bloque
1 0x0001
0x3F
1 0x0A01
0 -
1 0x0A01
Dir = 0x00020AC3
Procesador: rb 0x00020AC3
39
Etiqueta de bloque
1 0x0001
0x3F
1 0x0A01
0 -
1 0x0A01
Dir = 0x00020AC3
Procesador: rb 0x00020AC3
39
Etiqueta de bloque
1 0x0001
0x3F
1 0x0A01
0 -
1 0x0A01
Dir = 0x00020AC3
Procesador: rb 0x00020AC3
Acierto/Fallo
OR
39
Etiqueta de bloque
1 0x0001
0x3F
1 0x0A01
0 -
1 0x0A01
Dir = 0x00020AC3
Procesador: rb 0x00020AC3
Acierto/Fallo
OR
39
Etiqueta de bloque
1 0x0001
0x3F
1 0x0A01
0 -
1 0x0A01
Dir = 0x00020AC3
Procesador: rb 0x00020AC3
Acierto/Fallo
OR
Dato = 0x3F
Selector (Multiplexor)
39
Interpretacin de la direccin
Correspondencia Asociativa
Indica el bloque exacto de memoria (Etiqueta nica) y el lugar exacto del dato dentro del bloque (Desplazamiento). No indica la ubicacin del bloque en la cach.
Etiqueta 0000 0000 0000 0010 Desplazamiento 0000 1010 1100 0011
Correspondencia Directa
Indica parcialmente el bloque de memoria (Etiqueta compartida), La ubicacin exacta del bloque de memoria en la cach (Lnea), y lugar exacto del dato dentro del bloque (Desplazamiento).
Lnea 10
Conjunto 0
40
Direccin general
Lnea 10
Direccin real: Los procesadores pueden hacer accesos a mas de un tipo (tamao) de dato. Una traza de accesos pueden ser del tipo: rb 0x00000001 ; leer byte de direccin 1. rw 0x00000001 ; leer word 1 cuyo primer byte tiene direccin 0x8. wb 0x00000020 ; Escribir byte de direccin 20. ww 0x00000020 ; Escribir word 20, cuyo primer byte es el 0x100.
Universidad Simn Bolvar 41
Tiempo de acceso promedio a memoria = Tasa aciertos x Tiempo Acierto + Tasa de fallos x penalizacin fallo Para mejorar rendimiento:
" " "
Reducir Tiempo de Acierto Reducir la Tasa de Fallos Reducir la penalizacin por fallos
42
Capacidad: La cach es muy pequea para manejar los datos que necesita el programa
"
Conflicto: fallos que ocurren debido a colisiones debidas a la poltica de asignacin de bloques
"
43
Aumentar la Asociatividad
" "
Reduce fallos por Forzoso y Capacidad Incrementa fallos por Conflicto Incrementa penalizacin por fallos
Universidad Simn Bolvar 44
Reemplazo de Lneas
!
El reemplazo sucede cuando una referencia produce un fallo, y no hay espacio para colocar el bloque referenciada. Se debe sacar algn bloque de la cach, para darle espacio al nuevo. En Cach de Correspondencia Directa: No hay que tomar ninguna decisin, pues los bloques de memoria ya stn asignados a una lnea fija, que es donde sucede el reemplazo. En Cach Asociativa: se puede sacar cualquier bloque. Se puede utilizar un algoritmo de reemplazo que intente lograr un buen desempeo promedio (mas aciertos en el largo plazo).
45
Reemplazo de Lneas
!
En Cach Asociativa por Conjuntos: Se establecen polticas de reemplazo para decidir en cual va sucede, pero el conjunto donde sucede el reemplazo es fijo, por la correspondencia directa. Polticas de reemplazo: " FIFO (First In, First Out) " LRU (Least Recently Used): se implementa con listas y contadores (costosa). " NRU (Not Recently Used): se implementa con un bit de Usado recientemente para cada bloque, que se limpia cada cierto tiempo y se pone en 1 cada vez que se usa el bloque. " Aleatorio (Random)
46
Lectura y Escritura
!
En toda referencia de escritura, se escribe el dato en la cach, y tambin en los niveles inferiores. Costoso, pues para toda escritura el costo es mayor que sin tener la cach. Se mantiene la consistencia entre la cach y los otros niveles.
"
Las escrituras se realizan slo en la cach. Cuando un bloque que est en la cach ha sido modificado, su correspondiente en memoria principal debe ser actualizado cuando el bloque en cach tenga que ser borrado (reemplazado por otro). Concepto de lnea sucia, que se implementa con un bit adicional dirty bit, para indicar cul bloque en la cach ha sido modificado.
Universidad Simn Bolvar 47
Se trae la lnea (bloque) a la cach, y luego se realiza la escritura correspondiente. Los fallos de escritura funcionan igual que los fallos de lectura. Lo fallos de escritura no afectan a la cach Durante un fallo, se realiza la escritura slo en el nivel inferior de la memoria, sin traerlo a la cach.
No write allocate
" "
48