Arquitecturas de Memoria

Capitulo 5: Memoria
Fundamentos de Arquitecturas de Computadores
Arquitecturas de Memoria
© 1999 M. Murdocca and V. Heuring
5-2
Contenido
5.1 Jerarquías
5.2 RAM. Memorias de Acceso Aleatorio
5.3 Organización en Circuito Integrado
5.4 Módulos comerciales
5.5 ROM. Memorias sólo-lectura
5.6 Memorias Cache
5.7 Memoria Virtual
5.8 Tópicos avanzados
5.9 Caso de estudio: Intel Pentium Memory System
1999 M. Murdocca and V. Heuring
5-3
Jerarquía
Rápida y cara
Registros
Incremento
en rendimiento
y en costo
Cache
Memoria principal
Memoria secundaria (disco)
Almacenamiento masivo (cinta)
Lenta y barata
1999 M. Murdocca and V. Heuring
5-4
Comportamiento de una celda RAM de 1 bit
Read
D Q
CLK
Select
Data
In/Out
© 1999 M. Murdocca and V. Heuring
5-5
Señales de conexión en RAM
WR
A0-Am-1
Memory
Chip
CS
© 1999 M. Murdocca and V. Heuring
D0-Dw-1
D3 D1
D2 D0
5-6
Memoria de 4 palabras
WR
4 bits x palabra
2-to-4
decoder
00
A0
A1
01
10
11
WR
Word 0
CS
WR
Word 1
CS
WR
Word 2
CS
Chip Select
(CS)
WR
CS
Word 3
Q3 Q1
Q2 Q0
© 1999 M. Murdocca and V. Heuring
5-7
Representación simplificada de 4x4 RAM
D3 D2 D1 D0
WR
A0
4×4 RAM
CS
A1
Q3 Q2 Q1 Q0
© 1999 M. Murdocca and V. Heuring
5-8
Organización de una RAM 64x1 en 2 dimensiones
Read
D Q
A0
A1
A2
Row
Decoder
Read/Write
Row
Control
CLK
Select
Data Column
In/Out Select
Celda 1-Bit
A3
A4
A5
Column Decoder (MUX/DEMUX)
Data
© 1999 M. Murdocca and V. Heuring
Two bits wide:
One bit for data and
one bit for select.
5-9
Organización de 4x8 RAM
D7 D6 D5 D4
D3 D2 D1 D0
4×4 RAM
4×4 RAM
Q7 Q6 Q5 Q4
Q3 Q2 Q1 Q0
CS
WR
A0
A1
© 1999 M. Murdocca and V. Heuring
5-10
Organización de 8x4 RAM
D3 D2 D1 D0
WR
A0
A1
4×4 RAM
CS
1-to-2
decoder
A2
0
1
CS
4×4 RAM
CS
© 1999 M. Murdocca and V. Heuring
Q3 Q2 Q1 Q0
5-11
Módulo SLIM (Single-In-Line Memory)
TI Databook
PIN NOMENCLATURE
© 1999 M. Murdocca and V. Heuring
A0-A9
CAS
Address Inputs
Column-Address Strobe
DQ1-DQ8
NC
Data In/Data Out
No Connection
RAS
Vcc
Vss
W
Row-Address Strobe
5-V Supply
Ground
Write Enable
Vcc
CAS
1
2
DQ1
A0
A1
DQ2
A2
3
4
5
6
7
A3
8
Vss
9
DQ3 10
A4
A5
DQ4
11
12
13
A6
A7
14
15
DQ5
A8
A9
16
17
18
NC
DQ6
W
19
20
21
Vss 22
DQ7 23
NC
DQ8
NC
24
25
26
RAS
NC
NC
Vcc
27
28
29
30
5-12
Como funciona una ROM ?
2-to-4
decoder
00
A0
A1
Posicion
01
10
11
almacenada
00
01
10
11
Enable
Q3
© 1999 M. Murdocca and V. Heuring
Palabra
Q2
Q1
Q0
0101
1011
1110
0000
5-13
ALU como Lookup Table (LUT)
Operando
A
Operando
B
Función
© 1999 M. Murdocca and V. Heuring
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
A15
A16
A17
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
A17 A16 Función
Salida
0
0
1
1
0
1
0
1
Suma
Resta
Multiplic
División
5-14
Que es una memoria cache?
CPU
400 MHz
Main
Memory
10 MHz
Bus 66 MHz
Sin cache
CPU
400 MHz
Cache
Main
Memory
10 MHz
Bus 66 MHz
Con cache
- Principio de LOCALIDAD: Una posición de memoria puede ser usada
de nuevo (localidad temporal); una posición vecina de la posición de
memoria referenciada puede ser usada inmediatamente después
(localidad espacial).
© 1999 M. Murdocca and V. Heuring
5-15
Esquema de cache con organización asociativa
Valid Dirty Tag
27
Slot 0
Block 0
Slot 1
Block 1
Slot 2
.
.
.
.
.
.
Block 128
Slot 214–1
Block 129
Cache
.
.
.
Block 227–1
Main Memory
© 1999 M. Murdocca and V. Heuring
32 words
per block
5-16
Ejemplo de Memoria Asociativa
- Un acceso a la posición (A035F014)16 es mapeado a la cache como
una palabra en memoria de 2e32. La memoria es dividida en 2e27
bloques de 2e5 (32 palabras x bloque). La cache contiene 2e14
segmentos.
Tag
Word
27 bits
5 bits
- Si la palabra direccionada está en la cache, se encontrará (14)16
la palabra de un segmento (tag) (501AF80)16. Este TAG, está formado
por los 27 bits más significativos de la dirección. Si la palabra no está en
cache, entonces el bloque corresponde a un campo del tag (501AF80)16
es "leído" de memoria dentro del segmento correspondiente en la cache,
la referencia a memoria es entonces leída de la cache.
Tag
Word
101000000011010111110000000 10100
© 1999 M. Murdocca and V. Heuring
5-17
Políticas de Reemplazo
- Cuando no hay segmentos disponibles en donde colocar un bloque es
necesario implantar un método. Este método gobierna como el
segmento es liberado para albergar el bloque nuevo.
- Los mecanismos de reemplazo son usados para esquemas asociativos
de memoria y para memoria virtual. Estos son los siguientes:
- Último recientemente empleado. "Least recently used" (LRU)
- Primero que entra/primero que sale. "First-in/first-out" (FIFO)
- El menos frecuente empleado. "Least frequently used" (LFU)
- Aleatorio. "Random"
- Óptimo. (Usado por análisis en tiempo siguiendo una estrategia para
una secuencia particular de referencias a memoria).
© 1999 M. Murdocca and V. Heuring
5-18
Esquema de Cache de Mapeo Directo
Valid Dirty Tag
13
Slot 0
Block 0
Slot 1
Block 1
Slot 2
.
.
.
.
.
.
Block 214
Slot 214–1
Cache Memory
Block 214+1
.
.
.
Block 227
Main Memory
© 1999 M. Murdocca and V. Heuring
32 words
per block
5-19
Ejemplo de mapeo directo
- Para una cache de mapeo directo, cada bloque de memoria puede ser
mapeado a un único segmento, donde cada segmento puede contener
más de 1 bloque. Considerando (A035F014)16, es mapeado a la cache
como una palabra de 2e32. La memoria es dividida en 2e27 bloques de
2e5 (32 words x bloque) y la cache contiene 2e14 segmentos.
Tag
Slot
Word
13 bits
14 bits
5 bits
- Si la referencia a memoria está en la cache, se encontrará en (14)16
del segmento (2F80)16 el cual tendrá un TAG de (1406)16
Tag
Slot
Word
1010000000110 10111110000000 10100
© 1999 M. Murdocca and V. Heuring
5-20
Cache tipo Asociativa por conjuntos
Valid Dirty Tag
14
Slot 0
Block 0
Slot 1
Block 1
Slot 2
.
.
.
.
.
.
Block 213
Slot 214–1
Block 213+1
Cache
.
.
.
Set 0
Set 1
Set 213–1
Block 227–1
Main Memory
© 1999 M. Murdocca and V. Heuring
32 words
per block
5-21
Ejemplo Asociativo por Conjuntos
• Considere un acceso a la posición con localidad (A035F014)16 es
mapeada a la cache como una palabra de 22. La memoria se divide
en 227 bloques de 25 = 32 palabras por bloque, donde hay 2 bloques
conjunto, la cache consiste de 214 segmentos:
Tag
Set
Word
14 bits
13 bits
5 bits
• Los 14 bits de la izquierda forman el campo tag, seguidos de 13 bits para
el campo del conjunto, seguido de 5 bits para el campo de la palabra:
Tag
Set
Word
10100000001101 0111110000000 10100
© 1999 M. Murdocca and V. Heuring
5-22
Escritura/lectura en Cache
Cache
Write
Cache
Read
Dato en
cache ?
Perfecto !
a CPU.
© 1999 M. Murdocca and V. Heuring
Dato no
está en
cache
Load Through:
Envío de la palabra
a la vez que que
a la cache
-oEscribe en cache
entonces envía a CPU
Dato en
cache ?
Write Through:
Escribe datos en ambos
cache y memoria
principal,
-oWrite Back: Escribe
datos a cache solamente.
Espero a la memoria princ.
hasta que la cache se haya
reemplazado (Flushed))
Dato no
está en
cache
Write Allocate: Trae
la línea a cache y
reemplaza
-oWrite No-Allocate
Actualiza unicamente
memoria principal
5-23
Hit Ratios yTiempo Efectivo de Acceso
- Hit ratio y tiempo efectivo de acceso para cache de un nivel y multinivel:
© 1999 M. Murdocca and V. Heuring
5-24
Ejemplo de Cache de Mapeo Directo
- Calcular: hit ratio y
tiempo de acceso efectivo
de un programa ejectuado
de las posiciones de
memoria 48 a 95, y
hacer un bucle 10 veces
desde la 15 a la 31.
Slot 0
Block 0
0 - 15
Slot 1
Block 1
16 - 31
Slot 2
Block 2
32 - 47
Slot 3
Block 3
48 - 63
Block 4
64 - 79
Block 5
80 - 95
- La cache de mapeo
directo es de 16 palabras
Cache
x 4 segmentos, un hit time
de 80 ns, y un miss (pérdida)
de 2500 ns. Se emplea load-through
como política de reemplazo.
La cache está inicialmente vacía.
© 1999 M. Murdocca and V. Heuring
.
.
.
Main Memory
5-25
Tabla de Eventos para un Programa
Evento Posición
1 miss
15 hits
1 miss
15 hits
1 miss
15 hits
1 miss
1 miss
15 hits
9 hits
144 hits
48
49-63
64
65-79
80
81-95
15
16
17-31
15
16-31
Total hits = 213
© 1999 M. Murdocca and V. Heuring
Tiempo
2500ns
80ns×15=1200ns
2500ns
80ns×15=1200ns
2500ns
80ns×15=1200ns
2500ns
2500ns
80ns×15=1200ns
80ns×9=720ns
80ns×144=12,240ns
Total misses = 5
Comentario
Memory block 3 to cache slot 3
Memory block 4 to cache slot 0
Memory block 5 to cache slot 1
Memory block 0 to cache slot 0
Memory block 1 to cache slot 1
Last nine iterations of loop
Last nine iterations of loop
5-26
Calculo del Hit Ratio and Tiempo efectivo
de acceso para un Programa ejemplo
© 1999 M. Murdocca and V. Heuring
5-27
Algoritmo Neat Little LRU
Cache slot
• Se muestra una secuencia para el algoritmo Neat Little LRU y una cache
con 4 segmentos. Los bloques de memoria principal se accedene
en la secuencia: 0, 2, 3, 1, 5, 4.
Cache slot
0 1 2 3
0 0 0 0 0
1 0 0 0 0
2 0 0 0 0
0 1 2 3
0 0 1 1 1
1 0 0 0 0
2 0 0 0 0
3 0 0 0 0
3 0 0 0 0
Initial
0
1
2
3
0
0
0
1
1
1
1
0
1
1
2
0
0
0
1
0, 2, 3
© 1999 M. Murdocca and V. Heuring
3
0
0
0
0
0
1
2
3
0
0
1
1
1
0
0 0
1 0
2 1
1
1
0
1
2
0
1
0
1
0, 2, 3, 1
3
0
1
0
0
3
1
0
1
3 0 0 0 0
Block accesses: 0
1
0
0
0
0
2
0
0
0
0 1 2 3
0 0 1 1 1
1 0 0 1 1
2 0 0 0 0
3 0 0 1 0
0, 2, 3, 1, 5
0, 2
0
1
2
3
0
0
0
1
0
1
1
0
1
0
2
0
0
0
0
3
1
1
1
0
0, 2, 3, 1, 5, 4
5-28
Overlays
• Partición de un grafo para un programa principal y 3 subrutinas:
Compiled program Physical Memory
A
Main
Main Routine
Partition #0
Subroutine A
Smaller
than
program
C
B
Partition #1
Subroutine B
Partition graph
Subroutine C
© 1999 M. Murdocca and V. Heuring
5-29
Memoria Virtual
• La memoria virtual es almacenada en una imagen del disco duro.
La memoria mantiene un pequeño número de páginas virtuales en
bloque físicos de memoria.
• Mapeo de memoria virtual en memoria física:
Virtual
addresses Virtual memory
0 - 1023
Page 0
1024 - 2047
Page 1
2048 - 3071
Page 2
Page frame 0
3072 - 4095
Page 3
Page frame 1 1024 - 2047
4096 - 5119
Page 4
Page frame 2 2048 - 3071
5120 - 6143
Page 5
Page frame 3 3072 - 4095
6144 - 7167
Page 6
7168 - 8191
Page 7
Principles of Computer Architecture by M. Murdocca and V. Heuring
Physical
Physical memory addresses
0 - 1023
© 1999 M. Murdocca and V. Heuring
5-30
Tabla de Paginación
• La paginación mapea una tabla entre la memoria virtual y
la memoria física.
Present bit
Page frame
Page #
Disk address
Bit de presencia:
0: La página no está en
la memoria física.
1: La página está en
la memoria.
0 1 01001011100 00
1 0 11101110010 xx
2 1 10110010111 01
3 0 00001001111 xx
4 1 01011100101 11
5 0 10100111001 xx
6 0 00110101100 xx
7 1 01010001011 10
© 1999 M. Murdocca and V. Heuring
5-31
Usando una Tabla de Páginación
• Una dirección virtual se convierte en una dirección física de memoria:
Page
Offset
100 1101000101
0
1
2
3
4
1
0
1
0
1
01001011100
11101110010
10110010111
00001001111
01011100101
5 0 10100111001
6 0 00110101100
7 1 01010001011
Page table
© 1999 M. Murdocca and V. Heuring
Virtual address
00
xx
01
xx
11
xx
xx
10
11 1101000101
Physical address
5-32
Paginación
(continuación)
0
1
2
3
4
5
• La tabla cambia 6
cuando se ejecuta 7
0 01001011100 xx
1 11101110010 00
0 10110010111 xx
0 00001001111 xx After
fault on
0 01011100101 xx page #1
0 10100111001 xx
0 00110101100 xx
0 01010001011 xx
0
1
2
3
0 01001011100 xx
1 11101110010 00
1 10110010111 01
5
6
7
0 00001001111 xx After
fault on
0 01011100101 xx page #2
0 10100111001 xx
0 00110101100 xx
0 01010001011 xx
0
1
2
3
4
0
0
1
1
1
4
un programa.
• Inicialmente está
la tabla vacía. En
el proceso de configuración, 4 pags.
están en memoria
física.
© 1999 M. Murdocca and V. Heuring
0
1
0 01001011100 xx
1 11101110010 00
2
3
1 10110010111 01
1 00001001111 10 After
fault on
0 01011100101 xx page #3
0 10100111001 xx
4
5
6
7
0 00110101100 xx
0 01010001011 xx
5
6
7
01001011100
11101110010
10110010111
00001001111
01011100101
1 10100111001
0 00110101100
0 01010001011
xx
xx
01
10
Final
11
00
xx
xx
5-33
Segmentación
• Un segmento de memoria permite a dos usuarios compartir la misma
palabra de memoria en el código, con diferente espacio de datos:
Segment #0
Execute only
Used
Segment #1
Read/write by
user #0
Used
Segment #2
Read/write by
user #1
Used
Free
Free
Unused
© 1999 M. Murdocca and V. Heuring
Address space for
code segment of
word processor
Data space
for user #0
Data space
for user #1
5-34
Fragmentación
• (a) Free area
of memory
after initialization; (b)
after fragmentation;
(c) after coalescing.
1999 M. Murdocca and V. Heuring
Operating
System
Operating
System
Program A
Program A
Free Area
Free Area
Program B
Program B
Free Area
Free Area
Program C
Program C
Free Area
Free Area
Free Area
Dead Zone
Dead Zone
Dead Zone
I/O Space
I/O Space
I/O Space
(a)
(b)
(c)
Operating
System
Free Area
5-35
Translation Lookaside Buffer (TLB)
- Ejemplo de TLB con 8 entradas para un sistema de 32 paginas
virtuales y 16 paginas físicas.
Valid
Virtual page
number
Physical
page number
1
01001
1100
1
0
0
10111
---------
1001
-------
1
0
1
01110
----00110
0000
---0111
0
-----
----
© 1999 M. Murdocca and V. Heuring
5-36
Decodificador 3-Variables
- Cuidado !! el tamaño
no es expandible debido
a las cargas "fan-in" x linea.
El aumento de una línea
duplica el tamaño del
decodificador.
a0
a1
d0
d1
d2
a2
d3
d4
d5
d6
d7
© 1999 M. Murdocca and V. Heuring
5-37
Decodificiador - 3 Variables
- Un árbol de decodificación es necesario para gobernar grandes bloques.
Se ajusta el "fan-out", de acuerdo a la profundidad de niveles.
Fan-out
buffers
a0
d0
a0
d0
d1
a1
d2
d3
a2
(a)
© 1999 M. Murdocca and V. Heuring
d1
a1
d2
d3
a2
d4
d4
d5
d5
d6
d6
d7
d7
(b)
5-38
Arbol de decodificación. Un único nivel a la vez
- Arbol de decoficación para una RAM de 16 palabras:
1011
0___
1___
Level 0
00__
01__
10__
11__
Level 1
000_
001_
010_
011_
100_
101_
110_
111_
Level 2
Level 3
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
© 1999 M. Murdocca and V. Heuring
5-39
Content Addressable Memory (CAM)
- Relación entre RAM y CAM
Address
Value
Field1
Field2
Field3
0000A000
0000A004
0000A008
0000A00C
0000A010
0000A014
0000A018
0000A01C
0F0F0000
186734F1
0F000000
FE681022
3152467C
C3450917
00392B11
10034561
000
011
149
091
000
749
000
575
A
0
7
4
E
C
0
1
9E
F0
01
00
FE
6E
50
84
32 bits
32 bits
12 bits
4 bits
8 bits
Random access memory
© 1999 M. Murdocca and V. Heuring
Content addressable memory
5-40
Arquitectura CAM
Central
Control
Comparand
© 1999 M. Murdocca and V. Heuring
Cell 0
T0
Cell 1
T1
Cell 2
T2
Cell 4095
T4095
Data Gathering Device
Mask
Information and Commands
• Source: (Foster,
C. C., Content
Addressable
Parallel Processors, Van
Nostrand
Reinhold Company, 1976.)
5-41
Arboles de direccionamiento para CAM
Data: four bits
per channel
Control: one bit
per channel
4
4
4
4
4
4
© 1999 M. Murdocca and V. Heuring
4
4
4
4
4
4
4
4
4
4
4
5-42
Memoria RAM doble Lectura
D0 – D7
Data In
20
A Address
A0 – A19
220 Word ×
8 bits
8
Port A
A RAM
WR
CS
20
A Address
Data In
A0 – A19
220 Word ×
8 bits
20
20
B Address
B RAM
WR
CS
B0 – B19
WR
CS
© 1999 M. Murdocca and V. Heuring
8
Port B
5-43
Intel Pentium Memory System
Pentium Processor Chip
CPU
256
Level 1
Instruction
Cache
8 KB TLB
Level 1
Data Cache
8 KB
TLB
© 1999 M. Murdocca and V. Heuring
n
Level 2
Cache
Up to
512KB
Main Memory
Up to 8GB
n