Organización del Computador I Verano. Jerarquía de Memoria Basado en el capítulo 5 del libro de Patterson y Hennessy

Documentos relacionados
Introducción a memorias cache

Memoria y caché. Organización del Computador I, verano de 2016

Sistema de memoria. Introducción

Arquitectura de Computadores II Clase #6

Microprocesadores para comunicaciones. Escuela Técnica Superior de Ingenieros de Telecomunicación. Organización y estructura de las memorias caché

Organización lógica Identificación de bloque

Miss rate vs. Tamaño de bloque En general el MR baja cuando se aumenta el tamaño del bloque.

Miss rate vs. Tamaño de bloque En general el MR baja cuando se aumenta el tamaño del bloque.

Jerarquía de Memoria Memoria Cache

Organización del Sistema de Memoria. 1. Tipos de memoria 2. Jerarquía de memoria 3. El principio de localidad 4. Organización de la memoria

Trabajo Práctico Número 6

Memoria. Otros temas sobre cachés

Memoria. Organización de memorias estáticas.

Introducción a la Computación. Capitulo 4 Memoria Cache

Universidad de Sonora Arquitectura de Computadoras 2

Arquitectura de Computadoras

Arquitectura de Computadoras para Ingeniería

Sistema Cache. Técnicas Digitales III Ing. Gustavo Nudelman Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Memoria. Otros temas sobre cachés

Memoria caché básica

Subsistemas de memoria. Departamento de Arquitectura de Computadores

Tema 4: Introducción a la Jerarquía de Memoria

UNIDAD TEM ATICA 3: ACELERACI ON DEL ACCESO A MEMORIA.

Tema 6: Memoria virtual. Óscar David Robles Sánchez Sofía Bayona Beriso David Miraut Andrés Luis Rincón Córcoles

Unidad II: Memorias. Ing. Marglorie Colina

Tema II. Unidad de memoria

Memorias FORMAS DE ESCRITURA

Arquitectura de Computadores

Diseño de la jerarquía de memoria

Organización del Computador 1 Memoria Cache

Práctica 5 - Memoria Cache

2º Cuatrimestre MÓDULO 11: Introducción a la jerarquía de memoria. fc 2

Memoria Virtual. Memoria Virtual

Reducción de la penalización por fallo Técnica: Dar prioridad a los fallos de lectura sobre la escritura (I)

Organización del Computador I. Memoria Cache. Autor: Alejandro Furfaro

Organización del Computador. Memorias

Organización de computadoras. Clase 11. Universidad Nacional de Quilmes. Lic. Martínez Federico

Memoria Cache. Departamento de Arquitectura de Computadores

Clase Práctica Memoria Caché

Organización del Computador I. Memoria Cache. Autor: Alejandro Furfaro

Arquitectura de Computadores II Clase #6

Arquitectura de Computadores II Clase #6

Cache. Ing. Marcelo Doallo. Septiembre 2013

Tema 0. Introducción a los computadores

Tema II. Unidad de memoria

Aspectos avanzados de arquitectura de computadoras Jerarquía de Memoria II. Facultad de Ingeniería - Universidad de la República Curso 2017

Arquitectura y Tecnología de Computadores (09/10) Organización. Jerarquía de Memoria

Jerarquía de memoria - Motivación

Trabajo Práctico Número 6 Arquitectura de Computadoras

Arquitectura de Computadoras para Ingeniería

Memoria Caché. Algorítmo de Mapeo Directo

Introducción. Universidad de Sonora Arquitectura de Computadoras 2

Sistema Operativo. Repaso de Estructura de Computadores. Componentes Hardware. Elementos Básicos

Memoria virtual Ubicación de bloque en paginación

QUÉ ES LA MEMORIA CACHÉ?

Tema 13. Memoria cache

Registros. Cache L1. Cache L2. Memoria Principal (RAM) Memoria Secundaria (Disco) Memoria Terciaria (Cinta)

Problemas de estructura y tecnología de computadores Hoja 6: Temas 12, 13 y 14

INTRODUCCIÓN A LA UNIDAD DE MEMORIA

Registros. Cache L1. Cache L2. Memoria Principal (RAM) Memoria Secundaria (Disco) Memoria Terciaria (Cinta)

