Jerarquía de las memorias
Jerarquía de memorias en un Pentium
Métricas de las memorias Capacidad de almacenamiento: en
bytes o múltiplos (kB, MB, TB) Tiempo de acceso: en
segundos o submúltiplos (ns, ms) Velocidad de tranferencia
de datos: en bytes/seg o múltiplos Comsumo de
energía: en Watts Tamaño físico: en cm3
Costo total y costo por MB: en $ y $/MB
Tipos y tecnología de memorias Memorias ROM (Read Only
Memory) Programable ROM Erasable Programable ROM Electronically
Erasable Programable ROM Memorias RAM (Random Access Memory) RAM
estáticas vs dinámicas RAM volátiles vs no
volátiles Memorias FLASH
Ejemplo memoria OTP EPROM
Características físicas de la EPROM
Ejemplo memoria OTP EPROM
Diagrama de tiempos de la EPROM
Ejemplo EEPROM
Ejemplo EEPROM
Ejemplo memoria FLASH
Ejemplo memoria SRAM
Ejemplo memoria SRAM
Ejemplo memoria SRAM
Ejemplo memoria SRAM
Ejercicio Dada un espacio de memoria de 64 K x 8 bits, y el
siguiente mapa de memoria, diseñar el circuito
lógico de selección. Mapa de memoria:0000 a 2000
hex => EPROM2000 a 8000 hex => RAM8000 a FFFF hex =>
FLASH
Tecnología de Integración Actual Imágenes
obtenidas con TEM (Transmission Electron Microscope) de una cepa
del virus de la gripe, y de un transistor construido con la
tecnología de 65 nm utilizada desde el año 2005 en
el Procesador Pentium IV y posteriores. 65 nm
nanotechnology
Tecnología de memorias: RAM Dinámica Almacena la
información como una carga en una capacidad espuria de un
transistor. Una celda (un bit) se implementa con un solo
transistor ? máxima capacidad de almacenamiento por chip.
Ese transistor consume mínima energía ? Muy bajo
consumo. Al leer el bit, se descarga la capacidad ? necesita
regenerar la carga ? aumenta entonces el tiempo de acceso de la
celda. (Gp:) CAS (Gp:) RAS (Gp:) Cd (Gp:) Bit de datos de salida
al bus (Gp:) Buffer Diagrama de un bit elemental de DRAM (Dynamic
RAM). (Gp:) Transistor
Tecnología de memorias: RAM Estática Almacena la
información en un biestable. Una celda (un bit) se compone
de seis transistores ? menor capacidad de almacenamiento por
chip. 3 transistores consumen energía máxima en
forma permanente y los otros 3 consumen mínima
energía ? Mayor consumo La lectura es directa y no
destructiva ? tiempo de acceso muy bajo Diagrama del biestable de
un bit básico de SRAM (Static RAM). (Gp:) Línea de
Bit (Gp:) Línea de Bit (Gp:) Selección 6 1 2 3 4
5
Estructura de Bus clásica Desde fines de los años
80, los procesadores desarrollaban velocidades muy superiores a
los tiempos de acceso a memoria. En este escenario, el procesador
necesita generar wait states para esperar que la memoria
esté lista (“READY”) para el acceso.
¿Tiene sentido lograr altos clocks en los procesadores si
no puede aprovecharlos por tener que esperar (wait) a la memoria?
Buffer de Address Buffer de Datos Bus de Control BUS DEL SISTEMA
Bus Local del Procesador Memoria del Sistema Procesador E/S del
Sistema DATOS ADDRESS CONTROL
(Gp:) 1100 (Gp:) 1000 (Gp:) 900 (Gp:) 800 (Gp:) 700 (Gp:) 600
(Gp:) 500 (Gp:) 400 (Gp:) 300 (Gp:) 200 (Gp:) 100 (Gp:) 89 (Gp:)
90 (Gp:) 91 (Gp:) 92 (Gp:) 93 (Gp:) 94 (Gp:) 95 (Gp:) 96 (Gp:) 97
(Gp:) 98 (Gp:) 99 (Gp:) 00 (Gp:) 486 DX4 100 MHz. (Gp:) 386 DX 33
MHz (Gp:) Pentium II 400 MHz. (Gp:) Pentium III 1GHz (Gp:)
Memorias Crecimiento de la velocidad de clock de las CPU versus
memoria
El problema RAM dinámica (DRAM) Consumo mínimo.
Capacidad de almacenamiento comparativamente alta. Costo por bit
bajo. Tiempo de acceso alto (lento), debido al circuito de
regeneración de carga. Si construimos el banco de memoria
utilizando RAM dinámica, no aprovechamos la velocidad del
procesador. RAM estática (SRAM) Alto consumo relativo.
Capacidad de almacenamiento comparativamente baja. Costo por bit
alto. Tiempo de acceso bajo (es mas rápida). Si
construimos el banco de memoria utilizando RAM estática,
el costo y el consumo de la computadora son altos.
La solución: Memoria cache Se trata de un banco de SRAM de
muy alta velocidad, que contiene una copia de los datos e
instrucciones que están en memoria principal El arte
consiste en que esta copia esté disponible justo cuando el
procesador la necesita permitiéndole acceder a esos
ítems sin recurrir a wait states. Combinada con una gran
cantidad de memoria DRAM, para almacenar el resto de
códigos y datos, resuelve el problema mediante una
solución de compromiso típica. Requiere de hardware
adicional que asegure que este pequeño banco de memoria
cache contenga los datos e instrucciones mas frecuentemente
utilizados por el procesador.
Referencias El tamaño del banco de memoria cache debe ser:
Suficientemente grande para que el procesador resuelva la mayor
cantidad posible de búsquedas de código y datos en
esta memoria asegurando una alta performance Suficientemente
pequeña para no afectar el consumo ni el costo del
sistema. Se dice que se logra un hit cuando se accede a un
ítem (dato o código) y éste se encuentra en
la memoria cache. En caso contrario, se dice que el resultado del
acceso es un miss. Se espera un hit rate lo mas alto posible
Cantidad total de accesos a memoria Cantidad de accesos con
presencia en Memoria Cache hit rate =
Operación de Lectura de memoria (Gp:) Inicio (Gp:) Busca
ítem en cache (Gp:) CPU envía señal de
lectura (Gp:) Busca ítem en cache y envía a la CPU
(Gp:) Busca ítem en memoria del sistema (Gp:) Escribe
ítem en el cache (Gp:) Actualiza directorio cache (Gp:)
Envía ítem a la CPU (Gp:) Fin (Gp:) Miss (Gp:)
Hit!!
Estructura de Bus del sistema con cache (Gp:) Memoria cache (Gp:)
Controlador de Memoria caché (Gp:) Buffer de Address (Gp:)
Buffer de Datos (Gp:) BUS DEL SISTEMA (Gp:) Bus Local del
procesador (Gp:) Procesador (Gp:) Bus de Control (Gp:) CONTROL
(Gp:) DATOS (Gp:) ADDRESS (Gp:) CONTROL (Gp:) Bus Local del
controlador cache Bus de Datos Bus de Dir.
Como trabaja el controlador cache El controlador cache trabaja
mediante dos principios que surgen de analizar el comportamiento
de los algoritmos de software que se emplean habitualmente.
Principio de vecindad temporal: Si un ítem es
referenciado, la probabilidad de ser referenciado en el futuro
inmediato es alta. Principio de vecindad espacial: Si un
ítem es referenciado, es altamente probable que se
referencie a los ítems vecinos a éste. Ejemplo:
Algoritmo de convolución for (i = 0 ; i < 256 ; i++ ){
suma = 0.0f; for (j = 0 ; (j <= i && j < 256) ;
j++) suma += v0[i-j] * v1[j]; fAux[i] = suma; } i, j, suma, se
utilizan a menudo. Por lo tanto si se mantienen en el cache, el
tiempo de acceso a estas variables por parte del procesador es
óptimo.
Estructura de memoria cache Tag Línea Línea 0 1 2 3
4 5 6 7 8 9 Dirección Ancho de palabra Línea:
Elemento mínimo de palabra de datos dentro del cache.
Corresponde a un múltiplo del tamaño de la palabra
de datos de memoria. Razón: Cuando se direcciona un
ítem en memoria generalmente se requerirá de los
ítem que lo rodean (Principio de vecindad espacial)
Memoria Cache (Gp:) Directorio de Cache (Gp:) Interfaz con el Bus
Local (Gp:) Control del Cache (Gp:) Interfaz con el Procesador
(Gp:) Bus de Address del procesador (Gp:) Control del bus local
del controlador cache (Gp:) Bus de Snoop (Gp:) Arbitración
del Bus (Gp:) Control del bus Local del Procesador (Gp:) Bus de
Control de la Memoria Cache (Gp:) Decodificaciones del bus local
del procesador Hardware adicional. Mantiene el cache con los
datos mas frecuentemente utilizados por el procesador Procesador
Subsistema caché Memoria SRAM ultrarrápida (cache)
Controlador de Memoria caché Memoria DRAM Bus del
Procesador (Bus local) Bus del Sistema Baja capacidad, pero
accesible a la velocidad del procesador
Organización del caché: Mapeo Directo (Gp:)
Directorio de Caché Interno (Gp:) 4 Gbytes de Memoria
Principal (Gp:) Tag (Gp:) 17 bits (Gp:) Bit de validez del Tag
(Gp:) Bits de validez de las líneas (Gp:) 32 Kbytes (igual
tamaño que el de la cache) (Gp:) Set 0 (Gp:) Set 1 (Gp:)
Set 1023 (Gp:) Memoria Caché (Gp:) Pag.0 (Gp:) Pag.217 -1
(Gp:) Línea (Gp:) Línea (Gp:) 1 Línea = 4
bytes
Selector de Línea (1 de 8 líneas) Bit de validez
del Tag Bits de validez de la línea 0 1 1023 Directorio de
Caché Interno Nro de Set (Gp:) A (Gp:) 15 (Gp:) A (Gp:) 14
(Gp:) A5 (Gp:) (Gp:) A (Gp:) 4 (Gp:) A (Gp:) 31 (Gp:) A (Gp:) 2
(Gp:) Tag de 17 bits (1 de las 217 páginas) (Gp:) Set
Address (1 de 1024 sets) (Gp:) Caché Address (1 de 8
KLíneas) Organización del caché de mapeo
directo
Organizacion del cache: Asociativo de dos vías (Gp:)
Directorio de Caché Interno (Gp:) 4 Gbytes de Memoria
Principal (Gp:) Tag (Gp:) 18 bits (Gp:) Bit de validez del Tag
(Gp:) Bits de validez de las líneas (Gp:) 16 Kbytes (igual
tamaño Que el de cada banco del cache) (Gp:) Set 0 (Gp:)
Set 1 (Gp:) Set 512 (Gp:) Memoria Caché (Gp:) Pag.0 (Gp:)
Pag.218 -1 (Gp:) Línea (Gp:) Línea (Gp:) 1
Línea = 4 bytes (Gp:) Línea (Gp:) Bits LRU (Gp:)
Bits LRU (Gp:) Bits LRU (Gp:) 18 bits (Gp:) 18 bits (Gp:) 18 bits
(Gp:) 18 bits (Gp:) 18 bits
A13 A14 A5 A4 A31 A2 Tag de 18 bits (1 de las 218 páginas)
Set Address (1 de 512 sets) Selector de Línea (1 de 8
líneas) Caché Address (1 de 4 KLíneas) Bit
de validez del Tag Bits de validez de la línea 0 1 512
Directorio de Caché Interno Nro de Set Organización
del caché asociativo de dos vías
Manejo del contenido Algoritmos de reemplazo del contenido de la
memoria cache LRU: Least Recently Used. Se corresponde con el
principio de vecindad temporal. LFU: Least Frecuently Used Random
FIFO
Cache miss: Impacto en el Pipeline de instrucciones Pipeline:
permite superponer en el tiempo la ejecución de varias
instrucciones a la vez. No requiere hardware adicional. Solo se
necesita lograr que todas las partes del procesador trabajen a la
vez. Trabaja con el concepto de una línea de montaje: Cada
operación se descompone en partes Se ejecutan en un mismo
momento diferentes partes de diferentes operaciones Cada parte se
denomina etapa (stage) Resultado Una vez en régimen
ejecuta a razón de una instrucción por ciclo de
clock
Cache miss: Impacto en el Pipeline de instrucciones Si la
búsqueda de una instrucción o de un operando en el
cache falla, entonces el procesador debe recurrir a la memoria
principal. La demora en el acceso hace que el pipeline se atasque
(stall) Una vez recuperado el dato de memoria principal se
requieren (en este ejemplo), 5 ciclos de reloj adicionales para
recuperar el ritmo de operación del pipeline!!
Coherencia de un cache Una variable que está en el
caché también está alojada en alguna
dirección de la DRAM. Ambos valores deben ser iguales
Cuando el procesador la modifica hay varios modos de actuar Write
through: el procesador escribe en la DRAM y el controlador cache
refresca el cache con el dato actualizado Write through buffered:
el procesador actualiza la SRAM cache, y el controlador cache
luego actualiza la copia en memoria DRAM mientras el procesador
continúa ejecutando instrucciones y usando datos de la
memoria cache Copy back: Se marcan las líneas de la
memoria cache cuando el procesador escribe en ellas. Luego en el
momento de eliminar esa línea del caché el
controlador cache deberá actualizar la copia de DRAM. Si
el procesador realiza un miss mientras el controlador cache
está accediendo a la DRAM para actualizar el valor,
deberá esperar hasta que controlador cache termine la
actualización para recibir desde este la
habilitación de las líneas de control para acceder
a la DRAM.
Estructura de Bus del sistema Multiprocesador con cache (Gp:)
Controlador de Memoria caché (Gp:) Memoria cache (Gp:)
Controlador de Memoria caché (Gp:) BUS DEL SISTEMA (Gp:)
Procesador (Gp:) Bus de Control (Gp:) CONTROL (Gp:) DATOS (Gp:)
ADDRESS (Gp:) CONTROL (Gp:) Memoria cache (Gp:) Buffer de Address
(Gp:) Buffer de Datos (Gp:) Procesador (Gp:) CONTROL (Gp:) Buffer
de Address (Gp:) Buffer de Datos (Gp:) SNOOP BUS (Gp:) CONTROL
(Gp:) DATOS (Gp:) ADDRESS (Gp:) SNOOP BUS (Gp:) Bus del cache
(Gp:) Bus local del controlador cache (Gp:) Bus local del
procesador
Multilevel cache CPU Cache Level1 Cache Level 2 Cache controller
System Memory (DRAM) On chip Tamaño Cache L2 >
Tamaño Cache L1 Velocidad Cache L1 > Velocidad Cache
L2
Implementaciones prácticas de memoria cache (1) Intel
80486 8 Kbytes de cache L1 on chip Tamaño de línea:
16 bytes Organización asociativa de 4-vías Pentium
dos caches on-chip, uno para datos y otro para instrucciones.
Tamaño de cada cahe: 8 Kbytes Tamaño de
línea: 32 bytes Organización asociativa de
4-vías PowerPC 601 cache on-chip de 32 Kbytes
Tamaño de línea: 32 bytes Organización
asociativa de 8-vías
PowerPC 603 Dos caches on-chip, una para datos y otra para
instrucciones Tamaño de cada cache: 8 Kbytes Tamaño
de línea: 32 bytes Organización asociativa de
2-vías (organización del cache más simple
que en el 601 pero un procesador mas fuerte) PowerPC 604 Dos
caches on-chip, una para datos y otra para instrucciones
Tamaño de cada cache: 16 Kbytes Tamaño de
línea: 32 bytes Organización asociativa de
4-vías PowerPC 620 Dos caches on-chip, una para datos y
otra para instrucciones Tamaño de cada cache: 32 Kbytes
Tamaño de línea: 64 bytes Organización
asociativa de 8-vías Implementaciones prácticas de
memoria cache (2)