Memoria I I

55 %
45 %
Information about Memoria I I

Published on August 5, 2007

Author: stefanosalvatori

Source: slideshare.net

Sistemas de Memoria (II) Cecilia Hernández

Algunas preguntas Alternativas de diseño Cómo sabemos si está en cache? Identificación del bloque Dónde lo ponemos en cache? U bicación del bloque Qué ocurre si cache está llena y queremos traer algo nuevo? Reemplazo del bloque Qué ocurre si queremos traer algo nuevo y el lugar donde queremos ponerlo ya está ocupado? estrategia de escritura

Cómo sabemos si está en cache?

Identificación del bloque

Dónde lo ponemos en cache?

U bicación del bloque

Qué ocurre si cache está llena y queremos traer algo nuevo?

Reemplazo del bloque

Qué ocurre si queremos traer algo nuevo y el lugar donde queremos ponerlo ya está ocupado? estrategia de escritura

Reemplazo de bloque Cache de traducción directa No hay elección: sólo una línea disponible Cache completamente asociativo Todas las líneas disponibles, elegir la mejor Cache asociativo por conjuntos Todas las líneas dentro del conjunto disponibles, elegir la mejor

Cache de traducción directa

No hay elección: sólo una línea disponible

Cache completamente asociativo

Todas las líneas disponibles, elegir la mejor

Cache asociativo por conjuntos

Todas las líneas dentro del conjunto disponibles, elegir la mejor

Elección de la línea a reemplazar Objetivo Reemplazar la línea que va a ser utilizada más lejos en el futuro Algoritmos de reemplazo Random: elegir línea al azar LRU (least recently used): elegir línea menos recientemente utilizada Asociatividad 2-way 4-way 8-way Ejemplo: Tasas de fallo medidas en un benchmark 1.12% 1.12% 1.13% 1.13% 1.17% 1.15% 256KB 1.5% 1.4% 1.7% 1.5% 2.0% 1.9% 64KB 5.0% 4.4% 5.3% 4.7% 5.7% 5.2% 16KB Random LRU Random LRU Random LRU Tamaño

Objetivo

Reemplazar la línea que va a ser utilizada más lejos en el futuro

Algoritmos de reemplazo

Random: elegir línea al azar

LRU (least recently used): elegir línea menos recientemente utilizada

Algunas preguntas Alternativas de diseño Cómo sabemos si está en cache? Identificación del bloque Dónde lo ponemos en cache? U bicación del bloque Qué ocurre si cache está llena y queremos traer algo nuevo? Reemplazo del bloque Qué ocurre si queremos traer algo nuevo y el lugar donde queremos ponerlo ya está ocupado? estrategia de escritura

Cómo sabemos si está en cache?

Identificación del bloque

Dónde lo ponemos en cache?

U bicación del bloque

Qué ocurre si cache está llena y queremos traer algo nuevo?

Reemplazo del bloque

Qué ocurre si queremos traer algo nuevo y el lugar donde queremos ponerlo ya está ocupado? estrategia de escritura

Estrategia de escritura Escritura sincrónica (write-through) Escribir en el cache y en el nivel siguiente de la jerarquía Escritura asincrónica (write-back) Escribir sólo en el cache, escribir en nivel siguiente sólo al reemplazar el bloque Requiere un bit de estado adicional en el cache para indicar que bloque ha sido modificado (bit M) Comparación WT Pro: fallo de lectura no produce escrituras Con: alto costo de escritura a menos que se use un buffer Buffer siempre se usa para no esperar por DRAM WB Pro: evitar escrituras múltiples del mismo bloque a DRAM Con: Más complejo, fallo de lectura puede producir escritura

Escritura sincrónica (write-through)

Escribir en el cache y en el nivel siguiente de la jerarquía

Escritura asincrónica (write-back)

Escribir sólo en el cache, escribir en nivel siguiente sólo al reemplazar el bloque

Requiere un bit de estado adicional en el cache para indicar que bloque ha sido modificado (bit M)

Comparación

WT

Pro: fallo de lectura no produce escrituras

Con: alto costo de escritura a menos que se use un buffer

Buffer siempre se usa para no esperar por DRAM

WB

Pro: evitar escrituras múltiples del mismo bloque a DRAM

Con: Más complejo, fallo de lectura puede producir escritura

Buffer de escritura para write-through Buffer almacena escrituras pendientes Procesador escribe en buffer y cache Controlador de memoria escribe contenidos del bloque a memoria Buffer de escritura es FIFO Número típico de entradas: 4-8 Nota: buffer de escritura puede producir conflicto RAW Fallo de lectura antes de que el buffer haya escrito en DRAM Soluciones Esperar a buffer vacío antes de servir el fallo de lectura Al servir fallo de lectura, verificar contenidos del buffer antes de ir a DRAM (búsqueda asociativa en buffer) CPU Cache Buffer de escritura DRAM

