SOLUZIONI: Memoria virtuale

Documenti analoghi
Esercitazione su Gerarchie di Memoria

Esercitazione su Gerarchie di Memoria

Memoria Virtuale e I/O

Gerarchie di Memoria Andrea Gasparetto

Prestazioni & Co: CPU, Memoria, I/O

Introduzione alle gerarchie di memoria

Introduzione alle memorie cache. Cristina Silvano, 06/01/2013 versione 2 1

La memoria virtuale. La gerarchia di memorie. Indirizzo fisico. Memoria virtuale. Architetture Avanzate dei Calcolatori. Valeria Cardellini

Uniamo VM e CACHE. Physically addressed. Physically Addressed. Prestazioni. Ci sono varie alternative architetturali. Sono quelle piu semplici

Fallimenti nella TLB

Gerarchie di memoria. Gerarchie di memoria

Cache associativa. Possibili alternative per il trasferimento di un blocco dalla memoria inferiore alla memoria superiore:

MEMORIA GERARCHIE DI MEMORIA

Lezione 19 Memoria Virtuale

SIMULAZIONE DELLA PROVA INTERMEDIA DEL CORSO DI CALCOLATORI ELETTRONICI

Gestione della Memoria

Architettura degli elaboratori - 2 -

8 bit per la parola nel blocco 10 bit per l insieme (gruppo) nella cache 12 bit di etichetta. Esercizio 3 Memoria Cache

Calcolo prestazioni cache (1)

memoria virtuale protezione

Memory management. Le attività di memory management del SO per la condivisione da parte di più processi

Gestione della memoria

Matlab/Octave - Esercitazione 13

Gerarchie di memoria. Gerarchie di memoria. Costi e capacità delle memorie. Gerarchie di memoria

Struttura delle memorie cache

Le virtual machine e la memoria virtuale

SISTEMI OPERATIVI. Gestione della memoria. Gestione della memoria. Partizionamento Paginazione Segmentazione Memoria virtuale. 08.

Gerarchia di Memorie

Desiderata: memoria capiente e veloce. Connessioni tra livelli di memoria. Tecniche impiegate. Memoria cache, struttura. Metodo:

GESTIONE DELLA MEMORIA CENTRALE 6.1 D. - UNICAL

Simuliamo ora il funzionamento di LRU sulla reference string data:

Corso di Informatica

Cache: 1 livello della gerarchia di memoria

Università degli Studi di Padova - Corso di Laurea in Informatica

Architettura hardware

Università degli Studi di Padova Dipartimento di Matematica. - Corso di Laurea in Informatica

La gerarchia di Memoria

SIMULAZIONE DELLA PRIMA PROVA INTERMEDIA DEL MODULO DI. CORSO DI LAUREA IN INGEGNERIA ELETTRICA ED ELETTRONICA, INGEGNERIA BIOMEDICA 21 Aprile 2015

Esercizi svolti sulle cache - Soluzioni

Memoria Virtuale. Anche la memoria principale ha una dimensione limitata. memoria principale (memoria fisica) memoria secondaria (memoria virtuale)

static dynamic random access memory

Registri della CPU. Memoria Centrale. Memoria di Massa. Memorie di altri sistemi in rete

Gerachie di Memorie. Matteo Dominoni a.a. 2002/2003. Gerarchie di Memoria A.A. 2002/2003 1

SISTEMI OPERATIVI. Gestione della memoria Domande di verifica. Luca Orrù Centro Multimediale Montiferru 18/06/2007

Sommario. Indirizzamento della memoria cache. Indirizzamento della memoria cache. Esercitazione di Calcolatori Elettronici Prof. Gian Luca Marcialis

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario

Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri 1

Sistemi Operativi Il Sistema Operativo Windows (parte 2)

Le Memorie. Si distinguono per: Supporti sui quali le informazioni vengono fisicamente memorizzate.

Le virtual machine e la memoria virtuale

La gestione della memoria. Lezione 16 Sistemi Operativi

