Publicado el 23 de Agosto del 2019
933 visualizaciones desde el 23 de Agosto del 2019
941,9 KB
31 paginas
Creado hace 8a (28/04/2016)
Segundo cuatrimestre
2015‐2016
Organización de memorias de
semiconductores: RAM estática
Jerarquía de Memoria
Introducción a la memoria Cache
fc2
fc2
1
2
Sistema de memoria de un
computador
¿Qué es una memoria? ¿Cómo se
implementa?
¿Es la memoria lo suficientemente rápida
como para satisfacer las transferencias
demandadas por el procesador?
¿Por qué TODOS los computadores tienen
memoria cache?
¿Cómo funciona?
fc2
fc2
Introducción
El manejo de datos
tiene un coste:
Ocupan bastante
espacio en
memoria.
Acceder a ellos
requiere un cierto
tiempo.
3
4
Tipos de memoria
semiconductora
Memoria no volátil ROM
– PROM, EPROM,
– EEPROM, FLASH,
– Disco magnético, Disco de estado sólido.
Memoria volátil RAM
– SRAM
– DRAM
5
Tipos de memoria
semiconductora
Celda básica de memoria RAM
Celda SRAM
Ventajas
Desventajas
Tiempo de acceso y de ciclo reducido
Disipan mucha energía
Baja densidad de integración
Coste elevado
Celda DRAM
Ventajas
Bajo consumo de energía
Alta densidad de integración
Coste reducido
Desventajas
Tiempo de ciclo elevado
Necesidad de refresco
6
fc2
fc2
Introducción
Valores típicos de tiempos de acceso y precios
por Gbyte (año 2015)
Tipo de
memoria
Tiempo de
acceso (ns)
SRAM
DRAM
Disco de Estado
Sólido (SSD)
Disco
Magnético
0.5
10‐50
20,000
5,000,000
$ /
Gbyte
5,000
7
0.40
0.05
Ancho de Banda
(Gbytes/s)
25+
10
0.5
0.75
7
RAM (Random-Access Memory)
[Revisión del módulo 7]
CE
M
A
R
k
a
n
d
WE OE
RAM 2k×n
(2k n-bit words)
Interfaz externo del dispositivo
k líneas de dirección (entrada)
n líneas de datos (entrada/salida)
1 entrada de habilitación del dispositivo
1 entrada de habilitación de lectura
1 entrada de habilitación de escritura
a
d
CE
OE
WE
Memoria volátil capaz de almacenar
2k palabras de n bits
8
fc2
fc2
RAM (Random-Access Memory)
[Revisión del módulo 7]
Celda básica de una SRAM (Static RAM)
– Cada bit se almacena en un latch
– El contenido de la celda se mantiene
mientras esté conectada a la alimentación
– Si se activa (1) la señal S (Select) el
contenido de la celda aparece en la salida O
– Cuando las señales W (Write) y S están las
dos a 1 el valor de la entrada I se escribe en
el latch
– Comportamiento de un driver tri‐estado:
Celda básica
SRAM
I
Latch
D
Q
G
W
S
b=a
a
1
a
0
b está flotante
(desconectada)
RAM (Random-Access Memory)
[Revisión módulo 7]
Ejemplo: Implementación de una memoria SRAM 4x4
Paso 1: Replicar la celda
básica para formar un
array 4×4 (4 palabras de
4 bits cada una)
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
O
I
SW
O
I
SW
O
I
SW
O
I
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
O
9
10
fc2
fc2
RAM (Random-Access Memory)
[Revisión del módulo 7]
Paso 2: Implementar
las líneas de datos
bidireccionales
I
O
SW
I
O
SW
I
O
SW
I
O
SW
O
I
SW
O
I
SW
O
I
SW
O
I
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
fc2
d3
d2
d1
d0
11
RAM (Random-Access Memory)
[Revisión del módulo 7]
Paso 3: decodificación de
direcciones y lógica de
selección
0
Líneas de
dirección
a0
a1
0
1
1
2
3
OE
CE
WE
fc2
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
d3
d2
d1
d0
12
RAM (Random-Access Memory)
[Revisión del módulo 7]
Ejemplo: Leer la palabra 2
I
O
SW
I
O
SW
I
O
SW
I
O
SW
0
1
0
1
2
3
O
I
SW
O
I
SW
O
I
SW
O
I
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
d3
d2
d1
d0
13
0
1
a0
a1
1
1
0
OE
CE
WE
fc2
RAM (Random-Access Memory)
[Revisión del módulo 7]
Ejemplo: Escribir la palabra 2
I
O
SW
I
O
SW
I
O
SW
I
O
SW
0
1
0
1
2
3
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
d3
d2
d1
d0
14
0
1
a0
a1
0
1
1
OE
CE
WE
fc2
RAM (Random-Access Memory)
[Revisión del módulo 7]
Ejemplo: Estado de Reposo
I
O
SW
I
O
SW
I
O
SW
I
O
SW
0
1
0
1
2
3
O
I
SW
O
I
SW
O
I
SW
O
I
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
I
O
SW
d3
d2
d1
d0
15
X
X
a0
a1
X
0
X
OE
CE
WE
fc2
RAM (Random-Access Memory)
[Revisión del módulo 7]
Podemos conectar varias RAMs para que se comporten
como una RAM con mayor tamaño de palabra
ce
we
oe
a
k
RAM
2k×n
Module 0
n
k
RAM
2k×n
Module 1
k
...
n
...
n·m
RAM
2k×n
Module m-1
n
Implementación Multi-Módulo
RAM de tamaño 2k×(n∙m) utilizando m RAMs de tamaño 2k×n
d
fc2
16
RAM (Random-Access Memory)
[Revisión del módulo 7]
Podemos combinar varias RAMs para que se comporten
como una RAM de mayor profundidad (más direcciones)
am-1..k
m-k
ce
we
oe
ak-1..0
E
0
1
2m‐k‐1
...
CE
RAM
2k×n
Module 0
n
k
bus
k
CE
RAM
2k×n
Module 1
n
...
k
CE
RAM
2k×n
Module 2m-k-1
n
Implementación Multi-Módulo
n
RAM de tamaño 2m×n utilizando RAMs de tamaño 2m‐k 2k×n
d
17
Chips SRAM
Ejemplo: AS6C62256 (Alliance Memory, Inc. 2007)
– 262.144‐bit (256 Kbit) low power CMOS
– Organizada como una RAM de 32.768 (32 K) palabras de 8 bits
• 32 kpalabras (= 215 ) implica 15 líneas de dirección (A14‐A0)
Diagrama de bloques
• El array de memoria es similar (pero
mucho más grande) al del ejemplo
anterior de una SRAM 4x4
• El símbolo # en la líneas CE, WE y
OE indica que estas líneas son
activas a baja (i.e. activas a 0)
• Hay un decodificador de 15 a 215
18
fc2
fc2
Chips SRAM
Ejemplo: AS6C62256 (cont)
Tabla de verdad
Mode
CE#
OE#
WE#
Standby
Read
Write
H
L
L
X
L
H
X
H
L
Data
Lines
Hi‐Z
Dout
Din
19
fc2
Diseño de memorias con chips SRAM
Ejemplo 1: módulo de memoria de 128 Kbyte implementado con chips AS6C62256
a16
a15
a14 –a0
WE#
OE#
CE#
E
1
0
3
2
1
0
128 Kbyte SRAM
fc2
15
15
15
15
OE# WE#
A14-A0
CE#
32Kx8
DQ7-DQ0
OE# WE#
A14-A0
CE#
32Kx8
DQ7-DQ0
OE# WE#
A14-A0
CE#
32Kx8
DQ7-DQ0
OE# WE#
A14-A0
CE#
32Kx8
DQ7-DQ0
El decodificador selecciona (como
mucho) uno de los chips, en
función del valor de las líneas
a16-a15.
Los otros están en estado de
reposo (standby), debido a que
tienen a 1 sus entradas CE#
Si la entrada CE# global del
módulo está a 1, se deshabilita el
decodificador y todos los chips:
toda la memoria se encuntra en
estado de reposo
d7-d0
20
Diseño de memorias con chips SRAM
Ejemplo 2: un módulo de memoria de 128 Kpalabras de 16 bits implementada con
chips AS6C62256
a16
a15
a14 –a0
WE#
OE#
CE#
OE# WE#
OE# WE#
15
15
A14-A0
CS#
32Kx8
DQ7-DQ0
A14-A0
CS#
32Kx8
DQ7-DQ0
E
1
0
3
2
1
0
15
15
15
OE# WE#
A14-A0
CS#
32Kx8
DQ7-DQ0
OE# WE#
A14-A0
CS#
32Kx8
DQ7-DQ0
OE# WE#
A14-A0
CS#
32Kx8
DQ7-DQ0
15
15
15
OE# WE#
A14-A0
CS#
32Kx8
DQ7-DQ0
OE# WE#
A14-A0
CS#
32Kx8
DQ7-DQ0
OE# WE#
A14-A0
CS#
32Kx8
DQ7-DQ0
128 K x 16 bit SRAM
fc2
d15-d8
d7-d0
21
Emplazamiento de módulos de memoria
en el mapa de memoria
Antes de utilizar un módulo de memoria en un
computador debemos decidir qué rango de direcciones
le vamos a asignar
Ejemplo 1:
(A19‐A0).
– Supongamos un computador con 20 líneas de dirección
– Supongamos que la memoria es direccionable por bytes
– Emplazar el módulo de memoria SRAM de 128 Kbyte
diseñado previamente en el rango de direcciones 0xA0000
a 0xBFFFF
• Observar que todas las direcciones de este rango tienen los tres
bits más significativos a 101
fc2
22
Emplazamiento de módulos de memoria
en el mapa de memoria
Solución:
U
P
C
A19
A18
A17
A16 –A0
MemWr#
MemRd#
D7-D0
128 Kbyte SRAM
CE#
a16 –a0
WE#
OE#
d7-d0
– Cualquier dirección de la forma 101x xx…xx (i.e. todas las que empiezan por A o B)
llevarán la entrada CE# a 0, y por tanto habilitarán el módulo de memoria para hacer
una operación de lectura o escritura según el computador active las señales MemWr#
y MemRd#
– Para cualquier dirección fuera del rango 0xA0000‐0xBFFFF, la entrada CE# tomará el
valor 1, dejando al módulo de memoria en estado de reposo
•
Esto permite conectar varios módulos de memoria al sistema, utilizando las mismas líneas de dirección,
datos y Control (MemWr# y MemRd#), emplazando cada módulo en un rango de direcciones diferente. Sólo
se necesitaría una puerta nand adicional por cada nuevo módulo.
Emplazamiento de módulos de memoria
en el mapa de memoria
Ejemplo 2: Diseñar un módulo SRAM de 128 Kbyte que
pueda ser emplazado en cualquier rango de direcciones
de la forma 0xY0000 – 0x(Y+1)0000, dónde Y es un
dígito hexadecimal par
Módulo SRAM con lógica de selección de direcciones
1 •
0 •
1 •
0 •
1 •
0 •
U
P
C
A19
A18
A17
A16 –A0
MemWr#
MemRd#
D7-D0
128 Kbyte SRAM
CE#
a16 –a0
WE#
OE#
d7-d0
23
24
fc2
fc2
Emplazamiento de módulos de memoria
en el mapa de memoria
Ejemplo 3 (decodificación parcial de direcciones): Emplazar
el módulo SRAM de 128 Kbyte de forma que ocupe la mitad
superior del mapa de memoria (con aliasing).
U
P
C
A19
A18
A17
A16 –A0
MemWr#
MemRd#
D7-D0
128 Kbyte SRAM
CE#
a16 –a0
WE#
OE#
d7-d0
– El módulo se activará con cualquier dirección que empiece por 1
– Cada byte del módulo de memoria tendrá 4 direcciones válidas (aliasing)
• Por ejemplo, el primer byte del módulo será accedido con cualquiera de las siguientes
direcciones: 0x80000, 0xA0000, 0xC0000 y 0xE0000
Jerarquía de Memoria
Objetivo:
– Conseguir una memoria de gran tamaño, rápida y
al menor coste posible.
– De forma transparente al usuario
¿Cómo organizar la memoria?
Base: Principio de localidad
“Cualquier programa accede a una porción
relativamente pequeña de su espacio de direcciones
en cualquier instante de tiempo”
25
26
fc2
fc2
Jerarquía de memoria
Niveles de la Jerarquía de memoria
Un computador típico está
formado por diversos niveles de
memoria, organizados de forma
jerárquica:
– Registros de la CPU
– Memoria Cache
– Memoria Principal
– Memoria Secundaria (discos)
– Memorias flash y CD‐ROMs
El coste de todo el sistem
Comentarios de: Módulo 10: El sistema de memoria - Fundamentos de computadores (0)
No hay comentarios