Buffer almacena escrituras pendientes

Procesador escribe en buffer y cache

Controlador de memoria escribe contenidos del bloque a memoria

Buffer de escritura es FIFO

Número típico de entradas: 4-8

Nota: buffer de escritura puede producir conflicto RAW

Fallo de lectura antes de que el buffer haya escrito en DRAM

Soluciones

Esperar a buffer vacío antes de servir el fallo de lectura

Al servir fallo de lectura, verificar contenidos del buffer antes de ir a DRAM (búsqueda asociativa en buffer)

Política ante fallo de escritura ¿Qué hacer si store produce un fallo? Traer bloque al cache (write-allocate) Evita fallo posterior si se lee del mismo bloque Pero si no se lee, habríamos sacado del cache un bloque potencialmente importante Sólo escribir a DRAM (write-around) Ahorra espacio en el cache si el bloque escrito no se accesa de nuevo en un tiempo largo

¿Qué hacer si store produce un fallo?

Traer bloque al cache (write-allocate)

Evita fallo posterior si se lee del mismo bloque

Pero si no se lee, habríamos sacado del cache un bloque potencialmente importante

Sólo escribir a DRAM (write-around)

Ahorra espacio en el cache si el bloque escrito no se accesa de nuevo en un tiempo largo

Mejoras al desempeño ¿Cómo mejorar el desempeño? Reducir tasa de fallos Reducir penalidad de fallos Reducir tiempo de acierto Desempeño dado por Tiempo Promedio de Acceso a Memoria En inglés Average Memory Access Time AMAT = tasa de aciertos*tiempo de acierto + (1- tasa de fallos)*penalidad de fallo AMAT = (1 - tasa de fallos) * tiempo de acierto + tasa de fallos * penalidad de fallo

¿Cómo mejorar el desempeño?

Reducir tasa de fallos

Reducir penalidad de fallos

Reducir tiempo de acierto

Mejoras al desempeño ¿Cómo mejorar el desempeño? Reducir tasa de fallos Reducir penalidad de fallos Reducir tiempo de acierto Desempeño dado por Tiempo Promedio de Acceso a Memoria En inglés Average Memory Access Time AMAT = tasa de aciertos*tiempo de acierto + (1- tasa de fallos)*penalidad de fallo AMAT = (1 - tasa de fallos ) * tiempo de acierto + tasa de fallos * penalidad de fallo

¿Cómo mejorar el desempeño?

Reducir tasa de fallos

Reducir penalidad de fallos

Reducir tiempo de acierto

Reducir tasa de fallos (I) Explotar localidad espacial con bloques más grandes Pero incrementa penalidad de fallo También incrementa fallos por conflicto (menos bloques) Tamaño de bloque (bytes) Tasa de Fallos 0% 5% 10% 15% 20% 25% 16 32 64 128 256 1K 4K 16K 64K 256K

Explotar localidad espacial con bloques más grandes

Pero incrementa penalidad de fallo

También incrementa fallos por conflicto (menos bloques)

Reducir tasa de fallos (II) Aumentar asociatividad Regla 2:1 Tasa fallos cache directo tamaño N = tasa fallos cache APC de 2 vías tamaño N/2 Pero recordar que tiempo de acierto es mayor. Conflict Cache Size (KB) Miss Rate per Type 0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 1 2 4 8 16 32 64 128 1-way 2-way 4-way 8-way Capacity Compulsory

Aumentar asociatividad

Regla 2:1

Tasa fallos cache directo tamaño N = tasa fallos cache APC de 2 vías tamaño N/2

Pero recordar que tiempo de acierto es mayor.

Reducir tasa de fallos (III) Cache de víctimas (victim cache) Pequeño buffer asociativo almacena bloques recientemente eliminados del cache Reduce fallos por conflicto en cache directo manteniendo acceso rápido Jouppi[1990]: cache de víctimas de 4 entradas elimina 20%-95% de fallos de conflicto en cache directo de 4KB Utilizado en procesadores DEC Alpha y HP Al siguiente nivel de jerarquía Datos Tags Tag + comp Tag + comp Tag + comp Tag + comp Línea datos Línea datos Línea datos Línea datos

Cache de víctimas (victim cache)

Pequeño buffer asociativo almacena bloques recientemente eliminados del cache

Reduce fallos por conflicto en cache directo manteniendo acceso rápido

Jouppi[1990]: cache de víctimas de 4 entradas elimina 20%-95% de fallos de conflicto en cache directo de 4KB

Utilizado en procesadores DEC Alpha y HP

Operación con Cache Víctima 1. Acierto en L1, no se necesita accesar a cache víctima 2. Fallo en L1 por bloque en ubicación b, acierto en cache víctima en ubicación v, intercambiar contenido de b y v (toma un ciclo extra) 3. Fallo en L1, fallo en cache víctima, cargar bloque del siguiente nivel en jerarquía y ponerlo en L1, poner bloque que estaba en L1 en cache víctima, si cache víctima esta llena, reemplazar una de las entradas Buffer víctima de 4 u 8 entradas para una cache mapeada directa funciona bien