Dove siamo. Gestione della Memoria (1) Dove siamo. Dove siamo. Operating Systems and Distributed Systems. Operating Systems and Distributed Systems

Esercizio: memoria virtuale

Calcolatori Elettronici. La memoria gerarchica La memoria virtuale

Gestione della memoria per sistemi multiprogrammati. Obiettivi. Partizioni fisse. Partizioni fisse. Fondamenti di Informatica

Gli attori principali di un architettura

Università degli Studi di Padova - Facoltà di Scienze MM.FF.NN. - Corso di Laurea in Informatica

Esercizio: memoria virtuale

La gerarchia delle memorie

Gerarchia di memorie

Famiglia dei processori INTEL

Gerarchie di memoria Memorie a componenti dinamici 1

Gestione della Memoria Introduzione ai Sistemi Operativi Corso di Informatica Laurea in Fisica

Calcolatori Elettronici B a.a. 2008/2009

SOLUZIONI DELLA PROVA SCRITTA DEL CORSO DI. NUOVO E VECCHIO ORDINAMENTO DIDATTICO 13 Luglio 2004

La Gerarchia delle Memorie. Calcolatori Elettronici II

Struttura gerarchica delle memorie

Desiderata: memoria capiente e veloce. Connessioni tra livelli di memoria. Memoria cache, struttura. Tecniche impiegate. Ad ogni accesso alla memoria

Calcolatori Elettronici

Informatica giuridica

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Memoria. Memoria. Sommario. Massimo VIOLANTE Politecnico di Torino Dipartimento di Automatica e Informatica

9. Memoria Virtuale. 9. Memoria Virtuale. 9. Memoria Virtuale

SOLUZIONE Istruzioni: Indirizzo logico Legittimo? Indirizzo fisico SI NO SI Dati:

Gerarchia di memoria

GESTIONE DELLA MEMORIA CENTRALE

Sistemi Operativi Gestione della Memoria (parte 2)

FILE E INDICI Architettura DBMS

Sistemi di Calcolo (A.A ) Corso di Laurea in Ingegneria Informatica e Automatica Sapienza Università di Roma

Lezione n.14. La memoria cache

Sistemi Operativi Gestione della Memoria (parte 3)

Blocchi di più parole

Circuiti di Indirizzamento della Memoria

La gestione della memoria. Lezione 30 Sistemi Operativi

Sistemi Operativi Esercizi Gestione Memoria

LA MEMORIA NEL CALCOLATORE

Gestione della Memoria Introduzione ai Sistemi Operativi Corso di Abilità Informatiche Laurea in Fisica

Gerarchia di Memoria e Memorie Cache. ma rallenta R / nw. Qui : modi di aumentare velocità di R / nw. dati e codice non tutti uguali

AXO. Operativi. Architettura dei Calcolatori e Sistemi. memoria virtuale

Sistemi Operativi Esercizi Ricapitolazione. Docente: Claudio E. Palazzi

Il Sottosistema di Memoria

Memoria Virtuale. Lezione Sistemi Operativi

Gestione della Memoria Principale

Gestione della Memoria Principale

Il contesto! Gestione della Memoria! Reg. di Base e reg. Limite! Associazione tra dati/istruzioni e memoria!

Gestione della memoria

La gerarchia delle memorie. Sommario

Memoria. Sistemi Operativi Giuseppe Prencipe. Tipica Gerarchia di Memoria. Gestione della Memoria. Modelli di gestione della memoria

Parte 5. Memoria e I/O

Il Sottosistema di Memoria

Transcript:

