Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Grupo ARCOS Estructura de Computadores Grado en Ingeniera Informtica Universidad Carlos III de Madrid
Contenidos
1.
Memoria cach
Introduccin:
Acceso a bloque y principio de proximidad
ATENCIN!
Estas transparencias son un guin para la clase Los libros dados en la bibliografa junto con lo explicado en clase representa el material de estudio para el temario de la asignatura
Para la preparacin de los exmenes se ha de utilizar todo el material de estudios
Contenidos
1.
Memoria cache
Introduccin:
Acceso a bloque y principio de proximidad
proximidad temporal
Bucles
Principios de proximidad
Proximidad espacial Cuando un programa accede a una determinada posicin de memoria, es muy probable que accesos futuros se realicen en posiciones prximas de memoria Proximidad temporal Cuando un programa accede a una determinada posicin de memoria, es muy probable que esa posicin vuelva a ser accedida por el mismo programa en un futuro
CPU
Memoria principal
CPU
Memoria principal
CPU
Memoria principal
10
Memoria Cache
Cantidad pequea de memoria rpida Est entre la memoria principal normal y la CPU
transferencia de palabras transferencia de bloques
CPU
cache
Memoria principal
11
Contenidos
1.
Memoria cache
Introduccin:
Acceso a bloque y principio de proximidad
12
Funcionamiento general
1
lw $t0 ($a0) li $t1 4
3.B.1
CPU
3.A.1 3.B.2
cache
3.B.1
Memoria principal
contenidos de una posicin de memoria. 2. La cache comprueba si ya estn los datos de esta posicin: Si est (acierto de cach),
3.A.1 Se la sirve a la CPU desde la cache (rpidamente).
1. La CPU solicita
13
Rendimiento general
Tm = Pca * Tca + (1-Pca) * (Tmp + Tca) ~ Pca * Tca + (1-Pca) * (Tmp)
contenidos de una posicin de memoria. 2. La cache comprueba si ya estn los datos de esta posicin: Si est (acierto de cach),
3.A.1 Se la sirve a la CPU desde la cache (rpidamente). 1. La CPU solicita
14
Ejemplo
Tm = Pca * Tca + (1-Pca) * (Tmp + Tca) ~ Pca * Tca + (1-Pca) * (Tmp)
1. Tca:
Tiempo de acceso a cach -> 10 ns Probabilidad de estar en cach -> X = 0.1, 0.2, , 0.9, 1.0 10%, 20%, , 90%, 100%
15
Ejemplo
Tm =Tm = X * 10 + (1-Pca) * (Tmp 10) ~ ~ Pca * Tca + (1-X) * (120 + + Tca) Tm = X * 10 + (1-Pca) * (Tmp) 120-110*X Pca * Tca + (1-X) * (120) =
1. Tca:
Tiempo de acceso a cach -> 10 ns Probabilidad de estar en cach -> X = 0.1, 0.2, , 0.9, 1.0 10%, 20%, , 90%, 100%
16
Ejemplo
Tm =Tm = X * 10 + (1-Pca) * (Tmp 10) ~ ~ Pca * Tca + (1-X) * (120 + + Tca) Tm = X * 10 + (1-Pca) * (Tmp) 120-110*X Pca * Tca + (1-X) * (120) =
Tiempo medio de acceso a memoria (ns) 140 120 100 80 60 40 20 0 0
17
10
int vector[1024];
Ejercicio
Datos:
Tmp: 120 ns
int main ( void ) { int i; for (i = 0; i<1024; i++) vector[i] = i; } .data vector: .space 4*1024
Tiempos de acceso: ?
.text .globl main main: li $t0 0 la $t1 vector b2: bge $t0 1024 finb2 mult $t2 $t0 4 add $t2 $t1 $t2 sw $t0 ($t2) add $t0 $t0 1 b b2 finb2: jr $ra
18
int vector[1024];
Ejercicio (sol.)
Datos:
Tmp: 120 ns
int main ( void ) { int i; for (i = 0; i<1024; i++) vector[i] = i; } .data vector: .space 4*1024
Tiempos de acceso:
Por datos:
Na=1.024 T=1.024*120=122.880
.text .globl main main: li $t0 0 la $t1 vector b2: bge $t0 1024 finb2 mult $t2 $t0 4 add $t2 $t1 $t2 sw $t0 ($t2) add $t0 $t0 1 b b2 finb2: jr $ra
T. sin cach = 860.640 ns
Por instrucciones:
Na=2+6*1.024+2=6.148 T=6.148*120=737.760
19
int vector[1024];
Ejercicio
Datos:
Tca: 10 ns Tmp: 120 ns Tamao lnea: 8 palabras
int main ( void ) { int i; for (i = 0; i<1024; i++) vector[i] = i; } .data vector: .space 4*1024 .text .globl main main: li $t0 0 la $t1 vector b2: bge $t0 1024 finb2 mult $t2 $t0 4 add $t2 $t1 $t2 sw $t0 ($t2) add $t0 $t0 1 b b2 finb2: jr $ra
Tiempos de acceso: ?
20
int vector[1024];
Ejercicio (sol.)
Datos:
Tca: 10 ns Tmp: 120 ns Tamao lnea: 8 palabras
int main ( void ) { int i; for (i = 0; i<1024; i++) vector[i] = i; } .data vector: .space 4*1024 .text .globl main main: li $t0 0 la $t1 vector b2: bge $t0 1024 finb2 mult $t2 $t0 4 add $t2 $t1 $t2 sw $t0 ($t2) add $t0 $t0 1 b b2 finb2: jr $ra
T. sin cach = 860.640 ns T. con cach = 94.970 ns Una mejora de casi x9 en este ejemplo
Tiempos de acceso:
Por instrucciones:
Na=2+6*1.024+1=6.148
Primer acceso: 120 ns Siguientes 1+6*1.024: 10 ns ltimo acceso: 120 ns
T=120+6.145*10+120=61.690
Por datos:
Na=1.024
Primer acceso: 120 ns Siguientes 7 pal.: 10 ns
T=1*128*120 + 7*128*10=33.280
21
Contenidos
1.
Memoria cache
Introduccin:
Acceso a bloque y principio de proximidad
22
Organizacin de la M.C.
En la memoria cach, los datos estn organizados en bloques denominados lneas de cach En la memoria principal, los datos estn organizados en bloques El tamao del bloque de M.P. debe coincidir con el tamao de la lnea de M.C. Cada lnea de M.C. almacena un nmero determinado de bytes consecutivos de memoria (Nbytes) La unidad de transferencia entre la M.P. y la memoria cach es el bloque. Entre la M.C. y el procesador es la palabra
23
La memoria cach
Se construye con tecnologa SRAM
Integrada en el mismo procesador. Ms rpida y ms cara que la memoria DRAM.
Direcciones
Direcciones
Procesador
Datos
Memoria cach
Datos
Memoria Principal
24
Tecnologas de RAM
RAM dinmica (DRAM)
Almacena bits como carga en condensadores. Tiende a descargarse: necesita refrescos peridicos.
Ventaja: construccin ms simple, ms almacenamiento, ms econmica Inconveniente: necesita circuitera de refresco, ms lenta.
L2 o nivel 2:
Cache externa: entre L1 y L3 (o entre L1 y M.Principal) Tamao mediano (256KB 4MB) y menor velocidad que L1
L3 o nivel 3:
ltimo nivel antes de M. Principal Tamao mayor y menor velocidad que L2
26 ARCOS @ UC3M 2010-2011
Estructura de Computadores
Ejemplo
Computador:
Tiempo de acceso a cach: 4 ns Tiempo de acceso a bloque de MP: 120 ns.
Si se tiene una tasa de aciertos del 90%. Cul es el tiempo medio de acceso? Tasas de acierto necesarias para que el tiempo medio de acceso sea menor de 10 ns y 5 ns.
27
28
29
30
Organizacin de la M.P.
Bloque 1
0 4 8 12 16
Bloque 2
Bloque 3
Bloque 4
Bloque n
31
Ejemplo:
Computador de 32 bits Memoria direccionada por bytes Acceso a memorial principal por palabras Acceso a la palabra con direccin 0x00000064
Ejemplo:
Computador de 32 bits Memoria direccionada por bytes Acceso a memorial principal por palabras Acceso a la palabra con direccin 0x00000064
00000000000000000000000001000000
Contenidos
1.
Memoria cache
Introduccin:
Acceso a bloque y principio de proximidad
34
Expresiones utilizadas
NB Nmero de bloques de la MP nb nmero de bloque (identificador) asignado de la MP NL Nmero de lneas de la cach nl Nmero de lnea de cach (identificador) asignada NC Nmero de conjuntos de la cach (asociativa por conjuntos) nc Nmero de conjunto asignado de la cach Nbytes Nmero de bytes contiguos. Representa el tamao de un bloque de MP y una lnea de memoria cach Acierto de cach el dato se encuentra en la memoria cach Fallo de cach el dato NO se encuentra en la memoria cach y ha de accederse a M.P. (o al nivel de cach superior)
35
Se divide la M.P. y la M.C. en bloques de igual tamao A cada bloque de M.P. le corresponder una lnea de M.C. (bloque en cach)
4 bytes
M.C.
64 KB
M.P.
16 MB
36 ARCOS @ UC3M 2010-2011
Estructura de Computadores
Se divide la M.P. y la M.C. en bloques de igual tamao A cada bloque de M.P. le corresponder una lnea de M.C. (bloque en cach)
4 bytes
En el diseo se determina:
Tamao Funcin de correspondencia Algoritmo de sustitucin Poltica de escritura
M.C.
64 KB
M.P.
16 MB
37
Diseo de la cach
1.
Tamao
Determina el tamao de las lneas y de los bloques para hacer eficiente el uso de la memoria cach
2.
Funcin de correspondencia:
Asignacin de lneas de cach a bloques de memoria principal Identifica unvocamente cada uno de los bloques almacenados en la memoria cach
3.
Algoritmo de sustitucin
Determina la lnea de cach a reemplazar por un nuevo bloque de memoria principal
4.
Poltica de escritura
Coherencia entre la M.C. y la M.P.
38
Diseo de la cache
Tamao
El tamao total y de los bloques en los que se organiza Por estudios sobre cdigos muy usados se determina
M.C
.
M.P.
39
Diseo de la cache
Funcin de correspondencia
Dnde est en cach los datos de una posicin de M.P.?
M.C
.
M.P.
cto0
palabra de 4 bytes
M.C.
64 KB
cto1
M.C.
64 KB
M.C.
64 KB
M.P.
16 MB
M.P.
16 MB
M.P.
16 MB
40
lnea
Byte
(2)
(2)
Comparador
lnea
Byte
Fallo (3)
42 ARCOS @ UC3M 2010-2011
Estructura de Computadores
14
lnea
2
palabra
Si en lnea est etiqueta, entonces est el bloque en cach Ej: lnea cach bloque de M.P. asoc. 0 0, 214, 2* 214 , 3* 1 1, 214 +1, [V] simple, poco costosa [I] mal patrn acceso fallos
M.C.
64 KB
M.P.
16 MB
ARCOS @ UC3M 2010-2011
Estructura de Computadores
43
Byte
n log2(Nbytes) etiqueta
44
(1)
Comparador
acierto (2)
etiqueta
Byte
Fallo (2)
45 ARCOS @ UC3M 2010-2011
Estructura de Computadores
2
palabra
Si hay un lnea con etiqueta en la cach, est all el bloque [V] indep. del patrn de acceso [I] bsqueda costosa
M.C.
64 KB
M.P.
16 MB
46 ARCOS @ UC3M 2010-2011
Estructura de Computadores
conjunto
Byte
47
(2)
(2)
Comparador
Byte
Fallo (3)
48 ARCOS @ UC3M 2010-2011
Estructura de Computadores
12
conjunto
2
palabra
palabra de 4 bytes
Si hay un lnea con etiqueta en el conjunto conjunto, est all el bloque en cach [V] lo mejor de directa y asociativa [I] bsqueda menos costosa
M.C.
64 KB
M.P.
16 MB
49 ARCOS @ UC3M 2010-2011
Estructura de Computadores
Diseo de la cache
Algoritmo de sustitucin
M.C
. Si la cach est llena y hay un fallo, Qu bloque se quita? Polticas de reemplazo: M.P. LRU (Least recently Used) FIFO (First in First out) LFU (Least Frequently Used) Aleatorio
50
Algoritmo de sustitucin
Correspondencia directa:
No hay eleccin posible Para cada bloque/palabra solo hay una posible lnea 214 lneas de 4 bytes
e
palabra de 4 bytes
M.C.
64 KB
M.P.
16 MB
ARCOS @ UC3M 2010-2011
Estructura de Computadores
51
Diseo de la cache
Poltica de escritura
La informacin en la memoria cach se encuentra replicada . Mantener la cocherencia entre la informacin en memoria cach y memoria principal Ej.: write-back (velocidad) o write-through (coherencia -multicore, I/O DMA, etc.-)
M.C
M.P.
52
Poltica de escritura
Escritura inmediata:
La escritura se hace tanto en M.P. como en cache [V] Coherencia [I] Mucho trfico
Escritura diferida:
La escritura solo se hace en la cach, indicando en un bit que no est volcada la lnea en M.P. Al sustituir el bloque (o cuando trfico con M.P.) se escribe en M.P. [V] Velocidad [I] Coherencia + inconsistencia
M.C.
M.P.
ARCOS @ UC3M 2010-2011
Estructura de Computadores
53
Poltica de escritura
Ej: CPU multicore con cach por core
Las escrituras en cach solo son vistas por un core Si cada core escribe sobre una misma palabra, cal es el resultado final?
e
M.C.1
e
M.C.2 M.P.
54
Ejercicio (1/2)
Considere un computador de 32 bits con las siguientes caractersticas:
Memoria fsica instalada de 256 MB con un tiempo de acceso de 70 ns. Direccionamiento de la memoria por bytes. Tamao de la memoria cach de 64 KB. Tamao de la lnea 64 bytes. La cach es asociativa por conjuntos de 4 vas. El tiempo de acceso a la cach es de 5 ns y el tiempo de penalizacin en caso de fallo es de 100 ns.
55 ARCOS @ UC3M 2010-2011
Estructura de Computadores
Ejercicio (2/2)
Se pide:
a) b) c)
d)
e)
Cuntos bloques tiene la memoria principal? (0,25 puntos) Cuntos conjuntos tiene la memoria cach? (0,25 puntos) Dada una direccin de memoria, indique qu partes de la direccin se utilizan para identificar la etiqueta, el conjunto y el byte dentro de la lnea. Indique tambin el nmero de bits de cada parte. (1 punto) Dada la siguiente direccin de memoria 0000 0011 1100 0011 0000 0000 1111 1000. En caso de encontrarse en la memoria cach en qu conjunto se almacenara? (0,25 puntos) Si el tiempo medio de acceso al sistema de memoria es de 8 ns cul es tasa de acierto necesaria para lograr este tiempo? (0,25 puntos)
ARCOS @ UC3M 2010-2011
Estructura de Computadores
56
Solucin
a)
La memoria tiene un tamao de lnea de 64 bytes = 26 bytes. Por tanto, el nmero de bloques de memoria principal ser nbloques = tamao memoria / tamao de lnea = 256 MB / 64 = 256 x 220 / 64 = 256 * 214 bloques
b)
El nmero de lneas de memoria cach es nlineas = tamao memoria / tamao de lnea = 64 KB / 64 bytes = 216 / 26 = 210 = 1024 lneas Conjuntos = N lneas / N vas = 1024 / 4 = 256 conjuntos.
57
Solucin
c)
La direccin de una cach asociativa por conjuntos se divide en tres partes: etiqueta, conjunto y byte dentro de la lnea.
Byte: el tamao de la lnea es 64 bytes = 26bytes. Se necesitan, por tanto 6 bits para identificar el byte dentro de la lnea. Conjunto: Hay 256 conjuntos = 28, por lo que se necesitan 8 bits para identificar un conjunto Etiqueta: para la etiqueta se emplean el resto de los bits de la direccin = 32 6 8 = 18
La direccin quedara:
Etiqueta (18 bits) Conjunto (8 bits) Byte (6 bits)
58
Solucin
d)
El clculo del tiempo medio de acceso a memoria se hace con la siguiente frmula: Tmedio = h * tc + (1-h) * tfallo 8 = h * 5 + (1-h) * 100 Despejando h, se tiene h = 92/95 = 0,967 (tanto por uno) Es decir, una tasa de acierto del 96,7 %
59