1. Acierto en L1, no se necesita accesar a cache víctima

2. Fallo en L1 por bloque en ubicación b, acierto en cache víctima en ubicación v, intercambiar contenido de b y v (toma un ciclo extra)

3. Fallo en L1, fallo en cache víctima, cargar bloque del siguiente nivel en jerarquía y ponerlo en L1, poner bloque que estaba en L1 en cache víctima, si cache víctima esta llena, reemplazar una de las entradas

Buffer víctima de 4 u 8 entradas para una cache mapeada directa funciona bien

Cache víctima Fallo en L1 Fallo CV CPU dirección b DRAM Cache CV (1) Fallo L1 (2) Fallo CV

Cache víctima Fallo en L1 Fallo CV CPU dirección b DRAM m Cache CV (3) Acierto DRAM Dato en bloque m

Cache víctima Fallo en L1 Fallo CV CPU dirección m DRAM m Cache CV (4) Copia bloque m En donde estaba b Y b en cache CV b

Cache víctima Fallo en L1, Acierto en CV CPU dirección b DRAM Cache CV Acierto En CV (2) Fallo en L1 (1) v

Reducir tasa de fallos (IV) Prefetch Traer bloques al cache antes de que el programa los requiera Reduce fallos obligatorios (compulsory) Útil cuando localidad espacial es muy buena (instrucciones y datos), pero requiere predicción de saltos Cache de trazas (trace cache) Integrar prefetch y predicción: instrucciones en cache en orden de ejecución Utilizado en arquitectura Netburst de Intel (Pentium 4) Acceso a datos (ayuda por software): Instrucciones “touch” Similar a load, pero indica al cache que dato se accesará pronto Presentes en procesadores IBM Power PC

Prefetch

Traer bloques al cache antes de que el programa los requiera

Reduce fallos obligatorios (compulsory)

Útil cuando localidad espacial es muy buena (instrucciones y datos), pero requiere predicción de saltos

Cache de trazas (trace cache)

Integrar prefetch y predicción: instrucciones en cache en orden de ejecución

Utilizado en arquitectura Netburst de Intel (Pentium 4)

Acceso a datos (ayuda por software): Instrucciones “touch”

Similar a load, pero indica al cache que dato se accesará pronto

Presentes en procesadores IBM Power PC

Mejoras al desempeño ¿Cómo mejorar el desempeño? Reducir tasa de fallos Reducir penalidad de fallos Reducir tiempo de acierto Desempeño dado por Tiempo Promedio de Acceso a Memoria En inglés Average Memory Access Time AMAT = tasa de aciertos*tiempo de acierto + (1- tasa de fallos)*penalidad de fallo AMAT = (1 - tasa de fallos) * tiempo de acierto + tasa de fallos * penalidad de fallo

¿Cómo mejorar el desempeño?

Reducir tasa de fallos

Reducir penalidad de fallos

Reducir tiempo de acierto

Reducir penalidad de fallos (I) Mejorar desempeño de sistema de memoria principal (DRAM) Bus de acceso a memoria más rápido, más ancho Buses anchos tienen problemas de skew, preferible aumentar velocidad (ej. DDR, double-pumped Front Side Bus) Pentium 4 utiliza un bus de 200MHz – 266MHz pero transfiere datos 4 veces por ciclo para un ancho de banda efectivo de 800MHz – 1066MHz (quad-pumped) Acceso por bloques entrelazado, paginado, sincrónico Usado en servidores (chipset intel Orion) por costo de implem. En caso de fallo, traer al cache dato requerido primero, y resto del bloque después Latencia es alta de todas maneras Útil sólo en bloques grandes Localidad espacial: probablemente hay que esperar el siguiente dato de todas formas

Mejorar desempeño de sistema de memoria principal (DRAM)

Bus de acceso a memoria más rápido, más ancho

Buses anchos tienen problemas de skew, preferible aumentar velocidad (ej. DDR, double-pumped Front Side Bus)

Pentium 4 utiliza un bus de 200MHz – 266MHz pero transfiere datos 4 veces por ciclo para un ancho de banda efectivo de 800MHz – 1066MHz (quad-pumped)

Acceso por bloques entrelazado, paginado, sincrónico

Usado en servidores (chipset intel Orion) por costo de implem.

En caso de fallo, traer al cache dato requerido primero, y resto del bloque después

Latencia es alta de todas maneras

Útil sólo en bloques grandes

Localidad espacial: probablemente hay que esperar el siguiente dato de todas formas