SOLUZIONI: Memoria virtuale INTRODUZIONE Memoria Virtuale: Si parla di memoria virtuale quando la memoria principale viene utilizzata come cache per la memoria di massa (dischi, nastri): - I programmi sono compilati rispetto ad uno spazio di indirizzamento virtuale, diverso da quello fisico; - Il sistema di memoria virtuale traduce gli indirizzi virtuali in indirizzi fisici. Vantaggi: - illusione di avere una maggiore memoria fisica a disposizione del processo; - rilocazione dei codici in esecuzione; - meccanismi di protezione (gli spazi di indirizzamento virtuali dei diversi programmi sono mappati su spazi fisici differenti). I concetti relativi alla memoria virtuale sono analoghi a quelli visti per la cache ma, per ragioni storiche, la terminologia è diversa. - Memoria fisica / memoria virtuale - Pagine (blocchi) - Page fault (miss) [la pagina non è in memoria e deve essere letta da disco] Il costo dei page fault è estremamente elevato (milioni di cicli), e questo influenza molte scelte (dimensioni della pagina elevate 4, 16, 32, 64 KB, completa associatività, gestione software, solo politica write-back). Traduzione degli indirizzi: Ad ogni istante solo una parte delle pagine di memoria virtuali è presente nella memoria fisica (meccanismo di caching). L indirizzo virtuale si suddivide in : VIRTUAL PAGE ADDRESS OFFSET Il Virtual Page Address indirizza le entry di una tabella, detta Page Table, che contiene informazioni sulla presenza / validità delle pagine in memoria: D V PHYSICAL PAGE NUMBER Per ragioni di efficienza non si accede direttamente alla Page Table, ma piuttosto al TLB (Translation Lookaside Buffer) che svolge il ruolo di cache della Page Table. La conversione degli indirizzi è eseguita in hardware dalla MMU (memory management unit). 1. Si consideri un sistema di memoria virtuale con le seguenti caratteristiche: VirtualADDR size = 40 b Page size = 8 KB FisicalADDR size = 27 b Si determini la dimensione della Page Table, considerando che ogni elemento della tabella ospiti 2 b aggiuntivi (dirty, valid). Si ipotizzi la presenza di una TLB set-associative a 4 vie di 512 elementi. Si determini la dimensione della TAG. PageOffset size = log 2 Page size = log 2 8 K = 13 b VirtualPage size = 40 13 = 27 b FisicalPage size = 27 13 = 14 b La dimensione di ogni entry della tabella è data da: PTentry size = FisicalPage size + (dirty,valid) = 14 b + 2 b = 16 b = 2 B Poiché la PT è indirizzata tramite il VirtualPage il numero di entry della PT è dato da: #Entry = 2 VirtualPagesize = 2 27 La dimensione della tabella: 2 27 * 2 B = 2 28 B = 2 8 MB = 256 MB La TLB, questa viene indirizzata con VirtualPage che è di 27 b suddiviso in TAG e INDEX Poiché gli insiemi della TLB sono: #Sets = #Entry / n = 512 / 4 = 128 Allora i bit dell INDEX per la TLB sono: INDEX size = log 2 #Sets = log 2 128 = 7 b Quindi TAG sarà dato: TAG size = VirtualPage size INDEX size = 27 7 = 20 b 1

