Memoria Principal

Anuncio
Memoria Principal
Departamento de Arquitectura de
Computadores
Índice
Introducción. Conceptos básicos
Memoria Principal
Características físicas
Organización
Memoria Caché
Características de los sistemas de memoria
Jerarquías de memoria
Organización
Políticas de ubicación
Políticas de sustitución
Políticas de escritura
Políticas de búsqueda
Memoria Virtual
Conceptos generales
La memoria principal es el siguiente nivel de la jerarquía de memorias, a
continuación de la/s cache/s, y por tanto satisface las demandas de ese
nivel.
Está construida con DRAMs, las cuales están pensadas para aumentar la
densidad (menor número de transistores por bit de memoria) en lugar de
disminuir el tiempo de acceso.
Al ser el siguiente nivel de la jerarquía, y por el hecho de ser un nivel más lento
que la caché, su organización influye en la penalización de fallo y por tanto
influye en el rendimiento.
Memoria principal: características físicas
Tipos de memoria semiconductora de acceso aleatorio:
Memoria RAM
RAM (Random-Access Memory):
Memoria de acceso aleatorio.
Es posible tanto leer como escribir mediante señales eléctricas.
Memoria volátil. Debe estar conectada continuamente a la alimentación lo que
implica que sirva como almacenamiento temporal únicamente.
Las tecnologías de RAM se dividen en:
Dinámicas DRAM: tienen celdas que almacenan lo datos como cargas de
condensadores. La presencia o ausencia de carga se interpreta como un 1 ó un 0
binarios. La tendencia a descargarse de los condensadores hace que sea
necesario un refresco constante.
Estáticas SRAM: los valores binarios se almacenan utilizando configuraciones de
puertas que forman biestables (flip-flops). Una RAM de este tipo mantendrá los
datos mientras se mantenga la alimentación.
DRAM vs SRAM:
Dinámicas son mas densas (celdas mas pequeñas = mayor número de
celdas).
Para memorias grandes suelen utilizarse memorias dinámicas.
Las memorias estáticas son más rápidas y por tanto mas propicias para
memoria caché (tamaño pequeño).
Memoria ROM
ROM (Read-Only Memory):
Memoria de acceso aleatorio
Memoria de sólo lectura.
Contienen un patrón permanente de datos que no puede alterarse. No pueden
escribirse datos nuevos.
Memoria permanente o no-volátil
Sirven para almacenar el programa de arranque de los computadores: la BIOS
del sistema (rutinas que sirven para poner en funcionamiento el computador y
revisar la fiabilidad del sistema) y los FIRMWARE (información, configuración y
rutinas de diagnóstico) de los dispositivos instalados en el sistema.
Una ROM se construye como cualquier otro chip de circuito integrado, con los
datos cableados en el chip durante el proceso de fabricación. Estos presenta dos
problemas:
La etapa de inserción de datos implica unos costes fijos relativamente grandes
tanto si se va a fabricar una o miles de copias de una misma ROM.
No se permiten fallos. Si uno de los bits es erróneo, debe desecharses ka tirada
completa de memorias ROM.
Tipos de ROM
ROM de máscara. Grabada por fabricante. No se puede borrar.
PROM (programable ROM). Grabada por el usuario. No se puede grabar ni
introducir nueva información tras su grabado.
EPROM (erasable PROM). Puede borrarse completamente con luz
ultravioleta y permite que se almacene un nuevo programa múltiples veces.
EEPROM (electrical EPROM). Permite borrar su contenido anterior a nivel
de byte eléctricamente. Combina la ventaja de ser no volátil con la
flexibilidad de ser actualizable in situ.
FLASH pueden borrarse enteras en unos cuantos segundos, de forma más
rápida que las EEPROM. Además se puede llevar el proceso de borrado a
nivel de bloque.
Conexión de módulos de memoria (ROM o
RAM) al bus del sistema
Los módulos típicos de memoria ROM (PROM, EPROM, etc.) y RAM
(SRAM, DRAM) son asíncronos
La operaciones de lectura y escritura no se rigen por una señal de reloj
Para iniciar una transferencia se utilizan las señales de
Dirección
Chip select (CS*)
Tipo de operación: OE* = Output Enabled (lectura) y WE* = Write Enabled (escritura)
Los ciclos de lectura/escritura tienen una duración determinada y conocida para
un módulo de memoria específico
El módulo de memoria debe conectarse al bus del sistema a través de un
controlador o adaptador de memoria
Convierte las señales de control que genera la CPU a las señales que utiliza el
módulo de memoria
Genera las señales de control necesarias sobre la CPU para que las
transferencias se realicen correctamente, conocido el tiempo de ciclo de la
memoria
WAIT o READY en bus semisíncrono
SSYNC o DTACK* en bus asíncrono
Conexión de módulos de memoria (ROM o
RAM) al bus del sistema
Organización
El elemento básico de una memoria semiconductora es la celda de memoria. Todas
comparten las siguientes propiedades:
Presentan dos estados estables que representan el 1 y el 0 lógicos.
Puede escribirse en ellas al menos una vez.
Pueden leerse para detectar su estado.
Organización básica del chip de memoria:
Transductores de escritura/lectura: dispositivos que suministran la suficiente energía al medio para
grabar el estado deseado y por otro lado son capaces de detectar las magnitudes físicas para
reconocer el estado en que se encuentra el medio respectivamente.
Cada fila constituye una palabra
En una operación de escritura lectura se escriben o leen todas las celdas de una palabra.
Comunicación memoria principal -CPU
La transferencia de datos entre la MP y la CPU se realiza gracias a dos
registros:
MAR (Memory Address Register): delimita el tamaño de la memoria.
MDR (Memory Data Register): delimita el tamaño de los datos.
MAR
MDR
Bus de direcciones
de k bits
Mem. Ppal.
2k palabras
direccionables
Bus de datos
de n bits
Longitud de
palabra = n bits
Líneas de control
(Leer, escribir, MFC,..)
Organización de la información en la
memoria
Organización por palabras:
La memoria se organiza en grupos de “k” bits llamados palabras
Para especificar una palabra se necesitan “n” bits
Cada palabra tiene asignada una dirección comprendida entre 0 y 2n-1
Organización por bytes:
A bytes individuales se le asignan direcciones independientes.
Una palabra compuesta por varios bytes puede ser accedida de manera
individual a cada uno de ellos.
Para un mismo tamaño de memoria se necesita un mayor número de bits a la
hora de poder direccionar.
Problemas:
Cómo relacionar las direcciones de las palabras con las direcciones de las
unidades direccionables (bytes).
Cómo ordenar el contenido de una palabra en un conjunto consecutivo de
unidades direccionables.
Relación de direcciones: palabras-bytes
Se obliga a que los datos empiecen en determinadas direcciones de memoria principal.
Se dice que un dato de n bytes ubicado en la dirección D está alineado si: D mod n = 0.
Datos de 1 byte pueden ubicarse en cualquier posición de memoria.
Datos de 2 bytes pueden ubicarse en direcciones pares.
Datos de 4 bytes pueden ubicarse en direcciones múltiplos de 4.
Ventaja: para acceder a una palabra donde los datos están alineados, únicamente se requiere un
acceso a memoria.
Desventaja: quedan espacios de memoria sin utilizar. Si se tiene un dato de 8 bits almacenado en
la dirección 0 seguido de uno de 32 bits, se hace necesario dejar un espacio no útil de 24 bits.
4 Bytes
0
4
8
12
Espacio
sin utilizar
4 Bytes
Dos accesos a
memoria
0
4
8
12
16
20
2n-4
2n-4
Memoria
Palabras alineadas
Memoria
Palabras no alineadas
Ordenación del contenido de una
palabra
Existen dos posibilidades a la hora de repartir el contenido de una palabra en un
conjunto sucesivo de bytes:
Big-Endian: la dirección del dato corresponde al octeto más significativo.
Little-Endian: la dirección del dato corresponde al octeto menos significativo.
Dato FC1854A3 almacenado en la dirección de memoria 8
8
11111100
8
10100011
9
00011000
9
01010100
10
01010100
10
00011000
11
10100011
11
11111100
Big-Endian
Little-Endian
Rendimiento de la memoria principal
Los parámetros para evaluar el rendimiento de la memoria principal
son:
Latencia : tiempo en obtener el primer acceso
Ancho de banda : número de bytes leídos o escritos por unidad de tiempo
Para lograr un buen rendimiento, hay que conseguir el mejor ancho de
banda posible entre la cache y la memoria principal, ya que así se
disminuye el tiempo de transferencia. El tiempo de acceso o latencia es
difícil de reducir.
Las posibles organizaciones para mejorar el rendimiento de la memoria principal
son:
Aumentar el ancho de la memoria
Utilizar memoria entrelazada
Utilizar bancos de memoria independientes
Organización con ancho de una palabra
La conexión de la CPU con la cache es de 1
palabra de ancho, al igual que la conexión entre la
cache y la memoria principal.
Si suponemos:
1 ciclo para enviar la dirección.
15 ciclos para cada acceso a una posición de la
DRAM.
1 ciclo para enviar una palabra de datos.
Bloque de cache de 4 palabras (16 bytes) => Bus
Datos de 32 bits.
Penalización de fallo = 1 + 4 x 15 + 4 x 1 = 65 ciclos
Medida del ancho de banda entre la cache y la
memoria principal
Nº bytes transferidos /ciclo = 16 / 65 = 0,25
Organización con ancho de varias
palabras
Se aumenta el ancho de banda haciendo la
memoria y el bus de varias palabras de ancho.
Aumentar el ancho de la memoria y del bus
disminuye el tiempo de acceso y el tiempo de
transferencia => disminuye la penalización de fallo
Se necesita un multiplexor que seleccione la
palabra del bloque de cache que se va a
suministrar a la CPU
Todas estas medidas aumentan el coste, y
aumentan también el tiempo de acceso a la cache.
Si ancho de memoria es de 2 palabras
Penalización de fallo = 1 + 2x15 + 2x1 = 33 ciclos
Nº bytes transferidos/ciclo = 16/33 = 0,48
Si ancho de memoria = 4 palabras
Penalización de fallo = 1 + 1x15 + 1x1 = 17 ciclos
Nº bytes transferidos/ciclo = 16/17 = 0,94
Organización de memoria entrelazada
Cuando la memoria principal está estructurada como un conjunto de
módulos físicamente separados, será posible acceder simultáneamente a
todos ellos. De este modo la velocidad de transmisión hacia o desde el
sistema a la MP aumenta.
Tipos:
Entrelazado de orden superior: consiste en distribuir las direcciones de
memoria entre los módulos de modo que cada uno contenga direcciones
consecutivas; si la CPU requiere posiciones consecutivas de tal forma que es un
único módulo el que está permanece ocupado, los dispositivos con capacidad de
acceso directo a memoria (DMA) pueden operar sobre los restantes módulos.
Si por ejemplo empleamos módulos de 2n posiciones, se asignan las 2n primeras
posiciones al primer módulo, las posiciones de 2n a las 22n -1 al segundo módulo y así
sucesivamente.
Entrelazado de orden inferior: consiste en distribuir a módulos consecutivos
direcciones consecutivas del mapa de memoria; si las referencias sucesivas son
consecutivas, aunque se sigue pagando el coste de transferir cada palabra
secuencialmente, se reducen los conflictos de acceso y por tanto el ancho de
banda aumenta considerablemente.
Si por ejemplo la memoria tiene 4 módulos, el primero de ellos contendría las palabras 0,
4, 8, 12,…, mientras que el segundo ocuparía las posiciones 1, 5, 9, 13,…, etc.
Entrelazado de orden superior
Ejemplo: tendríamos una distribución
direcciones de manera que las
consecutivas irán en el mismo módulo:
de
Entrelazado de orden inferior
el entrelazado de orden inferior
produciría una distribución de
direcciones de manera que las
consecutivas irán en módulos
diferentes:
Entrelazado de orden inferior
Se incrementa el ancho de banda ensanchando
la memoria pero no el bus de conexión.
Memoria organizada en bancos de 1 palabra de
ancho. Se leen/escriben simultáneamente varias
palabras (tantas como bancos) con un solo tiempo
de acceso.
Hay una parte común en la dirección que se envía a
todos los bancos
Todos los bancos acceden simultáneamente al dato
ubicado en esa dirección
Se lee el dato disponible en cada banco → se
obtiene un bloque de datos
Los bits menos significativos de la dirección
seleccionan el banco de memoria. Direcciones
consecutivas de memoria (Dn) se ubican en bancos
consecutivos.
Ejemplo con 4 bancos:
D0 -> Banco0; D1 -> Banco1; D2 -> Banco2; D3 -> Banco3;
Dn -> Banco(Dn MODULO Nº Bancos)
Entrelazado de orden inferior
Se sigue pagando el coste de transmitir cada palabra
secuencialmente, pero se evita pagar más de una vez la latencia de
acceso.
Con 4 bancos de memoria:
Penalización de fallo = 1 + 1x15 + 4x1 = 20 ciclos
Nº bytes transferidos/ciclo = 16/20 = 0,80
EL SISTEMA ENTRELAZADO ES 3,2 VECES MÁS RÁPIDO
Se hacen más rápidas las escrituras => importante en write through.
Funcionan al mismo tiempo todos los módulos => más consumo
Dificultad para expandir la memoria
Chips de memoria SRAM 2nxk
Celda básica (1 bit) constituida por un biestable
Ventajas
Tamaño 2nxk
2n palabras de k bits, siendo k = 1, 2, 4 u 8
Ejemplo: chips de memoria 51C86 de Intel
Tamaño 4Kx4
Organización 2-D
Diseño de memorias cache
Alta velocidad y pequeño tamaño
Chips de memoria SRAM comerciales
Disipan mucha energía
Baja densidad de integración
Coste elevado
Aplicación
Tiempo de acceso y de ciclo reducido
Alta velocidad de transferencia
Desventajas
Mantiene la información mientras exista suministro
eléctrico
La implementación puede ser bipolar o MOS
Un chip de 2n palabras de k bits se organiza como un
array de 2n filas por k columnas
Para construir placas de memoria de mayor tamaño se
deben combinar varios chips de memoria con la lógica
de descodificación adicional adecuada
Chips de memoria DRAM 2nx1
Celda básica (1 bit) constituida por un condensador y un único transistor MOS
La información binaria se mantiene en forma de carga del condensador
El control de la carga/descarga del condensador se realiza mediante un conmutador
Tiempo de ciclo elevado
Necesidad de refresco
Aplicación
Bajo consumo de energía
Alta densidad de integración
Coste reducido
Desventajas
Necesidad de un refresco periódico de la información contenida en la RAM
El refresco consiste en la lectura del condensador y posterior escritura con idéntico valor (amplificado)
Ventajas
Implementado mediante un transistor MOS
Los condensadores pierden la carga al cabo de unos pocos milisegundos
1 lógico: presencia de carga en el condensador; 0 lógico: ausencia de carga en el condensador
Diseño de memoria principal
Gran tamaño y velocidad baja
Chips de memoria DRAM
Tamaño 2nx1 ó 2nx4
Organización 2-1/2-D
Un array 2n/2x 2n/2 por bit
Aspectos de diseño de la memoria
principal
Las DRAMs evolucionan hacia mayor densidad, no menor tiempo de acceso.
Una DRAM es una matriz de d x w elementos, siendo d el número de filas distintas y w
el número de bits de salida para cada fila (1≤ w ≤ 16, común 4 y 8)
Si aumenta la densidad, el tamaño total de la DRAM crece, pero como w se mantiene
constante (coste de verificación y encapsulado menor) => d crece.
Aumentar el tamaño total conduce a que la configuración mínima de memoria
crezca, y esto puede no interesarnos por razones de coste, etc... => Cada vez es
menos atractivo construir la memoria con múltiples bloques de memoria porque
la configuración mínima de memoria crece.
Ejemplo Construir una memoria de 64 MB con chips de 4Mbit x 1 , y palabras
de 32 bits.
4 bancos con 32 DRAMs de 4Mbit x 1 => 128 DRAMS de 4Mbit x 1
Si usamos chips de 16Mbit x 1 => 1 solo banco con 32 chips de 16M x1, y si
quisiéramos tener 4 bancos (por hacer la memoria entrelazada), estaríamos obligados
a poner 32x4 chips de 16M x 1, haciendo un total de 256MB de memoria.
Diseño modular de memorias
Si las dimensiones de la memoria exceden a las de un chip, para alcanzar
la capacidad exigida, será necesario realizar una configuración modular
(usar varios módulos hasta cumplir las restricciones de tamaño):
Lo habitual es que la memoria requerida no coincida con ningún chip de
memoria disponible:
Longitud de palabra múltiplo de la del chip
Nº de palabras direccionables mayor que las del chip.
Incremento del tamaño de las palabras
Incremento del número de palabras
Incremento del tamaño de las palabras
Ejemplo: memoria de 2nx32bits a partir de chips de 2nx8bits
Incremento del número de palabras
Ejemplo: memoria de 4Kx8bits a partir de chips de 1Kx8bits
Ejemplo
Se dispone de un sistema microprocesador con bus de datos de 16 bits y
bus de direcciones de 20 bits. En este sistema se quiere implementar una
memoria RAM de 256 kpalabras situadas en las posiciones mas bajas de
memoria y una memoria ROM de 128 Kpalabras situada en la parte
superior de la memoria. Para ello se dispone del número suficiente de
circuitos de memorias de los tipos siguientes: RAM de 64Kx4 y ROM de
32Kx8, así como la circuitería auxiliar necesaria. Hacer un esquema del
diseño resultante.
RAM: Como los chips son de 64Kx4 necesitamos 16 circuitos. ( 4x64 = 256K
asociados de 4 en 4 para tener la longitud de palabra apropiada)
ROM: En este caso los chips son de 32Kx8 luego necesitamos 8 circuitos ( 4x32
= 128K asociados de 2 en dos para tener la longitud de palabra adecuada)
Mapa de memoria
Decodificador
Diseño
Principales recursos para mejorar las
prestaciones de la memoria principal
La memoria principal
indispensables:
debe
ser
capaz
de
cubrir
dos
Un tiempo de acceso a las posiciones de memoria en consonancia con el tiempo
de procesamiento por parte de la unidad de control. La realización de una
instrucción se compone de una fase de búsqueda del código máquina
dependiente de la memoria principal y mas tarde una fase de ejecución donde
se interpreta el código máquina obtenido anteriormente y se disponen las
operaciones necesarias. Un comportamiento equilibrado del sistema presupone
que la fase de búsqueda dependiente de las características de la memoria no
debe suponer un cuello de botella de manera tal que ambas fases duren un
tiempo simular (fase búsqueda ≈ fase ejecución).
Suficiente capacidad para contener los programas y datos en fase de ejecución.
Para cubrir ambos requisitos se emplean dos técnicas:
requisitos
Memoria caché: incrementa la velocidad de acceso.
Memoria virtual: aumenta la capacidad real de la memoria principal.
Descargar