Memoria virtual
Introducción Muchos procesos, una memoria Programas demasiado grandes para caber en memoria principal Espacio de direccionamiento mucho mayor que la cantidad de memoria presente Necesidad de gestionar la memoria
Memoria virtual “Páginas” Pueden estar en MP o en disco Cada proceso tiene su propio espacio de direccionamiento
VM vs cache Cache: ◦ Controlada por hardware ◦ Mapeo: Dir. MM -> bloque ◦ Indep. del espacio de direccionamiento ◦ BS: bytes ◦ Hit time: 1-3 Ck ◦ MP: Ck access: transfer: 2-20 ◦ Miss rate: % ◦ Mapeo: bit MM -> bit cache ◦ N-way SA ◦ Write-back o write-through VM: ◦ Controlada por el SO ◦ Mapeo: Dir. VM -> Dir MM ◦ El ED dictamina el tamaño de la VM ◦ PS: 4 – 64 KB ◦ Hit time: Ck ◦ 1M-10M Ck access: 800K-8M Ck transfer: 200K-2M Ck ◦ Miss rate: % ◦ Mapeo: 32-64bit VM -> bit MM ◦ Full associative ◦ Siempre es write-back
Paginación y segmentación Paginación: ◦ Tamaño fijo ◦ 1 Word x dir. ◦ Reemplazo trivial ◦ Invisible al programa ◦ Fragmentación interna ◦ Alta eficiencia de tráfico Segmentación: ◦ Tamaño variable ◦ 2 words x dir. (S+Off) ◦ Reemplazo complejo ◦ Puede ser visible ◦ Fragmentación externa ◦ No siempre es eficiente
Mapeo de memoria
Tablas de páginas Si las direcciones son de 32 bits, y las páginas de 4KB, el tamaño de la PT sería de (2³²/2¹²)*2²=2²², o 4MB Se suele usar una función de hash sobre el número de página, y hacer una inverted page table; cada registro necesita guardar el # de página virtual, pero sólo se necesitan tantas entradas como páginas entran en la memoria física. (Suele ir acompañado de un buffer, para reducir el tiempo de traducción)
Translation lookaside buffer La tabla de páginas reside en memoria -> cada acceso a memoria comporta dos lecturas a MM Existe un cache de uso específico, el translation lookaside buffer o TLB ASN Prot V Tag Dir. física TLB en el Alpha 21264