2. Sia data una memoria virtuale paginata. Ogni entry della page table (PT) è di 2B, e contiene 3 bit aggiuntivi (Valid, Dirty, Reference). Calcolare il numero di bit per rappresentare il numero della pagina fisica. Se la dimensione della PT è di 1 MB, quanti bit sono necessari per rappresentare il numero della pagina virtuale? Conoscendo che ogni pagina è di un KB, calcolare le dimensioni dell indirizzo virtuale e di quello fisico. Il numero di pagina fisica è calcolato come: FisicalPage size = PTentry size (Valid, Dirty, Reference) = 2B 3b = 13 b Per calcolare il numero di pagina virtuale, bisogna calcolare il numero di entry della PT: #PTentry = PT size / PTentry size = 1 MB / 2 B = 2 20 B/ 2 B = 2 19 = 0.5 M entry Per cui per indirizzare la PT si ha che: VirtualPage size = log 2 #PTentry = log 2 2 19 = 19 b Se la dimensione di ogni pagina è di 1 KB, allora si ha che: PageOffset size = log 2 Page size = log 2 1K = 10 b Allora le dimensioni dell indirizzo fisico e virtuale sono: FisicalADDR size = FisicalPage size + PageOffset size = 13 b + 10 b = 23 b VirtualADDR size = VirtualPage size + PageOffset size = 19 b + 10 b = 29 b 3. Si supponga di avere un sistema di memoria virtuale paginata con indirizzo virtuale di 32 b e fisico di 30 b, con pagine di 2048 B. La TLB ha 128 entry, dove ogni entry comprende 2 ulteriori bit di Valid e Dirty. Calcolare il numero di bit necessari per memorizzare ciascuna entry della TLB rispetto alle organizzazioni diretta, associativa a 4 vie e completamente associativa, della TLB stessa. Se la dimensione di ogni pagina è di 2048 B, allora si ha che: PageOffset size = log 2 Page size = log 2 2048 = 11 b E quindi gli identificatori di pagina hanno le seguenti dimensioni: FisicalPage size = FisicalADDR size - PageOffset size = 30 b + 11 b = 19 b VirtualPage size = VirtualADDR size - PageOffset size = 32 b + 11 b = 21 b TLB diretta: INDEX size = log 2 #Entry = log 2 128 = 7 Da cui si ricava che: TAG size = VirtualPage size - INDEX size = 21 b - 7 b = 14 b E quindi ogni entry è composta da: TLBentry size = TAG size + FisicalPage size + (Valid, Dirty) = 14 b + 19 b + 2 b = 35 b TLB 4-way: #Sets = #Blocks / n = 128 / 4 = 32 INDEX size = log 2 #Sets = log 2 32 = 5 Da cui si ricava che: TAG size = VirtualPage size - INDEX size = 21 b - 5 b = 16 b E quindi ogni entry è composta da: TLBentry size = TAG size + FisicalPage size + (Valid, Dirty) = 16 b + 19 b + 2 b = 37 b TLB completamente associativa: INDEX ha 0 b e quindi il TAG coincide con VirtualPage E quindi ogni entry è composta da: TLBentry size = VirtualPage size + FisicalPage size + (Valid, Dirty) = 21 b + 19 b + 2 b = 42 b 2

4. Sia dato un sistema di memoria virtuale con pagine di 2 KB, e indirizzo virtuale di 32 b. L indirizzo fisico è di 27 b. Si assuma che la TLB sia 4-way associative e che la dimensione di ogni entry sia 4B, inclusi 2 bit di Valid e Dirty. Determinare la dimensione della TAG nella TLB. Determinare il numero di insiemi contenuti nella TLB. L offset all interno della pagina è: PageOffset size = log 2 Page size = log 2 2K = 11 b La dimensione del numero di pagina virtuale e fisica sono: VirtualPage size = VirtualADDR size - PageOffset size = 32 b + 11 b = 21 b FisicalPage size = FisicalADDR size - PageOffset size = 27 b + 11 b = 16 b La dimensione della TAG nella TLB è: TAG size = TLBentry size - (Valid, Dirty) - FisicalPage size = 32 b - 2 b - 16 b = 14 b Per conoscere il numero di insiemi della TLB a 4 vie, è necessario conoscere INDEX size. Considerando che la TLB viene indirizzata tramite l indirizzo virtuale, INDEX size è: INDEX size = VirtualPage size - TAG size = 21 b - 14 b = 7 b Quindi il numero di insiemi della TLB è: #Sets = 2 INDEXsize = 2 7 = 128 5. Si consideri un sistema con memoria virtuale e Page Table di dimensione 16 MB. Ogni entry include 3 bit (valid, dirty, e reference bit). Le pagine sono di dimensione 1 KB e l indirizzo fisico è di 23 b. 1. Determinare la dimensione dell indirizzo virtuale. 2. Supponendo di avere una TLB 4-way associative con 512 blocchi, mostrare la suddivisione in campi TAG e INDEX dell indirizzo di pagina virtuale. 3. Supponendo di avere una cache 2-way associative composta da 2048 blocchi da 16 B ciascuno, mostrare la suddivisione in campi TAG, INDEX e OFFSET dell indirizzo fisico usato per accedere la cache. 1. Per indirizzare i byte all interno della pagina si ha che PageOffset size = log 2 Page size = log 2 1K = 10 b Quindi i bit per indirizzare le pagine fisiche sono dati da: FisicalPage size = FisicalADDR size - PageOffset size = 23 b + 10 b = 13 b Ogni ingresso della page table è costituito quindi da PTentry size = FisicalPage size + (Valid, Dirty, Reference) = 13 b + 3 b = 16 b = 2B. Possiamo ora ricavare il numero di ingressi della PT come segue: #PTentry = PT size / PTentry size = 16 MB / 2 B = 8 M = 2 23. Il numero di entry della PT corrisponde al numero di pagine virtuali indirizzabili, quindi si ha: VirtualPage size = log 2 #PTentry = log 2 2 23 = 23 b Si ottiene così un indirizzo virtuale di VirtualADDR size = VirtualPage size + PageOffset size = 23 b + 10 b = 33 bit. 2. Il numero di insiemi della TLB è #Sets = #Entry / n = 512 / 4 = 2 7 = 128 Avremo quindi un campo INDEX di: INDEX size = log 2 #Sets = log 2 128 = 7 b Considerando che alla TLB si accede tramite il VirtualPage size di 23 b, il campo TAG sarà di: TAG size = VirtualPage size - INDEX size = 23 b - 7 b = 16 b Continua 3