Reducir penalidad de fallo (II) Buffer de escritura Almacena escrituras a memoria pendientes Fallo de lectura tiene prioridad sobre buffer de escritura para acceso a DRAM Resolver conflictos RAW: buscar bloque en buffer de escritura antes de traer de DRAM Fallos sin bloqueo Permitir que procesador ejecute otras instrucciones mientras se resuelve el fallo Ejecución desordenada de instrucciones Útil en procesadores superescalares o multihebra Problema: puede producirse otro fallo antes de resolver el primero Pentium 4 puede manejar hasta 4 fallos simultáneos Múltiples bancos de memoria mejoran desempeño

Buffer de escritura

Almacena escrituras a memoria pendientes

Fallo de lectura tiene prioridad sobre buffer de escritura para acceso a DRAM

Resolver conflictos RAW: buscar bloque en buffer de escritura antes de traer de DRAM

Fallos sin bloqueo

Permitir que procesador ejecute otras instrucciones mientras se resuelve el fallo

Ejecución desordenada de instrucciones

Útil en procesadores superescalares o multihebra

Problema: puede producirse otro fallo antes de resolver el primero

Pentium 4 puede manejar hasta 4 fallos simultáneos

Múltiples bancos de memoria mejoran desempeño

Mejoras al desempeño ¿Cómo mejorar el desempeño? Reducir tasa de fallos Reducir penalidad de fallos Reducir tiempo de acierto Desempeño dado por Tiempo Promedio de Acceso a Memoria En inglés Average Memory Access Time AMAT = tasa de aciertos*tiempo de acierto + (1- tasa de fallos)*penalidad de fallo AMAT = (1 - tasa de fallos) * tiempo de acierto + tasa de fallos * penalidad de fallo

¿Cómo mejorar el desempeño?

Reducir tasa de fallos

Reducir penalidad de fallos

Reducir tiempo de acierto

Reducir tiempo de acierto Parámetro crítico para L1 Utilizar L1 directo + cache de víctimas o L2 Segmentar (pipeline) acceso a L1 Etapa 1: determinar hit/miss Etapa 2: transferir dato a CPU Tratar conflictos estructurales por acceso a L1 Cache unificado: Un cache L1 para datos e instrucciones Ventaja: mejor tasa de acierto Desventaja: conflictos estructurales (stalls) Arquitectura Harvard: Dos cache L1 independientes para datos e instrucciones Ventaja: elimina conflictos estructurales Desventaja: división del cache aumenta tasa de fallos Hoy procesadores comerciales utilizan arquitectura Harvard Cache L2 típicamente unificado

Parámetro crítico para L1

Utilizar L1 directo + cache de víctimas o L2

Segmentar (pipeline) acceso a L1

Etapa 1: determinar hit/miss

Etapa 2: transferir dato a CPU

Tratar conflictos estructurales por acceso a L1

Cache unificado: Un cache L1 para datos e instrucciones

Ventaja: mejor tasa de acierto

Desventaja: conflictos estructurales (stalls)

Arquitectura Harvard: Dos cache L1 independientes para datos e instrucciones

Ventaja: elimina conflictos estructurales

Desventaja: división del cache aumenta tasa de fallos

Hoy procesadores comerciales utilizan arquitectura Harvard

Cache L2 típicamente unificado

Arquitectura Harvard versus unificada Ejemplo Unificada: 32KB (tasa fallo 1.99%) Harvard: 16KB inst (tasa fallo 0.64%), 16 KB datos (tasa fallo 6.47%) ¿Cuál es mejor? Ignorar L2 Asumir 33% load/store, tpo. acierto: 1 ciclo, penalidad fallo: 50 ciclos CPU I-Cache L1 CPU Cache L1 Unificada Cache L2 Unificada D-Cache L1 Cache L2 Unificada Unificada Arquitectura Harvard AMAT = [AMAT fetch + 0.33*AMAT datos ]/1.33 AMAT (Harvard) = [(0.9936*1 + 0.0064*50) + 0.33*(0.9353*1 + 0.0647*50)]/1.33 AMAT (Harvard) = 2.022 ciclos AMAT (Unificada) = [(0.9801*1 + 0.0199*50) + 0.33*(1 + 0.9801*1 + 0.0199*50)]/1.33 AMAT (Harvard) = 2.223 ciclos

Ejemplo

Unificada: 32KB (tasa fallo 1.99%)

Harvard: 16KB inst (tasa fallo 0.64%), 16 KB datos (tasa fallo 6.47%)

¿Cuál es mejor? Ignorar L2

Asumir 33% load/store, tpo. acierto: 1 ciclo, penalidad fallo: 50 ciclos