Memorias. Docente: Ing. Víctor Cárdenas Schweiger

MODULO DE MEMORIA RAM. Ing. Raúl Rojas Reátegui

Memoria y Entrada/Salida Tecnología Organización - Expansión

Arquitectura de Computadores II Clase #6

Arquitectura de Computadores Problemas (hoja 4). Curso

Electrónica Digital II

Caches unificadas vs. Caches separadas Comparativa (I)

Tema 0. Introducción a los computadores

Tema 5. El Sistema de Memoria

Tema 6: Sistema de memoria

Guía de ejercicios # 11 - Jerarquía de memoria

Mapa de memoria. memoria CACHÉ

Memorias RAM. Basilio B. Fraguela Rodríguez. Copyright Basilio B. Fraguela 2006

Gestión de memoria Profesores y tutorías

Memoria Virtual. Ing. Jorge Castro-Godínez

Tecnología Electrónica 3º Ingeniero Aeronáutico. Memorias. Mª Ángeles Martín Prats

ELEMENTOS HARDWARE DEL ORDENADOR. Memoria Principal (RAM)

ELO311 Estructuras de Computadores Digitales. Memoria

Memoria virtual. 6. La: memoria. Fundamentos de Computadores Ingeniería de Telecomunicación. Departamento de Automática Escuela Politécnica Superior

Introducción. Universidad de Sonora Arquitectura de Computadoras 2

TEMA 12: MEJORA DE LAS PRESTACIONES DE LA MEMORIA

Sistemas Operativos. Curso 2016 Administración de memoria II

UNIDAD 2. Unidad de Microprocesador (MPU) Microprocesadores Otoño 2011

Tema 4 SUBSISTEMAS DE MEMORIA. Estructura de Computadores OCW_2015 Nekane Azkona Estefanía

Tema 6 (II) Jerarquía de Memoria

Memoria Virtual. Memoria Virtual

Memoria virtual Ejercicios resueltos

GESTION DE LA MEMORIA

Capítulo 2 Organización y estructura de la memoria cache Ampliación: Políticas de ubicación en caches

Tema 0. Introducción a los computadores

Pr. Dr. Xavier Bonnaire

Organización de Computadoras

ENTRADA-SALIDA. 2. Dispositivos de Carácter: Envía o recibe un flujo de caracteres No es direccionable, no tiene operación de búsqueda

Práctica 5 - Memoria

Práctica 8 - Performance

Tema 5 Jerarquía de Memoria

Contenidos. Arquitectura de ordenadores (fundamentos teóricos) Elementos de un ordenador. Periféricos

Transcripción:

Organización del Computador I Verano Jerarquía de Memoria Basado en el capítulo 5 del libro de Patterson y Hennessy Verano 2014 Profesora Borensztejn

Memoria Los registros y los bancos de registros se utilizan para la construcción de memorias pequeñas. Las memorias mas grandes se realizan mediante: SRAM: Static Random Access Memory DRAM: Dynamic Random Access Memory

SRAM Se llaman de acceso aleatorio porque el tiempo de acceso para acceder cualquier dato es fijo. Cada celda de memoria SRAM es básicamente como el biestable D que estudiamos en clases pasadas. Dirección D entrada 15 8 WE CS SRAM 32K x 8 OE 8 D salida 3 líneas de control WE: Write Enable CS: Chip Select OE: Output Enable 15 líneas de dirección 8 líneas de datos de entrada 8 líneas de datos de salida

SRAM Para iniciar un acceso de lectura o escritura, la señal CS debe estar activa. Para realizar una lectura: debe activarse la señal OE, que es útil cuando se conectan varios chips de memoria, y sirve para determinar cual de ellos accede al bus. El tiempo de acceso de lectura de una memoria SRAM es el tiempo desde que se activa OE, y las líneas de dirección son válidas, hasta que el dato está presente en las salidas. Suele ser del orden de los 5nseg. Dirección D entrada 15 8 WE CS OE Para realizar una escritura SRAM 32K x 8 8 D salida debe activarse la señal WE durante un tiempo mínimo, y el dato y su dirección deben estar disponibles durante un tiempo antes (setup time) y mantenerse durante un tiempo posterior (hold time) a la activacion de la señal WE El tiempo para completar una escritura se especifica como una combinación del setup time, hold time y la duración de la señal WE.