Continua esercizio 5: 3. Il numero di insiemi della Cache è #Sets = #Blocks / n = 2048 / 2 = 2 10 = 1024. Avremo quindi un campo INDEX di: INDEX size = log 2 #Sets = log 2 1024 = 10 b L OFFSET del blocco è invece uguale a: OFFSET size = log 2 Block size = log 2 16 = 4 b Quindi la TAG da memorizzare assieme ad ogni blocco è TAG size = FisicalADDR size - INDEX size - OFFSET size = 23 b - 10 b - 4 b = 9 b 6. Considerare una cache associativa a 4 vie, con una parte dati in grado di memorizzare 512 KB, i cui blocchi sono grandi 32B. L indirizzo fisico con cui si accede alla cache è di 27 b. Calcolare la dimensione della TAG della cache. A monte della cache, abbiamo un sistema di memoria virtuale basato su pagine da 4 KB. La TLB corrispondente è a 2 vie, ed è costituita da 128 insiemi. Ogni entry della TLB è grande 32 b, e include 2 bit aggiuntivi (Valid, Dirty). Calcolare la dimensione dell indirizzo virtuale. Il numero di blocchi totali della cache è: #Blocks = Cache size / Block size = 512 KB / 32 B = 512 * 2 10 / 32 = 16 * 2 10 = 2 14 Il numero di insiemi della cache è: #Sets = #Blocks / n = 2 14 / 4 = 2 12 = 4096 Da cui si ha che INDEX è: INDEX size = log 2 #Sets = log 2 4096 = 12 b E poiché: OFFSET size = log 2 Block size = log 2 32 = 5 b Abbiamo che: TAG size = FisicalADDR size - INDEX size - OFFSET size = 27 b - 12 b - 5 b = 10 b Poiché la pagina è di 4 KB, l offset di pagina è di PageOffset size = log 2 Page size = log 2 4K = 12 b Per cui il numero di pagina fisica è: FisicalPage size = FisicalADDR size - PageOffset size = 27 b - 12 b = 15 b Poiché gli insiemi della TLB sono 128, l INDEX per accedere alla TLB è: INDEX size = log 2 #Sets = log 2 128 = 7 b Per trovare la TAG, impostiamo la seguente equazione: TLBentry size = TAG size + (Valid, Dirty) + FisicalPage size Sostituendo si ottiene 32 b = TAG size + 2 b + 15 b Da cui: TAG size = 32 b - 17 b = 15 b Quindi la dimensione del numero di pagina virtuale è: VirtualPage size = TAG size + INDEX size = 15 b + 7 b = 22 b La dimensione dell indirizzo virtuale è: VirtualADDR size = VirtualPage size + PageOffset size = 22 b + 12 b = 34 b 4