Limitaciones de memoria principal Cache acorta brecha entre velocidad de CPU y memoria principal (DRAM) ¿Cuáles son las limitaciones de la memoria principal? Tamaño Programas poseen espacio de direcciones de 32 o 64 bits (registros de direcciones) Con 32 bits de direcciones, cada programa puede accesar 4GB de memoria 20 programas en ejecución (procesos): ¡80 GB de memoria principal! DRAM demasiado cara, disco demasiado lento Pero programas no utilizan realmente todo el espacio disponible Reubicación Procesos pueden residir en cualquier parte de la memoria Pero programador/compilador no sabe dónde van a ejecutarse ¿Cómo determinar las direcciones de memoria? Protección Procesos podrían acceder a datos de otros programas en ejecución O a datos del sistema operativo Vulnerabilidad de seguridad Solución: memoria virtual

Cache acorta brecha entre velocidad de CPU y memoria principal (DRAM)

¿Cuáles son las limitaciones de la memoria principal?

Tamaño

Programas poseen espacio de direcciones de 32 o 64 bits (registros de direcciones)

Con 32 bits de direcciones, cada programa puede accesar 4GB de memoria

20 programas en ejecución (procesos): ¡80 GB de memoria principal!

DRAM demasiado cara, disco demasiado lento

Pero programas no utilizan realmente todo el espacio disponible

Reubicación

Procesos pueden residir en cualquier parte de la memoria

Pero programador/compilador no sabe dónde van a ejecutarse

¿Cómo determinar las direcciones de memoria?

Protección

Procesos podrían acceder a datos de otros programas en ejecución

O a datos del sistema operativo

Vulnerabilidad de seguridad

Solución: memoria virtual

Memoria virtual Procesos generan direcciones de memoria virtuales Ej. lw $t4, 128($t7) #[$t7+128] es una dirección virtual Memoria principal (DRAM) actúa como cache del disco Unidad de manejo de memoria ( MMU ) examina dirección virtual y determina si dato reside actualmente en DRAM Sí: MMU genera dirección real (dirección en DRAM) No: MMU determina ubicación en disco del dato y provoca excepción MMU además provee protecciones Direcciones de memoria sólo para lectura, ejecución, sistema operativo Espacios de memoria real separados para diferentes usuarios

Procesos generan direcciones de memoria virtuales

Ej. lw $t4, 128($t7) #[$t7+128] es una dirección virtual

Memoria principal (DRAM) actúa como cache del disco

Unidad de manejo de memoria ( MMU ) examina dirección virtual y determina si dato reside actualmente en DRAM

Sí: MMU genera dirección real (dirección en DRAM)

No: MMU determina ubicación en disco del dato y provoca excepción

MMU además provee protecciones

Direcciones de memoria sólo para lectura, ejecución, sistema operativo

Espacios de memoria real separados para diferentes usuarios

Memoria Virtual DRAM cache de disco Espacio virtual y físico de direcciones Espacio físico de direcciones Espacio virtual de direcciones Disco Control Datapath Memoria Secundaria (Disco) Procesador Registros Memoria Principal (DRAM) Cache L2 Datos, Inst. ~1 ~10,000,000 Velocidad (ciclos): ~1-5 ~100 ~100- 1000 40-400G Tamaño (bytes): ~32K ~512M-4G Cache L1 Inst Cache L1 Datos ~5-12 ~32K

DRAM cache de disco

Espacio virtual y físico de direcciones

Ventajas de memoria virtual Traducción Memoria virtual lineal para cada proceso, páginas desordenadas en memoria principal Facilita múltiples procesos concurrentes en ejecución Procesos ocupan sólo una fracción del espacio virtual disponible (conjunto de trabajo: working set) Protección Un proceso no puede corromper el espacio de memoria de otro Asignar roles distintos a diferentes páginas (código, datos, sistema operativo) Protección de datos del sistema operativo Compartir datos entre procesos Direcciones virtuales de dos procesos pueden ser traducidas al mismo marco de página en memoria física.

Traducción

Memoria virtual lineal para cada proceso, páginas desordenadas en memoria principal

Facilita múltiples procesos concurrentes en ejecución

Procesos ocupan sólo una fracción del espacio virtual disponible (conjunto de trabajo: working set)

Protección

Un proceso no puede corromper el espacio de memoria de otro

Asignar roles distintos a diferentes páginas (código, datos, sistema operativo)

Protección de datos del sistema operativo

Compartir datos entre procesos

Direcciones virtuales de dos procesos pueden ser traducidas al mismo marco de página en memoria física.

Memoria virtual versus cache Nomenclatura Cache: bloque o línea; MV: página, marcos de página Principal diferencia: penalidad de fallo Cache: tpo. acceso DRAM: ~100ns (~100 ciclos) MV: tpo. acceso disco: ~10ms (~10.000.000 ciclos!) Consecuencias Minimizar fallos: ubicación de páginas completamente asociativa Política de escritura asincrónica (write-back) Páginas grandes: 4KB – 16MB Disco tiene alta latencia pero mejor ancho de banda: bajo costo incremental de accesar bloques más grandes Traducción de direcciones por hardware, manejo de fallos por software Sistema operativo ordena acceso a disco e implementa algoritmo de reemplazo Penalidad de fallo demasiado alta para esperar: entregar CPU a otro proceso (o hebra) hasta que página esté en memoria

