370 likes | 556 Views
Organización del Computador. Memorias. 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)
E N D
Organización del Computador Memorias
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
Tecnología de Integración Actual 65 nm nanotechnology 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.
CAS RAS Cd Buffer Transistor Bit de datos de salida al bus Tecnología de memorias: RAM Dinámica Diagrama de un bit elemental de DRAM (Dynamic RAM). • 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.
Línea de Bit Línea de Bit Selección Tecnología de memorias: RAM Estática 3 4 6 1 2 5 Diagrama del biestable de un bit básico de SRAM (Static RAM). • 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
Estructura de Bus clásica Procesador • 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 waitstatespara 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? Bus Local del Procesador ADDRESS DATOS CONTROL Bus de Control Buffer de Datos Buffer de Address BUS DEL SISTEMA Memoria del Sistema E/S del Sistema
Crecimiento de la velocidad de clock de las CPU versus memoria 1100 1000 Pentium III 1GHz 900 800 700 600 Pentium II 400 MHz. 500 400 486 DX4 100 MHz. 300 Memorias 200 386 DX 33 MHz 100 89 90 91 92 93 94 95 96 97 98 99 00
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 de accesos con presencia en Memoria Cache hit rate = Cantidad total de accesos a memoria
Inicio CPU envía señal de lectura Miss Hit!! Busca ítem en cache Busca ítem en memoria del sistema Busca ítem en cache y envía a la CPU Escribe ítem en el cache Actualiza directorio cache Envía ítem a la CPU Fin Operación de Lectura de memoria
Procesador CONTROL ADDRESS DATOS Bus Local del procesador Memoria cache Controlador deMemoriacaché CONTROL Buffer de Datos Buffer de Address Bus Local del controlador cache Bus de Control BUS DEL SISTEMA Estructura de Bus del sistema con 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 Dirección Tag Línea 0 1 2 3 4 5 6 7 8 9 Línea 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) Ancho de palabra
Bit de validez del Tag 1 Línea = 4 bytes Línea Tag 17 bits Línea Bits de validez de las líneas Set 0 32 Kbytes (igual tamaño que el de la cache) Set 1 Pag.217 -1 Set 1023 Pag.0 Directorio de Caché Interno Memoria Caché 4 Gbytes de Memoria Principal Organización del caché: Mapeo Directo
Caché Address (1 de 8 KLíneas) A5 A A A A A 2 15 14 4 31 Tag de 17 bits (1 de las 217 páginas) Set Address (1 de 1024 sets) Organización del caché de mapeo directo Selector de Línea (1 de 8 líneas) Bit de validez del Tag 0 Bits de validez de la línea 1 Nro de Set 1023 Directorio de Caché Interno
Bit de validez del Tag 1 Línea = 4 bytes Línea Línea Tag Línea 18 bits 18 bits Bits LRU Bits de validez de las líneas Set 0 16 Kbytes (igual tamaño Que el de cada banco del cache) Bits LRU 18 bits 18 bits Set 1 Pag.218 -1 Bits LRU 18 bits 18 bits Set 512 Pag.0 Directorio de Caché Interno Memoria Caché 4 Gbytes de Memoria Principal Organizacion del cache: Asociativo de dos vías
Organización del caché asociativo de dos vías Caché Address (1 de 4 KLíneas) A31 A5 A4 A2 A14 A13 Selector de Línea (1 de 8 líneas) Tag de 18 bits (1 de las 218 páginas) Set Address (1 de 512 sets) Bit de validez del Tag 0 Bits de validez de la línea 1 Nro de Set 512 Directorio de Caché Interno
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
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 • Writethroughbuffered: 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.
Multilevel cache Cache Level1 CPU Onchip Cache Level 2 Cache controller Tamaño Cache L2 > Tamaño Cache L1 Velocidad Cache L1 > Velocidad Cache L2 System Memory (DRAM)
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
Implementaciones prácticas de memoria cache (2) • 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