SRAM Si bien se construyen con biestables D, igual que los registros, para seleccionar la salida no se usa un multiplexor. Seria demasiado grande! (multiplexor de 32K a 1!) Se realizan mediante una línea de salida compartida entre varias celdas de memoria. Cada celda tiene su salida implementada con un buffer tri-estado: Selección 0 Dato 0 Selección 1 Dato 1 Permiso Entrada Permiso Entrada Salida Salida Selección 2 Dato 2 Permiso Entrada Salida Salida Selección 3 Dato 3 Permiso Entrada Salida

SRAM de 4x2 WE D entrada(1) D C Q D entrada(0) D C Q Permiso Permiso 0 D C Q D C Q Permiso Permiso Dirección 1 D C Q D C Q 2 Permiso Permiso D C Q D C Q 3 Permiso Permiso D salida(1) D salida(0)

DRAM En las DRAM el valor almacenado se mantiene como una carga en un capacitor. El transistor permite acceder al valor almacenado en el capacitor. Word line Pass transistor Capacitor Bit line Para escribir: Cuando la señal de línea de palabra está activada, el transistor se abre conectando el capacitor con la línea de bit. Si el valor de la línea es 1, el capacitor se carga. Si el valor de la línea es 0, se descarga.

DRAM Para leer: Se carga la línea de bit con un valor medio entre el voltaje alto y bajo Se activa la línea de palabra, abriendo el transistor. La carga del capacitor se mueve hacia la línea de bit, provocando un cambio en ella. Se mide el cambio y se detecta si era un cero o un uno dependiendo de hacia donde se movió el voltaje en la línea de bit. La lectura es destructiva! Se descargó el capacitorè volver a escribirlo. Word line Pass transistor Capacitor Bit line

DRAM bit (data) lines r o w d e c o d e r RAM Cell Array Cada intersección representa un bit word (row) select row address Column Selector & I/O Circuits data Column Address Selecciona un bit

DRAM Direccionamiento de dos niveles: primero se le da la dirección de fila y luego la de columna. La dirección de fila activa la línea de palabra y todas las columnas se almacenan en un conjunto de cerrojos. La dirección de columna selecciona el bit. El tiempo de acceso es mas grande que en las SRAM, del orden de 5 a 10 veces mas. Además, los capacitores pierden carga y es necesario refrescar los contenidos. Ocupa menos área por bit que la SRAM Es mas barata. WE OE Dirección 9 CAS DRAM 256K x 8 8 D entrada D salida RAS

DRAM Generations Year Capacity $/GB 1980 64Kbit $1500000 1983 256Kbit $500000 1985 1Mbit $200000 1989 4Mbit $50000 1992 16Mbit $15000 1996 64Mbit $10000 1998 128Mbit $4000 2000 256Mbit $1000 2004 512Mbit $250 2007 1Gbit $50 2010 2Gbit $30 2012 4Gbit $1 2014

Jerarquía de Memoria Los usuarios quieren una memoria rápida e infinita. Las tres tecnologías de fabricación de memoria varían en precio y tiempo de acceso: Tiempo de Acceso: SRAM: 0.5-2.5 nseg DRAM: 50-70 nseg Disco magnético: 5-20 millones nseg. Precios: SRAM: $500-$1000 por GiB DRAM: $10-$20 por GiB Disco magnético: $0,05- $0,10 por GiB Levels in the memory hierarchy Darle la máxima capacidad con la tecnología mas barata al mismo tiempo que se le proporciona acceso a la velocidad mas rápida CPU Level 1 Level 2 Level n Size of the memory at each level Increasing distance from the CPU in access time

Flash Storage Nonvolatile semiconductor storage 100 1000 faster than disk Smaller, lower power, more robust But more $/GB (between disk and DRAM)

Flash Types NOR flash: bit cell like a NOR gate Random read/write access Used for instruction memory in embedded systems NAND flash: bit cell like a NAND gate Denser (bits/area), but block-at-a-time access Cheaper per GB Used for USB keys, media storage, Flash bits wears out after 1000 s of accesses Not suitable for direct RAM or disk replacement Wear leveling: remap data to less used blocks