Nomenclatura

Cache: bloque o línea; MV: página, marcos de página

Principal diferencia: penalidad de fallo

Cache: tpo. acceso DRAM: ~100ns (~100 ciclos)

MV: tpo. acceso disco: ~10ms (~10.000.000 ciclos!)

Consecuencias

Minimizar fallos: ubicación de páginas completamente asociativa

Política de escritura asincrónica (write-back)

Páginas grandes: 4KB – 16MB

Disco tiene alta latencia pero mejor ancho de banda: bajo costo incremental de accesar bloques más grandes

Traducción de direcciones por hardware, manejo de fallos por software

Sistema operativo ordena acceso a disco e implementa algoritmo de reemplazo

Penalidad de fallo demasiado alta para esperar: entregar CPU a otro proceso (o hebra) hasta que página esté en memoria

Implementación de Memoria Virtual Paginación DRAM dividida en porciones iguales denominados marcos de páginas En MV denominadas páginas o página virtual Usa tabla de página traducción de direcciones Espacio físico de direcciones Espacio virtual de direcciones Disco página Marco página

Paginación

DRAM dividida en porciones iguales denominados marcos de páginas

En MV denominadas páginas o página virtual

Usa tabla de página traducción de direcciones

Tabla de páginas Traducción de direcciones utiliza tabla de páginas en memoria Dirección virtual (menos offset) utilizada como índice en tabla Registro especializado contiene dirección de inicio de tabla en memoria (por proceso) Entrada en la tabla (PTE: Page Table Entry) Bit presente/ausente o válido Bit de modificación Bits de protección Dirección de marco real o bloque de disco Página virtual offset V Marco/Bloque M Prot. Dir. Virtual Tabla Pág. Dir. Base V Prot. Marco Pág. Virtual offset 10 Marco real offset 10 Dir. Física

Traducción de direcciones utiliza tabla de páginas en memoria

Dirección virtual (menos offset) utilizada como índice en tabla

Registro especializado contiene dirección de inicio de tabla en memoria (por proceso)

Entrada en la tabla (PTE: Page Table Entry)

Bit presente/ausente o válido

Bit de modificación

Bits de protección

Dirección de marco real o bloque de disco

Costo de traducción de un nivel Tabla de páginas de un nivel: una entrada (PTE) por página virtual Una tabla de páginas por proceso Tamaño de tabla Asumir PTE de 4 bytes Ej. Página de 4KB, espacio de direcciones de 32 bits # páginas virtuales = 2 32 /2 12 = 2 20 Tamaño tabla = 2 20 * 4 = 4MB por proceso Ej. Página de 4KB, espacio de direcciones de 64 bits # páginas virtuales = 2 64 /2 12 = 2 52 Tamaño tabla = 2 52 * 4 = Más de 16.000.000GB por proceso!! Tablas de páginas de un nivel demasiado grandes Además, un gran porcentaje de las entradas nunca se accesan Impráctico mantener tabla completa en memoria

Tabla de páginas de un nivel: una entrada (PTE) por página virtual

Una tabla de páginas por proceso

Tamaño de tabla

Asumir PTE de 4 bytes

Ej. Página de 4KB, espacio de direcciones de 32 bits

# páginas virtuales = 2 32 /2 12 = 2 20

Tamaño tabla = 2 20 * 4 = 4MB por proceso

Ej. Página de 4KB, espacio de direcciones de 64 bits

# páginas virtuales = 2 64 /2 12 = 2 52

Tamaño tabla = 2 52 * 4 = Más de 16.000.000GB por proceso!!

Tablas de páginas de un nivel demasiado grandes

Además, un gran porcentaje de las entradas nunca se accesan

Impráctico mantener tabla completa en memoria

Ilustración con tablas de páginas Programa A Programa B Memoria física V.p.0 V.p.0 V.p.1 V.p.1 V.p.2 V.p.2 V.p.3 V.p.n V.p.q Frame 0 Frame 1 Frame 2 Frame m 1 1 0 1 2 m 0 Tabla página Programa A Bit válido Tabla Página Programa B 0 1 1 1 0

Traducción de dos niveles Dos niveles de tablas Tabla de nivel 1 PTE indica ubicación de tabla de nivel 2 Siempre en memoria Tablas de nivel 2 PTE indica marco real, protecciones, etc. Pueden ser paginadas a disco Utilizado por mayoría de microprocesadores comerciales (ej. Intel) Dirección virtual de 32 bits 4 bytes 4 bytes 4KB Tabla N1 Tablas N2 Páginas memoria Índice PTE1 offset Índice PTE2 10 10 12 Tabla Nivel 1: 1K PTE Espacio total Tabla N1: 4KB Tabla Nivel 2: 1K PTE  4KB Espacio total Tabla N2: 1K * 4KB = 4MB

