ELO311 Estructuras de Computadores Digitales Memoria Tomás Arredondo Vidal Este material está basado en: material de apoyo del texto de David Patterson, John Hennessy, "Computer Organization & Design", (segunda y tercera edición), Morgan Kaufmann, CA. 2005 materia del curso de Mary Jane Irwin en PSU, EEUU material del curso anterior ELO311 del Prof. Leopoldo Silva www.wikipedia.org Interconexión del sistema bus Processor Main Memory Receiver Keyboard La computadora usa un bus como enlace de comunicación para conectar múltiples subsistemas Cosas de interés son Performance Expandabilidad Resistencia en caso de falla (fault tolerance) Interconexión del sistema (cont) Generalmente se tiene mas de un aparato de input/output (I/O) en el sistema Cada aparato tiene un controlador de I/O interrupt signals Processor Cache Memory Memory - I/O Bus Main Memory I/O Controller Disk Disk I/O Controller Terminal I/O Controller Network Características del Bus Control Lines Data Lines Líneas de Control Señales de control y acks Indican el tipo de información en las líneas de datos Líneas de Datos Datos, instrucciones complejas y direcciones Transacción en el bus consiste de Enviar la dirección Recibir o enviar los datos Transacción de Output (Read) en el BUS Definido por lo que le hacen a la memoria read = output: transfiere datos desde memoria (read) a aparato de I/O (write) Step 1: Processor sends read request and read address to memory Control Main Memory Processor Data Step 2: Memory accesses data Control Main Memory Processor Data Step 3: Memory transfers data to disk Control Main Memory Processor Data Transacción de Input (Write) en el BUS Definido por lo que le hacen a la memoria write = input: transfiere datos desde el aparato de I/O (read) a memory (write) Step 1: Processor sends write request and write address to memory Control Main Memory Processor Data Step 2: Disk transfers data to memory Control Main Memory Processor Data Ventajas y Desventajas de BUSES Ventajas Versatilidad Nuevos aparatos (devices) se pueden agregar fácilmente Periféricos se pueden intercambiar entre sistemas computacionales con el mis standard de bus Bajo Costo: Un set de cables se comparte en múltiples maneras Desventajas Crea un cuello de botella de comunicaciones El bandwidth limita el máximo flujo (throughput) La velocidad del bus se limita principalmente por El largo del bus El numero de aparatos conectados al bus Tiene que soportar un rango de aparatos con tasas de transferencia y latencias que varían Tipos de Buses Bus Procesador-Memoria (propietario) Corto y de alta velocidad Diseñado para que el sistema de memora maximiza el ancho de banda de memoria-procesador Optimizado para transferencias de bloques de cache Bus I/O (estándar industrial, e.g., SCSI, USB, ISA, IDE) Mas largo y mas lento Debe acomodar una multitud de aparatos de I/O Conecta al bus procesador-memora o al bus principal de la maquina (backplane bus) Bus Backplane (estándar industrial, e.g., PCI) El bus de backplane es la estructura de interconexión en el chasis Se usa como un bus intermediario conectando los buses de I/O con el bus de procesador-memoria Sistema con Dos Buses Processor-Memory Bus Processor Memory Bus Adaptor I/O Bus Bus Adaptor Bus Adaptor I/O Bus I/O Bus I/O buses I/O se conectan al bus processor-memory usando Adaptadores de Bus (que hacen el interfaz para equiparar las diferentes velocidades de los buses) Bus processor-memory: principalmente para trafico processormemory Bus I/O: proveen slots de expansión para aparatos de I/O devices Sistema con Tres Buses Processor-Memory Bus Processor Memory Bus Adaptor Bus Adaptor Backplane Bus Bus Adaptor I/O Bus I/O Bus Se agrega un pequeño numero de buses de Backplane Buses conectado al bus de Processor-Memory Ventaja: carga en el bus Processor-Memory es reducido Ejemplo: Sistema I/O (Apple Mac 7200) Típico de sistemas medianos al fines de los 90 Processor Cache Memory Main Memory PCI Interface/ Memory Controller Processor-Memory Bus Audio I/O Serial ports I/O Controller I/O Controller CDRom Disk Tape SCSI bus PCI I/O Controller Graphic Terminal I/O Controller Network Ejemplo: Sistema Pentium Processor-Memory Bus Memory controller (“Northbridge”) PCI Bus I/O Buses http://developer.intel.com/design/chipsets/850/animate.htm?iid=PCG+devside& Repaso: Componentes de una Computadora Processor Control Datapath Devices Memory Input Output Principio de Localidad Los programas acceden a una parte relativamente pequeña de su espacio de direcciones durante un espacio corto de tiempo Localidad Temporal Si un elemento es referenciado, volverá a ser referenciado pronto (e.g. bucles o loops) Localidad Espacial Si un elemento es referenciado, los elementos cuyas direcciones están próximas tenderán a ser referenciados pronto (e.g. elementos en un arreglo, instrucciones que se acceden en forma secuencial) Jerarquía y Memoria Cache Dado el principio de localidad y que hay diferencias de costo y tiempo de acceso, es ventajoso construir la memoria como jerarquía de niveles. El cache es una memoria rápida en acceso a sus componentes, relativamente pequeña en su número de componentes, y por el momento costosa en dinero que interactúa directamente con el procesador. Suele ser memoria estática SRAM (por static random access memory, memoria estática de acceso aleatorio) y recientemente SSRAM (memoria estática sincrónica de acceso aleatorio). Costos y Velocidades Típicas de la Memoria Usando el principio de localidad: Presentar al usuario con la mayor memoria disponible en la tecnología mas barata. Dar acceso en la velocidad ofrecida por la tecnología mas rápida. L1 cache L2 cache On-Chip Components Control .1’s Size (bytes): 100’s Cost: Instr Data Cache Cache Speed (ns): ITLB DTLB RegFile Datapath eDRAM Second Level Cache (SRAM) Main Memory (DRAM) 1’s 10’s 100’s 1,000’s 100K’s M’s-G’s T’s 10K’s highest Secondary Memory (Disk) lowest Características de la Jerarquía de Memoria Processor Distancia del procesador en tiempo de acceso L1 L2 Main Memory Secondary Memory Tamaño relativo de la memoria en cada nivel Inclusive– lo que esta en L1 es un subconjunto de lo que esta en L2 que es un subconjunto de MM que es un subconjunto de SM Jerarquía y Memoria Cache (cont) La memoria cache es accedida directamente por el procesador y ésta puede acceder al siguiente elemento de la jerarquía que es la memoria denominada principal. En la jerarquía se copian datos solamente entre niveles adyacentes de memoria La unidad de información se denomina bloque, se transfiere un bloque completo cuando se copia entre niveles Jerarquía de Memoria: Tecnologías Acceso Aleatorio (Random Access) “Aleatorio” es bueno: tiempo de acceso es el mismo para todas las ubicaciones DRAM: Dynamic Random Access Memory Alta densidad (celdas de 1 transistor), bajo poder, baratas, lentas Dynamic: tienen que ser refrescadas regularmente (~ cada 8 ms) SRAM: Static Random Access Memory Baja densidad (celdas de 6 transistores), alto consumo, caras, rápidas Estática: contenidos duran para siempre (hasta que se apague la energía) Tamaño: DRAM vs SRAM - 1 a 4 Costo: SRAM vs DRAM - 1 a 8 Tecnologías no aleatorias Tiempos de acceso varían de ubicación a ubicación y en el tiempo (e.g., Disco, CDROM) Ciclo de Lectura Típico de RAM Para leer se coloca la dirección en el bus, luego se activa el Chip Enable y el Output Enable (con WE’ alto y CE’ y OE’ bajas), después del tiempo de acceso (en el orden de varios ns) se tienen datos válidos en el bus Dout. Otra Version: http://www.eventhelix.com/realtimemantra/faulthandling/bus_cycles.htm Ciclo de Escritura Típico de RAM Se colocan los datos en Din, y la dirección en el bus; luego se activan Chip Enable(CE’ baja) y Write Enable. Los datos son escritos en el canto de subida de WE’. La señal Write Enable es un pulso con requerimientos de ancho mínimo, más que un reloj. Adicionalmente deben cumplirse tiempos de set-up y hold. El dispositivo externo debe colocar datos en el bus bidireccional. Otra Version: Ejemplo: SRAM de 4x2 (un decodificador) Organizacion de SRAM (dos decodificadores) bit (data) lines r o w d e c o d e r dirección de fila Cada intersección representa una celda de 6Transistores RAM Cell Array seleccionador de palabra Column Selector & I/O Circuits 4 palabra de datos dirección de columna Una fila tiene un bloque de datos, y la dirección de la columna selecciona la palabra (word) de ese bloque Ejemplo: SRAM de 32Kx4 (dos decodificadores) 1 1 1 1 Organizacion DRAM (usando planos) .. . bit (data) lines r o w d e c o d e r Cada intersección es una celda DRAM de 1 transistor RAM Cell Array word (row) select column address row address Column Selector & I/O Circuits data bit data bit . . . data bit ord w data La dirección de la columna selecciona el bit de cada fila en el plano Ejemplo: DRAM de 1Mx1 (1 plano) 1024 1 Definiciones de Memoria RAM Cache usa SRAM para velocidad Memoria Principal usa DRAM por su mayor densidad Dirección (addresses) se divide en 2 partes (row and column) RAS or Row Access Strobe activa decodificador de fila CAS or Column Access Strobe activa decodificador de columna Performance de DRAMs Latencia: Tiempo para leer una palabra Tiempo de acceso: tiempo entre petición y cuando llegan palabras Tiempo de ciclo: tiempo entre peticiones Usualmente tiempo de ciclo > tiempo de acceso Bandwidth: Cuantos datos se pueden leer por unidad de tiempo ancho del canal de datos * la tasa en que se puede usar Operación de DRAM Clásica Column Address N rows x N column x M-bit Leer o Escribir M-bits a la vez Cada acceso de M-bits requiere un ciclo RAS / CAS N cols DRAM N rows Organización de DRAM: Row Address M bits M-bit Output Cycle Time 1st M-bit Access 2nd M-bit Access RAS CAS Row Address Col Address Row Address Col Address Maneras de Mejorar la Performance de DRAM Memory interleaving Fast Page Mode DRAMs – FPM DRAMs www.usa.samsungsemi.com/products/newsummary/asyncdram/K4F661612D.htm Extended Data Out DRAMs – EDO DRAMs www.chips.ibm.com/products/memory/88H2011/88H2011.pdf Synchronous DRAMS – SDRAMS www.usa.samsungsemi.com/products/newsummary/sdramcomp/K4S641632D.htm Rambus DRAMS www.rambus.com/developer/quickfind_documents.html www.usa.samsungsemi.com/products/newsummary/rambuscomp/K4R271669B.htm Double Data Rate DRAMs – DDR DRAMS www.usa.samsungsemi.com/products/newsummary/ddrsyncdram/K4D62323HA.htm Incrementar el Bandwidth - Interleaving Patron de acceso sin interleaving: Cycle Time CPU Memory Access Time D1 available Start Access for D1 Start Access for D2 D2 available Memory Bank 0 Con interleaving de 4 vias: CPU Memory Bank 1 Access Bank 0 Memory Bank 2 Memory Bank 3 Access Bank 1 Access Bank 2 Access Bank 3 We can Access Bank 0 again Problemas con Interleaving Cuantos bancos de memoria? Idealmente, el numero de bancos ≥ numbero relojes que tenemos que esperar para acceder a la proxima palabra en el banco Solo funciona para accesos secuénciales (i.e., primera palabra pedida en el primer banco, segunda en el segundo, etc) Típicamente se usa sola para sistemas de memoria muy grandes (e.g. supercomputadoras) Operación de DRAM : Modo Fast Page Column Address Fast Page Mode DRAM N cols N x M “SRAM” para ahorrar fila N rows Después que una fila se lee al DRAM “registro” SRAM Solo CAS se necesita para acceder a otros bloques de Mbits en esa fila N x M “SRAM” RAS se mantiene mientras se cambia CAS M-bit Output 1st M-bit Access 2nd M-bit 3rd M-bit Row Address M bits 4th M-bit RAS CAS Row Address Col Address Col Address Col Address Col Address Porque nos importa la jerarquía de Memoria? Distancia Procesador-Memoria DRAM CPU “Moore’s Law” Processor-Memory Performance Gap: (grows 50% / year) 100 10 DRAM 1 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 Performance 1000 µProc 60%/year (2X/1.5yr) Time DRAM 9%/year (2X/10yrs) Jerarquia de Memoria: Objetivos Hecho: Memorias grandes son lentas, memorias rápidas son pequeñas Como creamos una memoria que da la ilusión de ser grande, barata y rápida (la mayoría del tiempo)? ….tomando ventaja de El principio de la Localidad: Programas acceden a una porción relativamente pequeña del espacio de memoria en un instante de tiempo. Probability of reference 0 Address Space 2n - 1 Jerarquía de Memoria: Como funciona? Localidad Temporal: Mantener los datos mas recientemente accedidos mas cercanos al procesador Localidad Espacial: Mover los bloques de palabras contiguas a los recientemente accedidos a niveles mas cercanos al procesador To Processor Upper Level Memory Lower Level Memory Blk X From Processor Blk Y Jerarquía de Memoria: Terminología Hit (éxito): datos están en un bloque en nivel alto (Block X) Tasa de éxito (Hit Rate): la fracción de acceso de memoria que se resuelven en el nivel alto Tiempo de éxito (Hit Time): Tiempo para acceder al nivel alto que consiste de: tiempo acceso a RAM + tiempo para determinar hit/miss To Processor Upper Level Memory Lower Level Memory Blk X From Processor Blk Y Miss (falla): datos tienen que ser sacados de un bloque en nivel bajo (Block Y) Tasa de Falla (Miss Rate) = 1 - (Hit Rate) Penalidad de Falla (Miss Penalty): Tiempo para reemplazar un bloque en el nivel mas alto + Tiempo para enviar bloque al procesador Hit Time << Miss Penalty Jerarquía de Memoria: Cálculos Ciclos de detención en memoria de instrucciones = Instrucciones * Tasa de fallos * Penalización por fallos Ciclos de detención en memoria de datos = Instrucciones que accesan memoria * Tasa de fallos * Penalización por fallos Penalización total = Ciclos de detención-memoriainstrucciones + Ciclos de detención-memoria -datos Quien Maneja las Jerarquías? registros <-> memoria por compilador y programador cache <-> memoria principal por el hardware (HW) memoria principal <-> discos por el HW y el sistema operativo por el programador (archivos) Cache de Mapeo Directo Cada localización de memoria se mapea en una localización en la cache. Índice establece el número de direcciones de la cache ( 2i celdas). Cache de Mapeo Directo (cont) Existen muchas direcciones que tienen igual campo índice y se almacenarán en la misma dirección de la cache, esto implementa el mecanismo de acceso denominado directo. Al inicio se marcan todas las celdas de la cache como invalidas (campo V igual a cero). Al intentar leer una dirección se producirá un fallo, entonces se leerá desde la memoria principal y se traerá el contenido al campo dato de la cache; y se escribe el campo marca con los m bits más significativos de la dirección en la celda índice de la caché y se marca como válida (V = 1). Si más adelante se desea leer una dirección que tenga el mismo índice pero con diferente marca se producirá un fallo. Y se reescribe la marca (desde el bus de dirección) y el nuevo dato que se trae desde la memoria principal. Cache de Mapeo Directo con Bloques Para aprovechar la localidad espacial el bloque de la cache contiene varias palabras adyacentes (una potencia de dos). Los bits dedicados a la administración de la cache (válido, marca) disminuyen al aumentar el tamaño del bloque. Cache de Mapeo Directo con Bloques (cont) Si se produce un fallo (de lectura), deben ahora traerse desde la memoria principal 2Offset Bloques palabras adyacentes. Al aumentar el tamaño del bloque disminuye la tasa de fallos, este efecto es más notable en la cache de instrucciones debido a la mejor localidad espacial. Cache Asociativo Para flexibilizar la colocación de los bloques la cache asociativa de n vías, permite colocar un bloque en n posiciones. Cache Asociativo (cont) El diagrama anterior ilustra una cache asociativa por conjuntos de dos vías y muestra la comparación necesaria, realizada en paralelo, para ubicar a un bloque que puede estar en dos posiciones (en la primera o segunda vía). En el ejemplo sólo pueden estar en la cache dos bloques que tengan igual índice; en caso de requerir colocar un tercero, con igual índice, debe aplicarse alguna política de reemplazo (e.g. aleatorio, menos usada) Tabla de Páginas Para tener completa asociatividad se emplea una Tabla de Páginas residente en memoria, que tiene como índice el número de página virtual y como contenido el número de página física, además de un bit para indicar si la página está o no presente en lamemoria. Cada programa tiene su propia tabla de páginas, y se dispone un registro en el procesador para apuntar a la tabla de página activa. Resumen DRAM es lento pero denso y de bajo costo Bueno para un sistema de memoria GRANDE SRAM es rápido pero caro y no muy denso Tiempos de acceso RAPIDOS Dos tipos de localidad Temporal Espacial Usando el principio de localidad: Presentar al usuario con la mayor memoria posible en la tecnología mas barata Provee acceso a la tecnología ofrecida por la tecnología mas rápida