Download Memoria caché - dc.uba.ar - Universidad de Buenos Aires
Document related concepts
no text concepts found
Transcript
Memoria cache Organización del Computador 1 Memoria Cache Dr. Ing. Marcelo Risk Departamento de Computación Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires 2011 Dr. Ing. Marcelo Risk Organización del Computador 1 Memoria Cache Memoria cache Memorias: Evolución Pioneros: Maurice Wilkes con la primer memoria de tanque de mercurio para la computadora EDSAC. 2 bytes: 1947. Visionarios... 640K debe ser suficiente para cualquiera. Bill Gates, 1981. Dr. Ing. Marcelo Risk Organización del Computador 1 Memoria Cache Memoria cache 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. Dr. Ing. Marcelo Risk Organización del Computador 1 Memoria Cache Memoria cache Tecnología de Memorias: RAM Dinámica CAS RAS Cd Buffer Transistor Bit de datos de salida al bus 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. Dr. Ing. Marcelo Risk Organización del Computador 1 Memoria Cache Memoria cache Tecnología de Memorias: RAM Estática Línea de Bit Línea de Bit Selección 1 3 4 2 5 6 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. Dr. Ing. Marcelo Risk Organización del Computador 1 Memoria Cache Memoria cache Estructura de Bus clásica CONTROL DATOS ADDRESS Procesador Bus de control Buffer de datos Buffer de address Bus Local del Procesador BUS DEL SISTEMA Memoria del Sistema E/S del Sistema Dr. Ing. Marcelo Risk 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. Organización del Computador 1 Memoria Cache Memoria cache Crecimiento de la velocidad de clock de las CPU versus memoria 1100 1000 Pentium III 1 GHz 900 800 700 600 Pentium II 400 MHz 500 400 486 DX4 100 MHz 300 Memorias 200 386 DX4 33 MHz 100 89 90 91 92 93 Dr. Ing. Marcelo Risk 94 95 96 97 98 99 00 Organización del Computador 1 Memoria Cache Memoria cache 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 construímos 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 construímos el banco de memoria utilizando RAM estática, el costo y el consumo de la computadora son altos. Dr. Ing. Marcelo Risk Organización del Computador 1 Memoria Cache Memoria cache 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 más frecuentemente utilizados por el procesador. Dr. Ing. Marcelo Risk Organización del Computador 1 Memoria Cache Memoria cache 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 más alto posible hit rate = Cantidad de accesos con presencia en Memoria Cache Cantidad total de accesos a memoria Dr. Ing. Marcelo Risk Organización del Computador 1 Memoria Cache Memoria cache Operación de Lectura de memoria Inicio CPU envía señal de lectura Hit! Miss Busca ítem en cache Busca ítem en cache y envía a la CPU Busca ítem en memoria del sistema Escribe ítem en el cache Actualiza directorio cache Envía ítem a la CPU Fin Dr. Ing. Marcelo Risk Organización del Computador 1 Memoria Cache Memoria cache Estructura de Bus del sistema con cache CONTROL ADDRESS Memoria caché DATOS CONTROL Procesador Buffer de Datos Buffer de Address Controlador de Memoria caché Bus local del procesador Bus local del controlador caché Bus de control BUS DEL SISTEMA Dr. Ing. Marcelo Risk Organización del Computador 1 Memoria Cache Memoria cache Cómo 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 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. Dr. Ing. Marcelo Risk Organización del Computador 1 Memoria Cache Memoria cache Estructura de memoria cache Tag Línea Dirección 0 1 2 3 4 5 6 7 8 9 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 ítems que lo rodean (Principio de vecindad espacial) Dr. Ing. Marcelo Risk Línea Ancho de palabra Organización del Computador 1 Memoria Cache Memoria cache Memoria Cache Procesador Baja capacidad, pero ¡accesible a la velocidad del procesador! Subsistema Cache Controlador de Memoria Cache Memoria SRAM ultrarápida (cache) Hardware adicional. Mantiene el cache con los datos más frecuentemente utilizados por el procesador. Bus del procesador (Bus local) Bus del sistema Control de bus local del controlador cache Arbitración del Bus Memoria DRAM Control del bus local del procesador Decodificación del bus local del procesador Interfaz con el Bus Local Directorio de Cache Interfaz con el Procesador Control de Cache Bus de Address del procesador Bus de Snoop Bus de Control de la Memoria Cache Configuración Dr. Ing. Marcelo Risk Organización del Computador 1 Memoria Cache Memoria cache Organización del cache: Mapeo Directo 1 línea = 4 bytes Bit de validez del Tag Línea Tag 17 bits Set 0 Línea Bits de validez de las líneas 32 Kbytes (igual tamaño que el del cache) Set 1 Pág. 217 - 1 Set 1023 Directorio de Cache Interno Pág. 0 Memoria Caché Dr. Ing. Marcelo Risk 4 Gbytes de Memoria Principal Organización del Computador 1 Memoria Cache Memoria cache Organización del cache de mapeo directo Cache Address (1 de 8 Klíneas) A31 A14 A13 Tag de 17 bits (1 de las 217 páginas) A5 A4 Set Address (1 de 1024 sets) A2 Selector de Línea (1 de 8 líneas) Bits de validez del Tag 0 Nro. de Set 1 Bits de validez de la línea 1023 Directorio de Cache Interno Dr. Ing. Marcelo Risk Organización del Computador 1 Memoria Cache Memoria cache Organización del cache: Asociativo de dos vías 1 línea = 4 bytes Bit de validez del Tag Línea Línea Tag 18 bits 18 bits Set 1 18 bits Set 512 Bits de validez de las líneas Bits LRU Bits LRU Bits LRU 18 bits Línea 16 Kbytes (igual tamaño que el de cada banco de cache) Set 0 18 bits Pág. 218 18 bits Directorio de Cache Interno Pág. 0 Memoria Caché Dr. Ing. Marcelo Risk 4 Gbytes de Memoria Principal Organización del Computador 1 Memoria Cache Memoria cache Organización del cache asociativo de dos vías Cache Address (1 de 4 Klíneas) A31 A14 A13 Tag de 18 bits (1 de las 218 páginas) A5 A4 Set Address (1 de 512 sets) A2 Selector de Línea (1 de 8 líneas) Bits de validez del Tag 0 Nro. de Set 1 Bits de validez de la línea 512 Directorio de Cache Interno Dr. Ing. Marcelo Risk Organización del Computador 1 Memoria Cache Memoria cache 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. Dr. Ing. Marcelo Risk Organización del Computador 1 Memoria Cache Memoria cache 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. Sólo 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). Búsq. Inst. 1 Búsq. Inst. 2 Búsq. Inst. 3 Búsq. Inst. 4 Búsq. Inst. 5 Búsq. Inst. 6 Búsq. Inst. 7 Dec.FI Inst. 1 Dec. Inst. 2 Dec. Inst. 3 Dec. Inst. 4 Dec. Inst. 5 Dec. Inst. 6 Búsq. Op. 1 Búsq. Op. 2 Búsq. Op. 3 Búsq. Op. 4 Búsq. Op. 5 Ejec. Inst. 1 Ejec. Inst. 2 Ejec. Inst. 3 Ejec. Inst. 4 Escrib. Escrib. Escrib. Res. 1 Res. 2 Res. 3 RESULTADO: UNA VEZ EN REGIMEN EJECUTA A RAZON DE UNA Dr. Ing. Marcelo Risk Organización del Computador 1 Memoria Cache Memoria cache 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! Cache MISS Búsq. Inst. 1 Búsq. Inst. 3 Búsq. Inst. 4 Búsq. Inst. 5 Búsq. Inst. 6 Búsq. Inst. 7 Búsq. Inst. 8 Búsq. Inst. 9 Búsq. Inst. 10 Búsq. Inst. 11 Dec.FI Inst. 1 Dec. Inst. 2 Dec. Inst. 3 Dec. Inst. 4 Dec. Inst. 5 Dec. Inst. 6 Dec.FI Inst. 7 Dec. Inst. 8 Dec. Inst. 9 Dec. Inst. 10 Búsq. Op. 1 Búsq. Op. 2 Búsq. Op. 3 Búsq. Op. 4 Búsq. Op. 5 Búsq. Op. 6 Búsq. Op. 7 Búsq. Op. 8 Búsq. Op. 9 Ejec. Inst. 1 Ejec. Inst. 2 Ejec. Inst. 3 Ejec. Inst. 4 Ejec. Inst. 5 Ejec. Inst. 7 Ejec. Inst. 8 E N LI PE PI Búsq. Inst. 2 D LE Dr. Ing. Marcelo Risk AL Escrib. Escrib. Escrib. Escrib. Escrib. Escrib. Res. 1 Res. 2 Res. 3 Res. 4 Res. 5 Res. 6 ST Ejec. Inst. 6 Escrib. Res. 7 Organización del Computador 1 Memoria Cache Memoria cache 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 cache 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 éste la habilitación de las líneas de control Dr. Ing. Marcelo Risk Organización del Computador 1 Memoria Cache Memoria cache Estructura de Bus del sistema Multiprocesador con cache Buffer de Address CONTROL Controlador de Memoria caché SNOOP BUS ADDRESS Buffer de Datos Memoria caché DATOS ADDRESS Controlador de Memoria caché DATOS CONTROL Buffer de Datos Buffer de Address SNOOP BUS Memoria caché CONTROL Procesador CONTROL Procesador Bus del caché Bus de control Bus local del procesador Bus local del controlador caché BUS DEL SISTEMA Dr. Ing. Marcelo Risk Organización del Computador 1 Memoria Cache Memoria cache Multilevel cache Cache Nivel 1 CPU En chip Cache Nivel 2 Controlador Cache Tamaño Cache N2 › Tamaño Cache N1 Velocidad Cache N1 › Velocidad Cache N2 Dr. Ing. Marcelo Risk Memoria del Sistema (DRAM) Organización del Computador 1 Memoria Cache Memoria cache 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 cache: 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. Dr. Ing. Marcelo Risk Organización del Computador 1 Memoria Cache Memoria cache 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, uno para datos y otro 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, uno para datos y otro para instrucciones. Tamaño de cada cache: 32 bytes. Tamaño de línea: 64 bytes. Organización asociativa de 8-vías. Dr. Ing. Marcelo Risk Organización del Computador 1 Memoria Cache