Dos niveles de tablas

Tabla de nivel 1

PTE indica ubicación de tabla de nivel 2

Siempre en memoria

Tablas de nivel 2

PTE indica marco real, protecciones, etc.

Pueden ser paginadas a disco

Utilizado por mayoría de microprocesadores comerciales (ej. Intel)

Desventajas Tablas de Páginas Típicamente una o múltiples tablas por proceso. Caro por uso de memoria sólo para traducción Otras alternativas para mejorar uso de memoria Tabla de páginas invertidas Tablas de páginas usando hashing Procesadores como IBM System 38, UltraSparc y PowerPC usan este tipo de implementación No las veremos en este curso

Típicamente una o múltiples tablas por proceso.

Caro por uso de memoria sólo para traducción

Otras alternativas para mejorar uso de memoria

Tabla de páginas invertidas

Tablas de páginas usando hashing

Procesadores como IBM System 38, UltraSparc y PowerPC usan este tipo de implementación

No las veremos en este curso

Tabla de páginas invertida Sólo mantener PTEs de páginas presentes en memoria física Tabla invertida organizada como tabla hash en memoria principal Buscar asociativamente por número de página virtual Si está presente en tabla, extraer marco de página y protecciones Si no está presente en tabla, corresponde a un fallo de página Utilizado por IBM System 38 (AS 400), UltraSparc, PowerPC Pag. V Tabla hash Pág. Virtual = Marco, etc Acierto/fallo Tabla de páginas invertida

Sólo mantener PTEs de páginas presentes en memoria física

Tabla invertida organizada como tabla hash en memoria principal

Buscar asociativamente por número de página virtual

Si está presente en tabla, extraer marco de página y protecciones

Si no está presente en tabla, corresponde a un fallo de página

Utilizado por IBM System 38 (AS 400), UltraSparc, PowerPC

Tiempo de traducción de direcciones Necesario traducir dirección en cada acceso a memoria Uno o dos accesos más a memoria Posible fallo de página Todo esto antes de ir al cache a ver si el dato está ahí Solución Cache de traducciones También llamado TLB (Translation Lookaside Buffer) Completamente asociativo CPU MMU Cache Mem. Principal VA PA miss hit dato

Necesario traducir dirección en cada acceso a memoria

Uno o dos accesos más a memoria

Posible fallo de página

Todo esto antes de ir al cache a ver si el dato está ahí

Solución

Cache de traducciones

También llamado TLB (Translation Lookaside Buffer)

Completamente asociativo

TLB Almacena traducciones de página más recientes Cache de traducciones Implementado como pequeña memoria asociativa Funciona bien porque localidad de traducciones es tremendamente alta (página de 4KB – 16MB  muchos accesos a la misma página) Basta con ~64 entradas Reemplazo por hardware o software TLB Tabla Pág marco p.v. Dir. física Espacio físico de direcciones Espacio virtual de direcciones Disco 2 2 0 5 2 0 1 3 Dir. virtual p.v. off marco off

Almacena traducciones de página más recientes

Cache de traducciones

Implementado como pequeña memoria asociativa

Funciona bien porque localidad de traducciones es tremendamente alta (página de 4KB – 16MB  muchos accesos a la misma página)

Basta con ~64 entradas

Reemplazo por hardware o software

Cache en espacio de direcciones reales Necesario traducir dirección antes de accesar el cache Acceso simultáneo a TLB y cache Reducir tiempo de acceso a dato en memoria Sólo posible si índice de acceso a cache es parte del “offset” de la dirección virtual TLB provee marco de página (tag para el cache) TLB Cache 1K líneas 10 2 00 4 bytes índice 1 K Pág. virtual offset 20 búsqueda asociativa 64 Hit/ Miss Tag Dato = marco Cache directo, bloque de 4 bytes Hit / Miss

Necesario traducir dirección antes de accesar el cache

Acceso simultáneo a TLB y cache

Reducir tiempo de acceso a dato en memoria

Sólo posible si índice de acceso a cache es parte del “offset” de la dirección virtual

TLB provee marco de página (tag para el cache)

TLB Offset Número página virtual tag Número marco v d prot Copia de PTE Dirección De CPU Offset

Memoria Virtual y Caches

Cache en espacio virtual de direcciones datos CPU MMU Cache Memoria principal P.V. hit Marco Cache trabaja con direcciones virtuales, no físicas No es necesario traducir antes de accesar cache Sólo traducir en caso de fallo en el cache Problemas Necesario vaciar el cache al entregar CPU a otro proceso, o incluir identificador de proceso/usuario en cache ¿Qué pasa con páginas de memoria física compartidas? Misma página real, diferentes páginas virtuales ¿Cómo mantener memoria consistente?

Cache trabaja con direcciones virtuales, no físicas

No es necesario traducir antes de accesar cache

Sólo traducir en caso de fallo en el cache

Problemas