Localidad Es el principio que hace que la jerarquía de memoria sea una buena idea Si un dato es referenciado: Localidad temporal: volverá a ser referenciado pronto Localidad espacial: datos cercanos al actual serán inmediatamente referenciados La localidad es una característica de los programas y de sus datos! El código...suele tener mucha localidad espacial y/o temporal. Los datos que referencia dicho código...depende del programa

Jerarquía de Memoria La jerarquía de memoria puede estar compuesta por varios niveles: Las transferencias de información se dan entre niveles adyacentes La unidad mínima de información que se transfiere entre dos niveles (el inferior y el superior) se llama bloque. Hit (Acierto): el dato buscado está en el nivel superior Miss (Fallo): el dato buscado NO está en el nivel superior.

Jerarquía de Memoria Processor Datapath Control Registers On-Chip Cache Second Level Cache (SRAM) Main Memory (DRAM) Secondary Storage (Disk) Speed (ns): 1 10s 100s 10,000,000s Size (bytes): 100s (10s ms) Ks Ms Gs Memoria caché Memoria virtual

Memorias Cachés Ideado por Wilkes, 1960. Las llamó memorias esclavas. Actualmente se implementan con SRAM. Principio de operación: La CPU pide un dato El dato se busca en la caché Si no está (Miss) El dato se trae a la memoria caché y se entrega a la CPU Si está (Hit) El dato se entrega a la CPU Dos preguntas: Como se sabe si el dato está o no en la caché? Y si está, como se localiza?

Caché de Mapeo Directo Donde se ubica un dato? En una posición única de la caché. Como se asigna esa posición única? En relación con la dirección del dato en memoria. Supongamos que el dato constituye un bloque Dirección del bloque en caché = (dirección del bloque en memoria) módulo (número de bloques de la caché) Si el número de bloques en caché es una potencia de 2, la operación módulo es simplemente quedarse con los log 2 bits de menor peso de la dirección.

Caché de Mapeo Directo Cache 000 001 010 011 100 101 110 111 00001 00101 01001 01101 10001 10101 11001 11101 Memory

Caché de Mapeo Directo Si cada bloque de la caché puede contener los datos de unas cuantas direcciones de memoria Como se sabe si los datos que están en la caché son los deseados? Es decir, como se sabe si hay hit o miss? Añadiendo a la caché un conjunto de etiquetas (tags) que contienen la información necesaria para identificar a un dato en la caché: tag = (dirección del bloque en memoria) div (número de bloques de la caché) El tag está formado por los bits altos de la dirección del dato en memoria que NO se usan para indexar a la memoria caché.

Caché de Mapeo Directo Hit Index 0 1 2 Tag 1021 1022 1023 Address (showing bit positions) 31 30 13 12 11 2 1 0 20 10 Index Valid Tag Data 20 32 Byte offset Un bit de validez se agrega para saber si la entrada es válida Data Caché de 1024 palabras (de 32 bits) Se direcciona con los bits A 2..A 11. El tag está compuesto por los bits A 12..A 31 Los bits A 0 y A 1 sólo interesan para seleccionar el byte dentro de la palabra (bloque).

