Sistema de memoria Memorias cache • Almacena datos e instrucciones durante ejecución de un programa • Incidencia dramática en desempeño global del sistema • Ejecución de código accesa memoria de instrucciones • Instrucciones de movimiento de datos accesan memoria de datos Mario Medina C. [email protected] Modelo de memoria Jerarquía de memoria • Modelo de memoria utilizado hasta ahora • Vector lineal de bytes • Almacena datos e instrucciones • Tiempo de acceso constante a cualquier posición • En la práctica, jerarquía de dispositivos • Diferentes capacidades • Diferentes costos • Diferentes tiempos de acceso Jerarquía de memoria • Requerimientos • Entregar gran cantidad de memoria, permitida por tecnología más barata • Proveer alta velocidad de acceso, permitido por tecnología más rápida • “El tiempo de acceso más rápido posible al costo más barato posible” Costo Capacidad Tiempo de acceso Jerarquía de memoria • Principio de funcionamiento • Jerarquía de almacenamiento de creciente tamaño y tiempo de acceso • Mientras más grandes, más lentas • Niveles más rápidos de la jerarquía contienen una copia del subconjunto de datos más utilizados de los niveles de mayor tamaño • Principio de inclusión ® 2014 Mario Medina C. 1 Principio de inclusión Nivel k: 4 9 14 3 Dispositivo más rápido, pequeño y caro en nivel k almacena un subconjunto de los bloques del nivel k+1 Los datos se transfieren entre niveles en bloques Nivel k+1: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Dispositivo más grande, barato y lento del nivel k+1 está dividido en bloques Registros • Registros • • • • • • • Internos al chip Rápidos (a la velocidad de la CPU) Pocos (Pentium 4 tiene 128) Elementos individuales Escritura sincronizada por reloj Muy alta velocidad y baja densidad Utilizados en banco de registros: múltiples puertas de lectura y escritura Memoria dinámica (DRAM) • Almacena bit como carga en un capacitor • Sólo 1 transistor y 1 capacitor por bit • Capacitor necesita ser refrescado ~8ms • Sensibles a perturbaciones como luz y ruido • Memoria puede ser muy densa • Organizada como matriz de filas y columnas • Utilizada para memoria principal y gráfica • Algunas usan códigos correctores de errores Jerarquía de memoria • Registros en la CPU • Memoria RAM (Random-Access Memory) • RAM estática (Static RAM ó SRAM) • RAM dinámica (Dynamic RAM ó DRAM) • Almacenamiento secundario • Medios magnéticos y/o ópticos • Memorias Flash • Memoria en la nube? • Almacenamiento terciario (off-line) • Medios magnéticos y/o ópticos Memoria estática (SRAM) • Almacena un bit en una celda biestable • Circuito de 6 transistores por bit • Consume más energía que DRAM • Mantiene estado mientras tenga energía • Memoria más rápida y cara que DRAM • Tiempo de acceso cercano a TCPU • Organizada como vector • Utilizada en memorias cache • Tanto dentro como fuera del chip Memorias cache • Memorias intermedias entre la CPU y la memoria RAM principal • Almacenan bloques de las instrucciones y datos más frecuentemente usados • Aprovechan el principio de localidad • Localidad temporal y espacial • Base del diseño de sistemas de memoria computacionales • Tiempo de acceso cercano a 10xTCPU ® 2014 Mario Medina C. 2 Principio de localidad Memorias cache • Primer nivel en la jerarquía de memoria • Típicamente en el mismo chip del procesador • Varios niveles: L1, L2, a veces L3 • Tiempo de acceso acorde a velocidad CPU • Objetivo • Mantener el subconjunto de datos más utilizado por el programa dentro del cache • Principio de localidad Principio de localidad • Localidad espacial • Ejemplo: Leer instrucción N, luego N+1, luego N+2, etc., elementos de un vector • Mover bloques de datos contiguos a los niveles superiores de la jerarquía de memoria Nivel k be memoria Desde CPU Nivel k+1 de memoria Bloque X Bloque Y Ejemplo de localidad espacial int sumaFilas(int a[m][n]) { int i, j, suma = 0; for (i = 0; i < m; i++){ for (j = 0; j < n; j++) suma += a[i][j]; } return suma; } • Localidad temporal en i, j, suma • No hay localidad temporal en a[][] • Cada elemento de a[][] se accesa una vez • Localidad espacial en a[][] ® 2014 Mario Medina C. 0 Espacio de direcciones 2n - 1 • Localidad temporal • Pequeña y rápida • 1-3 ciclos para cache L1 A CPU Probabilidad de referencia • Ejemplo: instrucción en lazo iterativo se lee varias veces, variables se reutilizan • Mantener los datos referenciados más recientemente cerca del procesador Ejemplo de localidad espacial int sumaVector(int v[n]) { int i, suma = 0; for (i = 0; i < n; i++) suma += v[i]; return suma; } • Localidad espacial en v[] • Patrón de acceso secuencial • Localidad temporal en suma e i • Cada elemento de v[] se lee sólo una vez • Localidad temporal y espacial en instrucciones Terminología • Acierto (Hit): dato presente en bloque de nivel superior • Tasa de acierto (Hit rate): fracción de accesos a memoria encontrados en nivel superior • Tiempo de acierto (Hit time): tiempo de acceso al nivel superior • Tiempo para determinar si hay acierto + tiempo de acceso a memoria de nivel superior 3 Terminología Principio de funcionamiento • Fallo (Miss): dato debe traerse de bloque de nivel inferior • Tasa de fallas (Miss rate): 1 – (Hit rate) • Penalidad de fallo (Miss Penalty): tiempo para reemplazar el bloque en nivel superior + tiempo para entregar dato a CPU • Generalmente, se da que el tiempo de acierto es mucho menor que la penalidad de fallo • Razón τ = TRAM/Tcache Principio de funcionamiento • Secuencia de acceso a memoria 1. Procesador genera dirección efectiva del dato 2. Dato se busca primero en memoria cache 3. Si dato se encuentra en el cache, se entrega al procesador 4. Si dato no se encuentra en el cache, se busca en el siguiente nivel de la jerarquía de memoria (ej. DRAM) Desempeño de una cache • Aprovechar localidad temporal • Sea τ la razón τ = TRAM/Tcache • Sea β la tasa de aciertos • El aumento en el desempeño del sistema de memoria por tener una cache es • Si dato no se encuentra en el cache, traerlo al cache desde DRAM • Porque es probable que se vuelva a direccionar pronto • Aprovechar localidad espacial • En vez de traer palabra referenciada, traer un bloque de varias palabras • Porque es probable que se direccione pronto palabra cercana G ( RAM CACHE (1 ) • Mientras más lenta la RAM, más importante la cache! • A mayor β, más importante la cache! Desempeño de una cache Aumento de desempeño en función de τ 5 10 20 30 40 50 50 45 Aumento de desempeño 40 35 30 25 20 15 10 5 0 0.7 0.75 0.8 0.85 0.9 0.95 1 Tasa de aciertos β ® 2014 Mario Medina C. 4