Necesario vaciar el cache al entregar CPU a otro proceso, o incluir identificador de proceso/usuario en cache

¿Qué pasa con páginas de memoria física compartidas?

Misma página real, diferentes páginas virtuales

¿Cómo mantener memoria consistente?

Segmentación Problemas con espacios de memoria virtual planos Utilización de espacio plano de 32/64 bits no es completa Diferentes áreas de memoria necesitan diferentes protecciones (ej. código, datos, stack, heap, sistema operativo) Segmentación Dividir espacio de direcciones en segmentos Cada segmento tiene asociado una posición en memoria real, un tamaño y protecciones Programas pueden compartir segmentos con acceso controlado No confundir con segmentación (pipelining) código datos stack constantes Espacio de memoria plano Espacio de memoria segmentado Sólo ejecución Lectura/escritura Sólo lectura Lectura/escritura

Problemas con espacios de memoria virtual planos

Utilización de espacio plano de 32/64 bits no es completa

Diferentes áreas de memoria necesitan diferentes protecciones (ej. código, datos, stack, heap, sistema operativo)

Segmentación

Dividir espacio de direcciones en segmentos

Cada segmento tiene asociado una posición en memoria real, un tamaño y protecciones

Programas pueden compartir segmentos con acceso controlado

No confundir con segmentación (pipelining)

Implementación de segmentación Unidad de manejo de memoria (MMU) traduce dirección a espacio plano y verifica permisos de acceso y tamaño del segmento

Unidad de manejo de memoria (MMU) traduce dirección a espacio plano y verifica permisos de acceso y tamaño del segmento

Protecciones de segmento Descriptor de segmento (entrada en tabla de segmentos) contiene protecciones, dirección base del segmento y tamaño Ej. Procesadores Intel

Descriptor de segmento (entrada en tabla de segmentos) contiene protecciones, dirección base del segmento y tamaño

Ej. Procesadores Intel

Segmentación + paginación Cada segmento tratado como espacio de memoria virtual paginado

Cada segmento tratado como espacio de memoria virtual paginado

Links Simulador de Memoria Virtual http:// www.ecs.umass.edu/ece/koren/architecture/Vmemory/try.html

Simulador de Memoria Virtual

http:// www.ecs.umass.edu/ece/koren/architecture/Vmemory/try.html

Add a comment

Related presentations

Related pages

Memoria - Daedalic Entertainment

Memoria. Memoria erzählt die Geschichte von Prinzessin Sadja aus dem fernen Fasar, die einst in die Schlacht gegen die Dämonen in die Gorische Wüste zog.
Read more

Das Schwarze Auge: Memoria Test (PC) Von der Sehnsucht ...

Das Schwarze Auge: Memoria Test (PC) Von der Sehnsucht getrieben. Auch Gerons zweites DSA-Abenteuer geht nicht ins Auge: Memoria überzeugt im Test mit ...
Read more

Memoria – Wikipedia

Memoria ist. ein Begriff aus der Rhetorik; eine Bezeichnung für das Memorialwesen; Gedächtniskirche für einen Märtyrer oder Heiligen; ein Asteroid ...
Read more

Gedenkseiten & Gedenkportal I QR-Code ... - e-memoria

Gedenkseiten mit QR-Code Plaketten I e-Memoria ist ein Gedenkportal unter werbefreien Gedenkseiten und Trauerseiten mit QR-Code Plaketten aus Edelstahl zur ...
Read more

memoria

memoria blickt auf Erfahrungen im Bankensektor seit 2001, mehr als 10.700 zufriedene Teilnehmer in Seminaren, Trainings & Coachings, etwa 12,7 gefahrene ...
Read more

Das Schwarze Auge: Memoria: Pc: Amazon.de: Games

Das Schwarze Auge: Memoria bei Amazon.de - Schneller & Kostenloser Versand ab 29€. Jetzt bestellen!
Read more

Memoria – Wiki Aventurica, das DSA-Fanprojekt

Memoria erzählt die Geschichte von Prinzessin Sadja aus dem fernen Fasar, die einst in die Schlacht gegen die Dämonen in die Gorische Wüste zog.
Read more

memoria – Wiktionary

Referenzen und weiterführende Informationen: [1] Lateinischer Wikipedia-Artikel „memoria“ [1–11] Karl Ernst Georges: Ausführliches lateinisch ...
Read more

memoria24.de: 24 Stunden Pflege und Betreuung | häusliche ...

memoria24 bietet Ihnen 24-Stunden Pflege und Betreuung im eigenen Zuhause. Schnell, preiswert und immer ganz in Ihrer Nähe
Read more

Bestattung online zusammenstellen und buchen - MYMORIA

Wählen Sie in vertrauter Umgebung in Ruhe und ohne Entscheidungsdruck die Bestattung aus, die Ihren Vorstellungen entspricht und dem Verstorbenen gerecht ...
Read more