7. Calcolare il numero di insiemi ed il livello di associatività in una cache set-associative dove siano noti l INDEX, la dimensione (parte dati) della cache, la TAG e la dimensione dell indirizzo fisico. In particolare abbiamo che: Cache size = 1 MB, TAG size = 13 b, FisicalADDR size = 30 b, INDEX size = 11 b. Sempre rispetto alla solita gerarchia di memoria, individuare la dimensione della TAG size in una TLB a 4 vie di 256 insiemi, considerando che l indirizzo virtuale è di 32 b, e la Page size della memoria paginata è 4 KB. L offset nel blocco è uguale a: OFFSET size = FisicalADDR size - TAG size - INDEX size = 30 b - 13 b - 11 b = 6 b Quindi la dimensione di ogni blocco è: Block size = 2 OFFSETsize = 2 6 B = 64 B Il numero di insiemi della cache è quindi: #Sets = 2 INDEXsize = 2 11 = 2048 Ogni insieme è grande: Set size = Cache size / #Sets = 2 20 B / 2 11 = 2 9 B. Ogni insieme contiene quindi: n = Set size / Block size = 2 9 B / 2 6 B = 2 3 Per cui la cache è associativa ad 8 vie Il page offset è uguale a: PageOffset size = log 2 Page size = log 2 4 KB = log 2 2 12 = 12 b La dimensione in bit della pagina virtuale è quindi: VirtualPage size = VirtualADDR size - PageOffset size = 32 b - 12 b = 20 b Poiché la TLB è composta da 256 insiemi, abbiamo che: INDEX size = log 2 #Sets = log 2 256 = 8 b Per cui: TAG size = VirtualPage size - INDEX size = 20 b - 8 b = 12 b 8. Sia dato un sistema di memoria virtuale con pagine di 1 KB, Page Table di 8 MB e indirizzo virtuale di 32 bit. Assumendo che ogni entry delle Page Table contenga, oltre all indirizzo di pagina fisica, due bit aggiuntivi (Validità e Riferimento) si calcoli il numero di bit dell indirizzo fisico. Si ipotizzi, quindi, la presenza di una cache 1-way associative (diretta) di 64 KB (solo dati), con blocchi di 4 B. Si descrivano composizione e dimensioni delle varie parti di ciascuna entry della cache e si calcoli la dimensione complessiva della cache (TAG e dati). L offset all interno della pagina è: PageOffset size = log 2 Page size = log 2 1K = 10 b Dunque il numero di bit che esprimono il numero di pagina virtuale è: VirtualPage size = VirtualADDR size - PageOffset size = 32 b - 10 b = 22 b Dato che la PT è indirizzata dal numero di pagina virtuale, il numero di entry è pari a: #PTentry = 2 VirtualPagesize = 2 22 Per cui la dimensione di ogni entry è pari a: PTentry size = PT size / #PTentry = 8 * 2 20 / 2 22 = 2 B = 16 b Ciascuna entry contiene i due bit di controllo e l indirizzo di pagina fisico e quindi: FisicalPage size = PTentry size - (Valid, Dirty) = 16 b - 2 b = 14 b Quindi l indirizzo fisico è complessivamente dato da: FisicalADDR size = FisicalPage size + PageOffset size = 14 b + 10 b = 24 b Continua 5

Continua esercizio 8: L offset all interno del blocco è: OFFSET size = log 2 Block size = log 2 4 B = 2 b Quindi l indirizzo del blocco è: BlockADDR size = FisicalADDR size - OFFSET size = 24 b 2 b = 22 b Il numero di blocchi nella cache è di: #Blocks = Cache size / Block size = 64 KB / 4 B = 64 * 2 10 B / 4 B = 2 14. Pertanto: INDEX size = log 2 #Blocks = log 2 2 14 = 14 Mentre la dimensione del TAG sarà: TAG size = BlockADDR size - INDEX size = 22 b - 14 b = 8 b = 1 B Dato che ogni entry contiene dati e TAG, la dimensione complessiva della cache sarà: Cache size (dati + TAG) = #Blocks * (Block size + TAG size ) = 2 14 * 5 B = 80 KB 6