Download Memoria Caché

Document related concepts
no text concepts found
Transcript
7.  MEMORIA
1
MEMORIA
1.  Estructura Jerárquica de la Memoria
2.  Memoria Caché
3.  Memoria Principal
4.  Memoria Virtual
2
MEMORIA
1.  Estructura Jerárquica de la Memoria
3
Estructura Jerárquica de la Memoria
No es única
Coste por bit ê
Registros
Capacidad é
Caché N1-N2
Tiempo de acceso é
Frecuencia de acceso ê
Memoria Principal
Disco Magnético
Cinta Magnética
¿
Memoria
Quién se ocupa
del transvase
entre memorias
Disco Óptico
?
- La CPU/MMU
- El S. O.
4
Estructura Jerárquica de la Memoria
Registros
Cache
Memoria Multinivel
Tamaño:
Oct-KB
KB-MB
GB
TB
Velocidad:
250 ps.
1 ns.
100 ns.
10 ms.
CPU
Memoria
Bus de
Memoria
Memoria
Principal
Bus de
E/S
Dispositivos
de E/S
5
MEMORIA
2.  Memoria Caché
6
Memoria Caché
Fundamento
Por qué es tan útil
una memoria tan pequeña
¿
?
Principio de la
Localidad de Referencia
Los accesos a memoria que realiza la CPU
no están uniformemente distribuidos
por todo el espacio de direccionamiento, sino
que se concentran, temporalmente, solamente
en ciertas áreas de la memoria.
Memoria
7
Memoria Caché
Fundamento
Principio de
Localidad de Referencia
Localidad
Temporal
Localidad
Espacial
Es muy probable
repetir
instrucciones
Es muy probable
ejecutar
instrucciones
cercanas
Memoria
Unidad de
Transferencia:
BLOQUE
8
Memoria Caché
CPU
(bytes)
Palabra
•  El espacio de la memoria caché
está dividido en líneas
•  Nº Líneas << Nº Bloques
•  Tamaño Bloque potencia de 2
•  Tamaño Línea = Tamaño Bloque
Caché
(KB-MB)
Bloque
Funcionamiento
Buscar en la caché
Acierto
Memoria
Principal
(GB-TB)
Fallo
Asignar Línea
Traer Bloque
Entregar Dato
Memoria
9
Memoria Caché
Correspondencia
Directa
Políticas de
Ubicación
Asociativa
Asociativa de
Conjuntos
Cuestiones de
Diseño
Políticas de
Sustitución
Tipo
Estadístico
Tipo NO
Estadístico
Políticas de
Actualización
Escritura
Inmediata
Escritura
Diferida
Tamaños
Nº Caches
Memoria
10
Memoria Caché
Políticas de Ubicación
Correspondencia Directa
Caché
b+d
etiq.
datos
Dir. de memoria
Bloque
Despl.
etiq.
línea
b-l
l
...
d
...
...
Acierto
Falta de caché
b
LJ
+
Comp.
Memoria
L0
...
...
d
pal. 0
pal. 1
pal. 2
pal. 3
...
...
pal. 4j
pal. 4j+1
pal. 4j+2
pal.
4j+2
pal. 4j+3
...
B0
BJ
Memoria
principal
11
Memoria Caché
Ejemplo:
Bloque 0
Bloque 1
Bloque 2
Bloque 3
Bloque 4
Bloque 5
Bloque 6
Bloque 7
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Memoria
Arquitectura
de Computadores
Memoria principal de 16 palabras
Bloques de 2 palabras
Memoria caché de 4 líneas
Línea 0
Línea 1
Línea 2
Línea 3
12
Memoria Caché
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
Memoria
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
à
à
à
à
à
à
à
à
à
à
à
à
à
à
à
à
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
0
0
1
1
2
2
3
3
0
0
1
1
2
2
3
3
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Línea
Línea
Línea
Línea
0
1
2
3
Línea
Línea
Línea
Línea
0
1
2
3
Línea
Línea
Línea
Línea
0
1
2
3
Línea
Línea
Línea
Línea
0
1
2
3
Línea
Línea
Línea
Línea
0
1
2
3
Línea
Línea
Línea
Línea
0
1
2
3
Línea
Línea
Línea
Línea
0
1
2
3
Línea
Línea
Línea
Línea
0
1
2
3
13
Memoria Caché
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
à
à
à
à
à
à
à
à
à
à
à
à
à
à
à
à
Memoria
Arquitectura
de Computadores
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
0
0
1
1
2
2
3
3
0
0
1
1
2
2
3
3
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
14
Memoria Caché
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
à
à
à
à
à
à
à
à
à
à
à
à
à
à
à
à
Memoria
Arquitectura
de Computadores
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
0
0
1
1
2
2
3
3
0
0
1
1
2
2
3
3
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
15
Memoria Caché
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
à
à
à
à
à
à
à
à
à
à
à
à
à
à
à
à
Memoria
Arquitectura
de Computadores
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
Línea
0
0
1
1
2
2
3
3
0
0
1
1
2
2
3
3
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
Desplazamiento
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
16
Memoria Caché
Formato de una dirección en
correspondencia directa:
Etiqueta
Línea
Desp.
1
2
1
En el ejemplo
Memoria
Arquitectura
de Computadores
17
Memoria Caché
Políticas de Ubicación
Correspondencia Asociativa
Dir. de memoria
Bloque
Despl.
Acierto Fallo
etiq
l
Comp.
Acierto Fallo
l
Comp.
Acierto Fallo
Memoria
etiq
Línea 1
Comp.
Línea 2
etiq
Línea 0
l
l
l
l
Caché
18
Memoria Caché
Políticas de Ubicación
Correspondencia Asociativa de Conjuntos
b+d
Etiq
Dir. de memoria
Despl.
Bloque
etiq.
b-c
conjunto
...
c
C0
d
+
...
Comparador
C1
+
Acierto
Caché
Falta de caché
Memoria
b
d
pal. 0
pal. 1
pal. 2
pal. 3
...
...
pal. 4j
pal. 4j+1
pal. 4j+2
B0
BJ
pal. 4j+3
.
Mem. principal
...
19
Memoria Caché
Políticas de Sustitución
Caché llena
Directa
Quitar el
Bloque Antiguo
Asociativa
Sustituir
alguna línea
Asociativa
Conj.
Sustituir línea
del conjunto
Política de Sustitución
Memoria
20
Memoria Caché
LRU
Least Recently Used
De Tipo
Estadístico
LFU
J Bueno en general
L Falla con algunas
matrices
Least Frequently Used
Políticas
de Sustitución
FIFO
First In First Out
De Tipo NO
Estadístico
Random
J Buena tasa de aciertos
J No falla con las matrices
J  Fácil y económico
Nº aleatorio entre 0 y Nº Líneas-1
Memoria
21
Memoria Caché
Políticas de Actualización
Propiedad de
la caché
Coherencia de la información entre
las distintas memorias
Actualizar MP
Acierto
Escritura
en caché
Retrasar la
actualización
Traer bloque
a caché
Fallo
Escribir dato
en MP
Memoria
Escritura Inmediata
(Write Through)
Escritura Diferida
(Write Back)
2 accesos a
MP
22
Memoria Caché
Políticas de Actualización
Escritura Inmediata
J No hay incoherencia
L Mucho tráfico: cada escritura en caché una
actualización en MP
Escritura Diferida
J Menos tráfico: muchas escrituras en caché
una sola actualización en MP
L  Incoherencia
Multiprocesadores
DMA
L  Al reemplazar un bloque “sucio” se
penaliza el acceso actual con la escritura
del bloque
Memoria
Buffer de escritura
Su actualización se
solapa con la ejecución
de las instrucciones
23
Memoria Caché
SPEC CPU 2000 Benchmarks (2003)
Tasa de Fallos
Tamaño de la Caché
Tamaño de la caché
•  Barata
•  Rápida
•  Muchas faltas
Memoria
•  Pocas faltas
•  Cara
•  No tan Rápida
•  Poca mejora
24
Memoria Caché
Tamaño de la Caché
Memoria
CPU
TAMAÑO CACHÉ L1
80486DX and DX2
8 KB L1
80486DX4
16 KB L1
Pentium
16 KB L1
Pentium Pro
16 KB L1
Pentium MMX
32 KB L1
AMD K6 and K6-2
64 KB L1
Pentium II and III
32 KB L1
Celeron
32 KB L1
Pentium III Cumine
32 KB L1
AMD K6-3
64 KB L1
AMD K7 Athlon
128 KB L1
AMD Duron
128 KB L1
AMD Athlon Thunderbird
128 KB L1
PowerPC G4
64 KB L1 (32 + 32)
PowerPC G5
96KB L1 (64+32)
Pentium IV
104 KB (96 + 8)
A partir de aquí todos
tienen más niveles de caché
25
Memoria Caché
Tamaño del Bloque
↑ Localidad
espacial
↓ Localidad
Temporal
Memoria
26
Memoria Caché
Tipos de fallo de caché
•  Por Carga inicial (Compulsory)
•  Carga inicial de la caché.
•  Estos fallos se producen aun con una caché de tamaño infinito
•  De Capacidad (Capacity)
•  Cuándo la caché no puede almacenar todos los bloques de un
programa en ejecución
•  Por Conflicto (Conflict)
•  Aun habiendo líneas libres no se puede cargar un bloque
•  Suele suceder en cachés con un grado bajo de asociatividad
(correspondencia directa o asociativa por conjuntos de pocas vías)
Tasa de Fallo = Nº Fallos / Nº Accesos
Memoria
27
Memoria Caché
Tipos de fallo de caché
0.14
1-way
Miss Rate per Type
0.12
2-way
0.1
4-way
0.08
8-way
0.06
Capacity
0.04
0.02
Cache Size (KB)
Memoria
128
64
32
16
8
4
2
1
0
Compulsory
28
Memoria Caché
Optimización
Reducción del
tiempo de
acceso
Reducción de
la penalización
por fallo
optimización
Reducción de
la tasa de
fallos
Incremento del
paralelismo
Incremento del
ancho de
banda
Memoria
29
Memoria Caché
Optimización
Reducción del tiempo de acceso: Caches Pequeñas
2,5
Tiempo acceso (ns)
2
1,5
1-way
Consume tiempo:
• Búsqueda del bloque
• Etiquetas grandes
• Nº Comparadores
2-way
4-way
1
8-way
0,5
0
16 KB
32KB
64KB
128KB
256KB
Tamaño Caché
512KB
1MB
Correspondencia
Directa y
Cachés multinivel
Configuración: bloque 64 bytes y un banco
Memoria
30
Memoria Caché
Optimización
Caches
Multinivel
Acierto
L1:
Fallo
TL1 * PAL1
(1-PAL1)
Acierto
L2:
CPU
PAL2 * (1-PAL1)* TL2
Fallo
Caché L2
Acceso a Memoria
Caché L1
Reducción del tiempo de acceso: Caches Pequeñas
TL1
PAL1
TL2
PAL2
Memoria
Principal
TMP
(1-PAL1)* (1-PAL2 )* TMP
TMEDIO = TL1 * PAL1 + PAL2 * (1-PAL1)* TL2 + (1-PAL1)* (1-PAL2 )* TMP
Memoria
31
Memoria Caché
Optimización
Reducción del tiempo de acceso: Predicción
•  Se parte de una caché con correspondencia asociativa de
conjuntos (menos conflictos de colisiones que la correspondencia
directa)
•  Se intenta obtener el tiempo de acceso de una memoria de
correspondencia directa
•  Se predice que línea del conjunto va a ser accedida
•  Mediante la predicción se consigue que la comparación de
etiquetas y la lectura de bloque se realice en paralelo
•  La predicción tiene un acierto elevado (85%)
•  Cuando la predicción falla se busca el bloque en el resto de líneas
del conjunto (penalización)
•  Cada línea tiene asociados unos bits para realizar la predicción
•  Pentium 4 y MIPS R10000 utilizan este esquema
Memoria
32
Memoria Caché
Optimización
Reducción del tiempo de acceso: Caché de Trazas
•  Similar a una caché de instrucciones
•  En lugar de almacenar bloques de código (localidad espacial)
almacena las secuencias de instrucciones que van a ejecutarse
(localidad temporal)
•  Los saltos pueden provocar que se almacenen en la caché dos
secuencias de código de acuerdo al sentido del salto
•  Mayor dificultad en los mecanismos de gestión de direcciones
(ubicación)
•  Bloques de mayor tamaño
•  Cara y poco utilizada
•  Pentium 4 la utiliza para almacenar micro-ops (instrucciones ya
decodificadas)
Memoria
33
Memoria Caché
Optimización
Incremento del ancho de banda: Caches de nivel 1 separadas
Caché L1
Unificada
Instrucciones
y Datos
Caché L1
Instrucciones
Caché L1
Arquitectura
Harvard
Datos
J  Equilibrio automático
de instrucciones y datos
J  En procesadores segmentados
evita riesgos estructurales
J Más simple de diseñar
e implementar
J  Todos los procesadores
modernos la utilizan
Memoria
34
Memoria Caché
Optimización
Incremento del ancho de banda: Caches segmentadas
• 
• 
• 
• 
Segmentar los accesos a la caché
Consiguiendo que se lleven a cabo varios accesos a memoria
No se reduce el tiempo de acceso
La duración de la etapa está en función de la duración total y del nº
de etapas
1 ciclo
Load 1
Load 2
Load 3
1 ciclo
1 ciclo
1 ciclo
1 ciclo
1 ciclo
Mayor frecuencia
de Reloj
Load 1
Load 2
Load 3
Memoria
35
Memoria Caché
Optimización
Incremento del ancho de banda: Caches No Bloqueantes
•  Un fallo de caché provoca que no se atiendan más accesos
•  Comportamiento pernicioso en procesadores superescalares
–  Una falta de caché en escritura provoca que otras instrucciones no
puedan terminar aunque su acceso sea un acierto
•  Las caches no bloqueantes siguen atendiendo peticiones en
presencia de un fallo
•  Cuantos más accesos se solapen mayor reducción de la
penalización por fallo de caché en los programas
Memoria
36
Memoria Caché
Optimización
Incremento del ancho de banda: Caches Multibanco
Caché Monolítica
Línea 0
1
2
3
4
5
Banco 1
Banco 0
Línea 0 Bloque 0
1
2
3 Bloque 4
Línea 0
1 Bloque 1
2
3
Banco 2
Línea 0
1
2
3 Bloque 2
Banco 3
Línea 0 Bloque 3
1
2
3
6
7
8
9
10
11
12
13
Memoria
Dir. de memoria
Bloque
Despl.
Banco = Bloque MOD 4
•  Funciona bien cuando
los accesos están repartidos
•  L2 AMD Opteron 2 bancos
•  L2 SUN Niagara 4 bancos
37
Memoria Caché
Optimización
Reducción de la penalización por fallo: Caché de victimas
Línea 0
Ø  Memoria muy pequeña
Ø  Fallo L1
ü  Comprobar victimas
Ø  LRU cuando está llena
Ø  Admite algún esquema
predictivo
1
2
3
4
5
Línea 0
1
2
3
6
7
8
Caché
Nivel 2
Caché Asociativa
9
10
11
Últimos bloques
expulsados de la caché L1
12
13
Caché L1 Correspondencia
Directa
Memoria
38
Memoria Caché
Optimización
Reducción de la penalización por fallo: Buffer de Escritura
CPU
Cache L1
store
Memoria
Principal
Buffer Escritura
• 
• 
• 
• 
• 
• 
Para caches de escritura directa (Write Through), aunque también se emplea
con escritura diferida
El procesador escribe en la caché y en el Buffer continuando con la
ejecución de instrucciones
El controlador de memoria vuelca el Buffer a memoria (L2 o principal)
El Buffer suele tener 4 entradas y política FIFO
Funciona bien cuando la frecuencia de las escrituras es menor que 1 /
Tacceso memoria
Cuando el Buffer está lleno el procesador espera por una entrada libre
Memoria
39
Memoria Caché
Optimización
Reducción de la penalización por fallo: Buffer de Escritura y Write Merging
• 
• 
En el Buffer se van introduciendo las palabras (store) generadas por el
procesador una en cada entrada
Una optimización del Buffer consiste en comprobar si cada nueva palabra
puede combinarse con las ya existentes para formar bloques completos
Escrituras
Escrituras
100
0
100
100
0
108
1
108
108
1
116
2
116
116
2
124
3
124
124
3
Posiciones
Consecutivas
Memoria
LLENO
32 octetos
Sin Write Merging
100
108
116
124
LIBRES
32 octetos
Con Write Merging
40
Memoria Caché
Optimización
Reducción de la penalización por fallo: Palabra crítica primero
y rearranque rápido
• 
• 
El procesador en un acceso a memoria sólo necesita una palabra no el
bloque completo
Por lo tanto no es necesario que espere por todo el bloque
Palabra Crítica primero
CPU
CPU)
CPU
CPU)
1. load
4. Word (M)
CACHE
3. Word
4. Update
1. load
CACHE
2. Get Block
MEMORIA PRINCIPAL
Memoria
Rearranque Rápido
3. Update (0,..,M,..N-1)
2. Get Block
MEMORIA PRINCIPAL
41
Memoria Caché
Optimización
Reducción de tasa de fallos: Optimizaciones del compilador
• 
• 
• 
No modifica la estructura de la caché
Reordenación de código para explotar la localidad tanto espacial como
temporal
Se optimiza la disposición del código y el acceso a los datos
int x[10][50];
int x[10][50];
for (j=0; j<50; j++)
for (i=0; i<10; i++)
x[i][j] = 2*x[i][j];
for (i=0; i<10; i++)
for (j=0; j<50; j++)
x[i][j] = 2*x[i][j];
$80
0,0
Se accede
por filas
$84 $88
0,1
0,2
9,47 9,48 9,49
Disposición en memoria de x
(almacenamiento por filas)
Memoria
42
Memoria Caché
Optimización
Reducción de tasa de fallos y penalización: HW prefetch
• 
Cargar los bloques en caché antes de ser usados sin interferir en el
funcionamiento normal
2. Get Block (N)
1. Fetch
CPU
Cache L1
Instrucciones
4. Instr.
3. Block (N)
4. Block (N+1)
Memoria
Principal
Stream Buffer
if Fallo_Cache then
if Block (X) in Stream Buffer
Update_Cache (Block (X))
GetBlock_MP (X+1)
else // No está en Stream Buffer
GOTO “Paso 2” // GetBlock(N)
endif
Memoria
43
Memoria Caché
Optimización
Reducción de tasa de fallos y penalización: SW prefetch
• 
• 
La carga anticipada de bloques en la caché la realiza el compilador
insertando instrucciones especiales de pre-carga de bloques
Al igual que la técnica anterior la memoria debe tener el suficiente ancho de
banda para soportar este mecanismo
int x[10][50];
compilador
for (i=0; i<10; i++)
for (j=0; j<50; j++)
x[i][j] = 2*x[i][j];
• 
• 
• 
• 
Elementos de x de tamaño 64 bits
Almacenamiento por filas
Bloques de caché de 128 bits
50 % tasa de fallo (1 de cada 2 accesos)
Memoria
int x[10][50];
for (i=0; i<10; i++) {
PRE_FECTH (x[i+1][0]);
for (j=0; j<50; j++) {
PRE_FETCH (x[i][j+5]);
x[i][j] = 2*x[i][j];
}
}
44
MEMORIA
3.  Memoria principal
45
Memoria Principal
Performance
(log)
El problema …
Memoria
46
Memoria Principal
Parámetros rendimiento de la memoria
•  Latencia
§  Tiempos de acceso: Tiempo entre solicitar y recibir un dato
§  Ciclo: Tiempo entre dos accesos
•  Ancho de Banda
§  Transferencia de grandes cantidades de información
(bloques, páginas, etc.)
Tipos de memoria
•  DRAM
§  Memoria Principal
•  SRAM
§  Memoria Caché
Memoria
47
Memoria Principal
DRAM
Dynamic Random Access Memory
• 
• 
• 
• 
• 
• 
• 
• 
• 
Primera DRAM Intel 1103 – 1 Kbit en un único Chip
Hoy en día más de 4 GB por chip
Un transistor y un condensador por bit
Necesitan refresco (cada 8 ms, <5% del tiempo)
§  No permite accesos
Tras una lectura es necesario volver a refrescar la información
Ciclo de memoria mayor que el tiempo de acceso
Organizada en una matriz de N Filas x N columnas de M bits
§  Reducir el nº de pines al multiplexar Filas y Columnas
Cada acceso un ciclo de RAS/CAS
§  RAS: Row Access Strobe
§  CAS: Column Access Strobe
Encapsulada en pequeñas tarjetas DIMM (Dual Inline Memory Modules)
§  De 4 a 16 DRAM
Memoria
48
Memoria Principal
DRAM
Estructura
CACHÉ
L2
Backside
Bus
CPU
CACHÉ
L1
Memoria
NORTH
BRIDGE
DRAM
Controller
DRAM
Bus
PCI
USB
APM
Otros Dispositivos
Frontside
Bus
SOUTH
BRIDGE
DRAM
49
Memoria Principal
DRAM
64 x1bit
Estructura
Bit Line
Decodificador de 3 a 8 (Row)
Buffer de Direcciones
Word Line
Celda de
memoria
Decodificador de 3 a 8 (Column)
Memoria
50
Memoria Principal
DRAM
Estructura: Organización Física
R
o
w
x2 DRAM
x4 DRAM
x8 DRAM
Column
Column
Column
Array de
Celdas
(1024x1024
bits)
2M bit
Memoria
R
o
w
Array de
Celdas
(1024x1024
bits)
4M bit
R
o
w
Array
Arrayde
de
Celdas
Celdas
(1024x1024
bits)
8M bit
51
Memoria Principal
DRAM
Prestaciones
Año
Tamaño T. Acceso(ns) Ciclo (ns)
1980
64K bit
150-180
250
1983
256K bit
120-150
220
1986
1M bit
100-120
190
Tamaño x4 cada tres años
1989
4M bit
80-100
165
T. Acceso x25% cada tres años
1992
16M bit
60-80
120
Ciclo x15% cada tres años
1996
64M bit
50-70
110
1998
128M bit
50-70
100
2000
256M bit
45-65
90
2002
512M bit
40-60
80
2004
1G bit
35-55
70
2006
2G bit
30-50
60
Memoria
52
Memoria Principal
DRAM
Latencia
DRAM
B
CPU
A
Controlador
de Memoria
C
D
E
F
A.  Encolado de la petición de acceso a memoria (posible espera)
B.  Petición de acceso enviada al Controlador de Memoria
C.  Conversión de la petición de acceso a órdenes para la DRAM (posible
espera)
D.  Envío de órdenes a la DRAM
E.  Fijar Fila (RAS) y Columna (CAS) en la matriz de celdas
F.  Resultado del acceso
Latencia DRAM = A + B + C + D + E + F
Memoria
53
Memoria Principal
DRAM
Ciclo de Lectura: Modo Normal
RAS
CAS
Dirección
FILA
Datos
Memoria
COL
FILA
DATO
COL
DATO
54
Memoria Principal
DRAM
Ciclo de Lectura: Modo Fast Page
§  Explota la localidad de los datos
§  Página = FILA
§  El tiempo de acceso al primer dato
idéntico al de la DRAM convencional
RAS
CAS
Dirección
FILA
Datos
Memoria
COL
COL
DATO
COL
DATO
DATO
55
Memoria Principal
DRAM
Ciclo de Lectura: Modo Extended Data Out (EDO)
§  Reduce el tiempo de acceso a posiciones
consecutivas de memoria
§  Solapa datos con direcciones
Ø  CAS cambia antes de que la memoria
haya entregado el dato anterior
RAS
CAS
Dirección
FILA
Datos
Memoria
COL
COL
DATO
COL
DATO
COL
DATO
DATO
56
Memoria Principal
DRAM
Ciclo de Lectura: Modo Ráfaga (Burst)
RAS
§  Utiliza un mecanismo de autoincremento para
calcular la siguiente columna
§  Los accesos aleatorios no son más rápidos
§  Muy útil para ciertas aplicaciones (streaming)
§  Tiempos de acceso 6-1-1-1 (primeros 64 bits y sucesivos)
CAS
Dirección
FILA
Datos
Memoria
COL
DATO
DATO
DATO
DATO
57
Memoria Principal
SDRAM
Synchronous DRAM
§  DRAM FPM y DRAM EDO son asíncronas
Ø  Controlador de memoria y DRAM utilizan un protocolo mediante señales
para realizar/sincronizar los accesos a memoria
§  El protocolo de acceso introduce varios ciclos de latencia
§  Se sustituye el protocolo de acceso por uno nuevo basado en la
señal de reloj de la placa base
Ø  Los eventos suceden de acuerdo a esta nueva señal (CLK)
Ø  Se simplifica el controlador de memoria
§  Suelen disponer de
Ø  Varios bancos de memoria (entrelazada). De 2 a 4 bancos
Ø  Mayor ancho de banda
§  Bus de Datos de 64 bits
Memoria
58
Memoria Principal
SDRAM
Ciclo de lectura
CLK
RAS
CAS
Activar Banco
Comandos
ACT
READ
Direcciones
FILA
Datos
Memoria
COL
DATO
DATO
DATO
DATO
59
Memoria Principal
SDRAM
Bancos de memoria (entrelazada)
Banco 0
Banco 1
Banco 0
Banco 1
0
1
2
N
N+1
N+2
0
2
4
1
3
5
N-2
N-1
2N-2
2N-1
2N-4
2N-2
2N-3
2N-1
BUFFER
BUFFER
BUFFER
BUS
BUS
Memoria NO entrelazada
Memoria Entrelazada
Memoria
60
Memoria Principal
SDRAM
Oct. 2
……
Banco N
Oct. 1
Banco 2
CLK
Banco 1
Banco 0
Bancos de memoria (entrelazada)
Accesos No Entrelazada
CLK
Oct. 1
Oct. 2
Oct. 3
Oct. 4
Accesos Entrelazada
Memoria
Palabra
m bits
Banco
k bits
Dirección
61
Memoria Principal
DDR-SDRAM
Double Data Rate SDRAM
•  Aparece en los procesadores AMD Athlon
•  Transfieren más información por cada ciclo
Ø  Utilizan ambos flancos de la señal de reloj
Ø  Prefetching para aumentar el nº de bits transferidos entre la matriz de
celdas de memoria y el buffer de memoria
Ø  Señalización más rápida
DDR SDRAM
Matriz
de
Memoria
Bits por ciclo
Memoria
64 bits
Bus de memoria
Buffer
Bus de Datos
DDR1
DDR2
DDR3
x2
x4
x8
62
Memoria Principal
PREGUNTA 3
100 Mhz
x 2 Datos por ciclo
x 8 Octetos
DDR-SDRAM
Double Data Rate SDRAM
Tipo
Nombre
Nombre del
módulo
Bus de
memoria
Ancho de
banda máx.
100 Mhz
133 Mhz
166 Mhz
200 Mhz
100 Mhz
133 Mhz
166 Mhz
200 Mhz
100 Mhz
133 Mhz
166 Mhz
200 Mhz
Memoria
63
Memoria Principal
RDRAM
Rambus DRAM
Mover pocos datos muy rápidamente
• 
• 
• 
• 
• 
• 
• 
Aparece en los procesadores Intel Pentium III y IV
Mayor frecuencia de reloj que las memorias DDR
Bus de datos de 16 bits
Peticiones de acceso simultáneas
Ancho de banda (pico) de 2.4 GB/s
Hasta 32 memorias en un único canal
Mayor precio que DDR
Memoria
64
Memoria Principal
Módulos de Memoria DIMM
Dual In-line Memory Module
§  Bus de datos de 64 bits
§  Cada DIMM contiene de 8 a 16 chips DRAM (más uno de paridad)
Ø  8 chips DRAM si son de 8 bits (x8)
Ø  16 chips DRAM si son de 4 bits (x4)
§  Configuraciones disponibles:
Ø  Una cara, un bloque (una única señal de selección CS*)
Ø  Doble cara, un bloque (una única señal de selección)
Ø  Doble cara, doble bloque (dos señales de selección)
Ø  Doble cara, cuatro bloques (cuatro señales de selección)
§  Número de contactos:
Ø  SDRAM 168 pines
Ø  DDR1 184 pines
Ø  DDR2 y DDR3 240 pines
Memoria
65
Memoria Principal
Módulos de Memoria DIMM
Dual In-line Memory Module
Chip DRAM
de 8 bits
Memoria
66
Resumen
Caché
Memoria
SRAM
Static
Random
Access
Memory
DRAM – Fast Page
Asíncrona
DRAM – EDO
DRAM – Burst
Principal DRAM
Dynamic
Random
Access
Memory
SDRAM
Síncrona
Rambus
Memoria
DDR1
DDR2
DDR3
67
MEMORIA
4.  Memoria virtual
68
Memoria Virtual
Desde hace tiempo ...
§  Los sistemas informáticos son capaces de tener más de
un programa en memoria (multiprogramación)
§  Las necesidades de memoria de todos los programas de
un sistema son superiores a la memoria física
disponible
¿Cómo lo hacen?
Utilizando la memoria secundaria como si
fuera memoria principal
Memoria
69
Memoria Virtual
Concepto
Ø  Separar espacio de direcciones de posición de memoria
§  Direcciones lógicas
§  Direcciones físicas
INDIRECCIÓN
Ø  Mantener en memoria principal las instrucciones y los datos que
con mayor frecuencia se utilizan. Examinando los programas se
observa que ...
§  Existe código que raramente se utiliza
§  Y variables sobredimensionadas
Ø  Dejar en el disco la parte del programa que no se necesite
Ø  Antes de que la CPU pueda extraer una instrucción o acceder
a un dato es necesario que estén en memoria principal
Memoria
70
Memoria Virtual
Memoria
CPU
LD R1,4(R10)
Principal
Dir. Virtual
$100
MMU
Dir. Física
Bus del sistema
Dir. Virtuales
§  Forman el espacio de
Direccionamiento Virtual
§  En los microprocesadores
actuales entre 232 y 264
direcciones
La Paginación es una forma de
implementar la Memoria Virtual
§ Los procesos generan Direcciones Virtuales (lógicas)
§ Permite que los procesos estén parcialmente cargados y en
posiciones no contiguas de memoria
Memoria
71
Memoria Virtual
Espacio Dir.
Virtual
Memoria
Principal
(Dir. Físicas)
Pág 0
Pág 1
Pág 2
Pág 3
Pág 4
...
...
Marco 0
Marco 1
...
Marco N
Dividido en Marcos
...
Pág N
Dividido en páginas
¿Cómo conocer
dónde están las
páginas?
Cuyo tamaño sea múltiplo
del bloque de disco
Memoria
Tema 4 Gestión de
72
Memoria Virtual
Tabla de Páginas
§  Formada por una entrada por cada página virtual
§  Indexada por el número de página
Nº Pág.
0
P
E
R
PR
Marco
1
...
N
Tabla de páginas
El tamaño de la
entrada es múltiplo
de la palabra del
procesador
Memoria
Bit de
Ensuciado
Bit de
Presencia
Bits de
Protección
RWX
Bit de
Referencia
Marco de
memoria
principal
73
Memoria Virtual
Traducción de Direcciones
Dir. Virtual
Marcos
0
Dir. Física
1
...
Desplazamiento
N
CPU
Pág.
M.P.
+
Reg. Base TP
0
1 1
...
Marco
N
Tabla de páginas
Pág 0
Pág 1
Pág 2
...
Pág N
Disco
Memoria
74
Memoria Virtual
Falta de página
........................
ld R1, 10(R2)
........................
1
Página: 2
Despl.: 312
Continuar
P
1
N
0
0
X
FaltaPág
$2312
2
0
1
2
3
4
5
...
Tabla de
páginas
Memoria
4
S.O.
3
3
Actualizar
Tab. Pág
3
0 Pág
Pág 22
Cargar Pág.2
1
...
N Pág 0
Memoria
Principal
Pág 1
Pág
Pág 22
...
Pág N
Disco
75
Memoria Virtual
Traducción de direcciones: TLB
Translation Lookaside Buffer
§  Utilizando una caché con la traducción de las direcciones más frecuentes
MMU
Dir. Virtual
Acierto
Marco
Pág. Despl.
Etiqueta
Etiq. -- Marco
Actualizar
TLB
Dir. Física
+
Marco
Tabla de
Páginas
Fallo
Reg. Base TP
Memoria
76
Memoria Virtual
TLB
Estructura
§  Suelen tener un número reducido de entradas (de 128 a 256)
§  Correspondencia directa o asociativa
§  Los procesadores disponen de instrucciones especiales para manipularla
(insertar e invalidar entradas)
Entrada de la TLB
Id. de Proceso
¿Qué ocurre
cuando hay un
cambio de
contexto?
Memoria
Bit de
Ensuciado
Nº de Página
ETIQUETA
Bit de
Validez
Marco de
M.P.
Bits de
Protección
77
Memoria Virtual
Esquema general
de Traducción
Dir. Virtual
Acceder TLB
Fallo
Buscar en Tab.
Pág.
Pág. No
encontrada
Excepción
Memoria
Acierto
Acceso
Permitido
Traducir
Dirección
Acceso No
Permitido
Excepción
Pág.
encontrada
Actualizar TLB
Dir. Física
78
Memoria Virtual
Dir. Virtual <64>
L1 cache
tag <27>
L1 data<64B>
Dir. Real <40>
Mem. Vir. Tamaño Pág: 8KB
TLB
256 entradas
Corresp. Directa
Caché L1
Tamaño 8 KB Corr. Directa
Caché L2
Tamaño 4 MB Corr. Directa
Bloque 64 octetos
Memoria
L2 tag <18>
L2 línea <16> L2 Des <6>
L2 cache
tag <18>
L2 data
<64B>
79