Caché de Mapeo Directo La caché almacena tanto datos como tags. Calcular el tamaño de una caché de mapeo directo sabiendo que: Las direcciones son de 32 bits Los bloques son de 4 bytes La caché tiene 2 n bloques Tag= 32 (n+2) bits Numero Total de Bits= 2 n * (tamaño del bloque +tamaño tag+tamaño validez) Numero Total de Bits= 2 n * (32+(32-n-2) +1= 2 n * (63-n)

Caché de Mapeo Directo Cuantos bits se necesitan para realizar una caché de mapeo directo con 64KB de datos y bloques de una palabra, suponiendo direcciones de 32 bits? Las direcciones son de 32 bits Los bloques son de 4 bytes La caché tiene 2 14 bloques (64 KB son 16KW) Numero Total de Bits= 2 14 * (32+(32-14-2) +1= 2 14 * 49=784Kbits 784Kbits=98KB Respuesta: Para implementar una caché de 64KB se necesita almacenar 98KBè 1,5 veces mas que los datos

Memoria Caché en nuestra máquina Para implementar cachéè reemplazamos las memorias del camino de datos por cachés de datos y de instrucciones Un acierto...es fácil de implementar por el control. Un fallo: Parar la CPU: congelar los valores de los registros Un control separado realiza el acceso a memoria Una vez que los datos están presentes, se reanuda la CPU en el ciclo en que se había bloqueado

Supongamos un fallo de instrucción Los contenidos de IR no son válidos La dirección que provocó el fallo es PC-4 (se puede calcular usando una UF y guardándolo en los registros de segmentación) Se accede a la memoria principal La CPU espera que el acceso esté finalizado, y Escribe el dato en la caché: Se indexa con los bits bajos (menos los 2 de menos peso) lo que viene de la memoria externa, se escribe en la parte de datos Lo que sale de la ALU (los bits más altos) en el tag Poner a válida la entrada Reiniciar la ejecución de la instrucción en el primer paso (Fetch) Memoria Caché en nuestra máquina

Un ejemplo: La caché de DECStation 3100 B y t e o f f s e t H i t T a g 16 1 4 I n d e x D a t a Utiliza el MIPS R2000 I n d e x V a l i d T a g D a t a 0 1 Caché de 64KB 2 2 14-1 16 32 Memorias cachés separadas de instrucciones y datos 0

Un ejemplo: La caché de DECStation 3100 Lecturas: (a cualquier caché) Enviar dirección (PC o ALU) Si es hità dato presente en las líneas de datos Si es missà enviar dirección a memoria principal, esperar los datos y escribirlos en caché Escrituras: (a cualquier caché) Enviar dirección Si es hità escribir los datos en caché y en memoria principal (porque sino, quedan incoherentes): escritura a través (write through) Si es missà para que leer de memoria principal? Escribir los datos y también el tag en caché, escribir en memoria principal.

Un ejemplo: La caché de DECStation 3100 Problemas con la política de escrituras: Se tarda mucho tiempo escribiendo en memoria principalà solución: usar buffers de escritura Una vez que se escribió en caché y en los buffers, la ejecución puede reanudar. Cuando la escritura en memoria finaliza, se libera el buffer: el DECStation tiene un buffer de 4 palabras Alternativa a la política write through para lecturas Sólo se escribe en memoria principal cuando hay reemplazo de bloque...(hablamos de reemplazos?) Reemplazo de Bloque: Cuando hay un miss, y se trae el nuevo bloque, y la posición donde este debe ser ubicado está ocupada, se debe desalojar la línea vieja.

Caché de Mapeo Directo Aprovechar la localidad espacial: Aumentando el tamaño del bloque, en caso de fallo se trae no sólo la palabra que produjo el fallo, sino también las subsiguientes. A d d r e s s ( s h o w i n g b i t p o s i t i o n s ) 3 1 1 6 1 5 4 3 2 1 0 H i t T a g 16 12 2 B y t e o f f s e t I n d e x B l o c k o f f s e t D a t a 1 6 b i t s 1 2 8 b i t s V T a g D a t a 4 K e n t r i e s 1 6 3 2 3 2 3 2 3 2 M u x 3 2

Caché de Mapeo Directo Aprovechar la localidad espacial: Aumentando el tamaño del bloque, en caso de fallo se trae no sólo la palabra que produjo el fallo, sino también las subsiguientes. Que cambia? En el caso de write miss, hay que leer la línea de memoria principal: escribir los datos y el tag Luego, realizar la escritura del dato que provocó el miss Escribir también memoria principal (o en los buffers)

Rendimiento Aumentar el tamaño del bloque hace descender la tasa de fallos Si los bloques son muy grandes en relación al tamaño total de la caché, entonces habrá mucha competencia por el lugarè muchos desalojos antes de poder referenciar las palabras de los bloques. Miss rate 40% 35% 30% 25% 20% 15% 10% 5% Miss Rate (tasa de misses)= Número de Misses/Total de Accesos 0% 4 16 64 256 Block size (bytes) 1 KB 8 KB 16 KB 64 KB 256 KB

Rendimiento Hay más localidad espacial en el código: es más sensible al aumento del tamaño del bloque. Podría ser mejor usar cachés separadas y darles a cada una el tamaño de bloque idóneo. Program Block size in words Instruction miss rate Data miss rate Effective combined miss rate gcc 1 6.1% 2.1% 5.4% 4 2.0% 1.7% 1.9% spice 1 1.2% 1.3% 1.2% 4 0.3% 0.6% 0.4%

Modelo Simplificado: Rendimiento tiempo ejecución = (ciclos ejecución + ciclos bloqueo) tiempo ciclo ciclos bloqueo = # de instrucciones M tasa de miss penalización del miss ciclos bloqueo = # de instrucciones tasa de miss/instrucciones penalización del miss

Rendimiento Ejemplo: Determinar cuanto más rápida sería una máquina con una caché ideal respecto a esta: Para gcc se asume: Tasa de fallos de instrucciones del 2% Tasa de fallos de datos del 4% CPI =2 sin bloqueos de memoria Penalización por fallo=40 ciclos Frecuencia de instrucciones del gcc: 36% de lecturas/escrituras ciclos bloqueo debidos a instrucciones= I*2%*40=0.80*I ciclos bloqueo debidos a datos= I*36%*4%*40=0.56*I ciclos bloqueo totales= 1.36*I CPI con bloqueos= 2+1.36=3.36 Tiempo CPU sin bloqueo Tiempo CPU caché perfecta = I * CPI I * CPI bloqueo perfecta * ciclo * ciclo = 3.36 2 = 1.68

Rendimiento Ejemplo: Supongamos que se incrementa el rendimiento de la máquina del ejemplo anterior doblando la frecuencia de reloj, sin embargo la velocidad de la memoria principal no cambia (muy posible). Es decir, no cambia el tiempo absoluto de tratar un fallo. cuánto más rápida es esta máquina que la anterior, con el mismo porcentaje de fallos? Nueva penalización por fallos=80 ciclos (el doble de ciclos) ciclos bloqueo totales= I*2%*80 + I*36%*4%*80 =2,75*I CPI con bloqueos= 2+2,75=4,75 TiempoCPU lenta TiempoCPU rápida = I * CPI I * CPI lenta rápida * ciclo ciclo * 2 = 3.36 4.75 2 = 1.41

Rendimiento Las penalizaciones relativas a la caché se incrementan cuando la máquina es más rápida. Cuanto mas bajo es el CPI, más pronunciado será el efecto del bloqueo El sistema de memoria no mejora tan rápidamente como el tiempo de ciclo del procesadorè una CPU con un reloj más rápido tendrá una penalización por fallo más larga.

Rendimiento Dos formas de mejorar el rendimiento: Reduciendo la tasa de misses Reduciendo la penalidad por misses Una manera de reducir la tasa de misses es aumentando el tamaño del bloque Sin embargo, esto puede aumentar la penalidad por misses: es el tiempo requerido para ir a buscar un bloque en el siguiente nivel y cargarlo en la caché. Este tiempo tiene dos componentes: Latencia de la primera palabra Tiempo de transferencia del resto del bloque: este se incrementa a medida que crece el tamaño del bloque Algunas soluciones para este problema: Diseño de un sistema de memoria que permita transferir grandes bloques de manera mas eficiente Ocultar el tiempo de transferencia reanudando la ejecución tan pronto como sea posible (cuando ya esté la palabra pedida) sin esperar que todo el bloque haya sido transferido.

Otras formas de reducir los fallos de caché Cambiando la manera en que se mapea un bloque en la memoria caché. Por ejemplo: Que un bloque pueda ir a cualquier posición de la caché: mapeo totalmente asociativo Reduce los misses por conflicto: aquellos bloques que ya estaban pero fueron desalojados porque otro bloque lo reemplazó. Implementación: Para buscar un bloque se debe recorrer TODA la cachéè un comparador por cada entrada, para hacer todas las comparaciones en paralelo. Inconveniente: incremento del costo en hardware. Solución: cachés con pocos bloques

O bien: buscar un término medio: asociativas por conjuntos O n e - w a y s e t a s s o c i a t i v e ( d i r e c t m a p p e d ) B l o c k 0 1 2 3 4 5 6 7 T a g D a t a T w o - w a y s e t a s s o c i a t i v e S e t T a g D a t a T a g D a t a 0 1 2 3 F o u r - w a y s e t a s s o c i a t i v e S e t 0 1 T a g D a t a T a g D a t a T a g D a t a T a g D a t a E i g h t - w a y s e t a s s o c i a t i v e ( f u l l y a s s o c i a t i v e ) T a g D a t a T a g D a t a T a g D a t a T a g D a t a T a g D a t a T a g D a t a T a g D a t a T a g D a t a

Asociativa por conjuntos Dentro de cada conjunto (set), la asignación de entradas es totalmente asociativa. Los conjuntos son de n-vias: es decir, el bloque se asigna en cualquiera de las n vías del conjunto La asignación de un bloque a un conjunto es por mapeo directo.

Implementación Address 31 30 12 11 10 9 8 3 2 1 0 22 8 Index 0 1 2 V Tag Data V Tag Data V Tag Data V Tag Data 253 254 255 22 32 4-to-1 multiplexor Hit Data

Asociatividad en Cachés Ejemplo: Se tienen 3 cachés pequeñas, cada una consistente en cuatro bloques de una palabra. Una es totalmente asociativa, la segunda es asociativa de 2 vías por conjunto, y la tercera es de mapeo directo. Encontrar el número de fallos para cada organización de la caché para la siguiente secuencia de direcciones de bloque: 0,8,0,6,8. Mapeo Directo: Dirección Dirección de Bloque en Caché 0 0 módulo 4=0 8 8 módulo 4=0 6 6 módulo 4=2 Fallos: los cinco son fallos.

Asociatividad en Cachés Totalmente Asociativa: Hay cuatro bloques, y cualquier bloque de memoria puede estar en cualquier bloque. 0 fallo,8 fallo,0 acierto,6 fallo,8 acierto Asociativa por dos conjuntos de 2 vías: Dirección Dirección de Bloque en Caché 0 0 módulo 2=0 8 8 módulo 2=0 6 6 módulo 2=0 0 fallo, 8 fallo, 0 acierto, 6 fallo (desplaza al 8), 8 fallo

Rendimiento La asociatividad aumenta el rendimiento, es decir, disminuye la tasa de fallos, pero aumenta el tiempo del acierto (circuitería). El mayor beneficio se obtiene al pasar de una de mapeo directo a una asociativa de 2 vías. 15% 12% 9% Miss rate 6% 3% 0% One-way Two-way Four-way Eight-way Associativity 1 KB 2 KB 4 KB 8 KB 16 KB 32 KB 64 KB 128 KB

Algoritmos de reemplazo Que bloque tiene que ser reemplazado? Es una pregunta para las cachés asociativas. En las totalmente asociativas, cualquier bloque es el candidato, en las asocaitivas de n-vías alguno de los n. Algoritmos: Aleatorio LRU (least recently used): es costoso para mas de 4 víasè se usa un aproximado. El algoritmo de reemplazo para cachés se realiza mediante hardware, por eso debe ser sencillo

Una alternativa para disminuir la penalización por fallo Cachés Multinivel: agregar un segundo nivel de caché La caché primaria (nivel 1) está en el mismo chip que el procesador. Se implementa con memoria SRAM otro nivel de memoria entre la principal y el nivel 1. Si no está en L1, es probable que esté en L2, y el tiempo de acceso a L2 es menor que el tiempo de acceso a memoria principal.

Cachés Multinivel Ejemplo: Sea una CPU con un reloj de 500 Mhz, un CPI de 1.0, una tasa de fallos del 5% y 200ns de acceso a DRAM. Le agregamos una caché de nivel 2 con 20ns de tiempo de acceso y una tasa de fallos a memoria principal del 2% Cuanto mas rápida es la máquina con los dos niveles de caché? CON UN NIVEL DE CACHÉ Penalización por fallos a MP, en ciclos: 200 nseg/(2nseg/ciclo)=100 ciclos CPI con bloqueos por memoria= 1 + 5%*100=6 CON DOS NIVELES DE CACHÉ Penalización por fallos a L2, en ciclos: 20 nseg/(2nseg/ciclo)=10 ciclos Penalización por fallos a MP en ciclos: 10 ciclos + 100 ciclos=110 ciclos CPI con bloqueos por memoria= 1 + bloqueos del nivel 1 + bloqueos del nivel 2 CPI total= 1 + 0,05 (10 ciclos * 0,98 + 110 ciclos*0,02)=1,6

FIN Jerarquía de Memoria