Fallimenti nella TLB

Documenti analoghi
Esercitazione su Gerarchie di Memoria

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

SOLUZIONI: Memoria virtuale

Introduzione alle gerarchie di memoria

Blocchi di più parole

Esercitazione su Gerarchie di Memoria

static dynamic random access memory

Calcolo prestazioni cache (1)

Von Neumann Bottleneck

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

Calcolatori Elettronici

Prestazioni & Co: CPU, Memoria, I/O

Architettura hardware

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

Miglioramento delle prestazioni

Memoria Virtuale e I/O

Gli attori principali di un architettura

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

La struttura gerarchica delle memorie

Calcolatori Elettronici B a.a. 2007/2008

Architettura degli elaboratori - 2 -

Memoria Cache. G. Lettieri. 16 Marzo 2017

GESTIONE DELLA MEMORIA CENTRALE 6.1 D. - UNICAL

Gestione della memoria

Sistemi operativi e distribuiti

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

La gerarchia di memorie (2)

Struttura delle memorie cache

Gerarchia di memoria

Architettura hardware

Progetto del processore e supporto del processore al SO (interruzioni eccezioni) Salvatore Orlando

La struttura gerarchica delle memorie

Esercizi vari. CPI e influenza cache

Simuliamo ora il funzionamento di LRU sulla reference string data:

GESTIONE DELLA MEMORIA CENTRALE

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

La memoria cache. Lab di Calcolatori

memoria virtuale protezione

Corso di laurea in ingegneria informatica Esame di sistemi operativi 21 gennaio 2009 SOLUZIONI

Esercizi svolti sulle cache - Soluzioni

Calcolatori Elettronici A a.a. 2008/2009

Lezione n.14. La memoria cache

Gestione della Memoria

Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa)

Lezione 22 La Memoria Interna (1)

Università degli Studi di Cassino

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

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

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

06/05/2009. Caratteristiche desiderabili Ampia capacità Velocità Economicità

Gerarchia di memoria

Modulo 1: Le I.C.T. UD 1.4i: Prestazioni di un Computer

Realizzazione a cicli di clock multipli

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

ORGANIZZAZIONE DEI CALCOLATORI LE GERARCHIE DI MEMORIA

Cache: 1 livello della gerarchia di memoria

Richiami sull architettura del processore MIPS a 32 bit

Architettura dei computer

Gerarchia di Memorie

PRESTAZIONI. senza e con memoria cache

Lezione 15. L elaboratore Elettronico

Sistemi operativi e distribuiti

La memoria-gerarchia. Laboratorio di Informatica - Lezione 3 - parte I La memoria - La rappresentazione delle informazioni

LA GESTIONE DELLA I/O

ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).!

Capitolo 7: Input/Output. Es.1 - Bus sincrono. Es.1 - Risposta (a)

Corso di Informatica

Set di istruzioni Z80 (quarta parte) Pagina 1 di 9 ISTRUZIONI DI SALTO

Gerarchia di memoria

Matlab/Octave - Esercitazione 13

Componenti e connessioni. Capitolo 3

Gerarchie di memoria. Gerarchie di memoria

Il calcolatore. È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica

Struttura gerarchica delle memorie

Corso di Alfabetizzazione Informatica 2001/2002. La CPU. F. Tortorella Università degli Studi. di Cassino

Gestione della memoria

Progettazione dell unità di elaborazioni dati e prestazioni. Il processore: unità di elaborazione. I passi per progettare un processore

Memoria cache, interrupt e DMA

SIMULAZIONE DELLA PROVA INTERMEDIA DEL CORSO DI CALCOLATORI ELETTRONICI

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

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

Memoria cache. Memoria cache. Miss e Hit. Problemi. Fondamenti di Informatica

Struttura CPU. Struttura e Funzione del Processore. Capitolo 12. Compiti CPU:

Architettura dei sistemi di elaborazione: La memoria (parte 1)

Influenza dell' I/O sulle prestazioni (globali) di un sistema

Corso di Informatica

Esercizi per il corso di Architettura dei Calcolatori. Anno accademico 2008/09. Si prevede l utilizzo dell emulatore Eniac ( presentato a lezione )

Stampa ed eliminazione dei processi in attesa Come riconoscere gli errori di formattazione Verifica della stampa Posposizione della stampa

Sistemi Operativi. La gestione delle risorse

Gestione Memoria. Gestione della memoria

Informatica Generale 07 - Sistemi Operativi:Gestione dei processi

PROVA SCRITTA DEL MODULO/CORSO DI. 24 novembre 2016

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 18 Febbraio Attenzione:

Modi di esecuzione user / kernel

R. Cusani, F. Cuomo: Telecomunicazioni - DataLinkLayer: Gestione degli errori, Aprile 2010

Università degli Studi di Cassino

Architettura degli elaboratori Tema d esame del 20/01/2016

Corso di Informatica

Descrivere i vantaggi di un sistema a memoria virtuale

La Gerarchia delle Memorie. Calcolatori Elettronici II

Transcript:

Fallimenti nella TLB Un fallimento nella TLB può essere dovuto a due motivi: 1. la pagina fisica non è presente in memoria (page fault); 2. la traduzione non è nella TLB, anche se la pagina fisica è presente in memoria. Quando si verifica un miss nella TLB, non si sa ancora se questo è del primo o del secondo tipo: E` necessario accedere alla page table e controllare il bit di validità su questa. Se il bit di validità non è asserito allora si ha un page fault. Se il bit di validità è asserito la TLB viene modificata inserendo l associazione trovata. Poiché i fallimenti del secondo tipo sono i più frequenti è importante che siano gestiti in modo efficiente. Certamente NON valgono le considerazioni fatte per la page fault sulla scelta di dove scrivere una pagina o di quale pagina sostituire che portavano a dire che anche una piccola riduzione della miss rate può ripagare ampiamente il costo dell algoritmo utilizzato. In questo caso è più importante la velocità della scelta. Si può quindi usare o una TLB ad indirizzamento diretto oppure una completamente associativa con una scelta casuale dell elemento da sostituire.

Page Fault Se il bit di validità non è asserito siamo in presenza di un page fault, è necessario trasferire il controllo al sistema operativo per gestire l errore di pagina. Trasferire il controllo al sistema operativo significa interrompere il processo attivo in quel momento e passare al sistema operativo tutte le informazioni necessarie per poter: - gestire l eccezione che si è verificata (in questo caso page fault) - riattivare il processo riprendendo l esecuzione dal punto in cui è stata interrotta. Per poter gestire l eccezione il sistema operativo deve innanzitutto poter sapere quale eccezione è sorta. Il processore trasferisce questa informazione scrivendo un particolare registro: Cause register. E importante che la segnalazione dell eccezione avvenga entro il ciclo di clock in cui si è verificata, per prevenire scritture errate. Nota. Supponiamo che più programmi (o processi) vengano eseguiti sullo stesso processore e che tutte le page table vengano mantenute in memoria Per poter riattivare il processo devono essere salvati - Il program counter (exception program counte: EPC) - Il banco dei Register - Il registro che contiene l indirizzo della page table (Page table register)

Gestione page fault La gestione di un page fault da parte del sistema operativo prevede - l accesso alla page table per ritrovare l indirizzo su disco; - la scelta della pagina fisica da rimpiazzare (ed eventualmente da ricopiare in memoria); - la lettura della pagina da disco a memoria. Queste operazioni, (soprattutto l ultima) richiedono milioni di cicli di clock: Il processo che ha sollevato l eccezione deve attendere, il sistema operativo generalmente lo sospende ed attiva un altro processo che richiede la CPU. Se l'errore di pagina avviene per una richiesta di accesso alla memoria delle istruzioni, il processo può essere sospeso senza problemi: Nel registro EPC si trova l indirizzo dell istruzione cercata, quando il processo verrà riattivato troverà l istruzione (perché il sistema operativo ha nel frattempo ricopiato la pagina) e potrà continuare l esecuzione. Se l'errore di pagina avviene per una richiesta di accesso alla memoria dati, è importante che l istruzione che era in esecuzione, e che ha provocato l errore, sia rieseguibile. Infatti quando il processo verrà riattivato l esecuzione non potrà riprendere da una fase intermedia ma solo dalla prima fase (fetch). Nel caso delle istruzioni MIPS questo si ottiene facilmente, perché la scrittura di un dato avviene solo alla fine ed è quindi sufficiente NON far completare l esecuzione dell istruzione per poterla poi rieseguire. Per macchine con istruzioni più complesse può anche non essere possibile rendere l istruzione rieseguibile. In queste situazioni sarà necessario salvare più informazioni per poter riattivare il processo.

Indirizzo si disco Il bit di validità permette di sapere se la pagina di cui abbiamo il riferimento virtuale risiede nella memoria fisica o no. In caso affermativo, la page table contiene l indirizzo fisico. E in caso negativo? Generalmente, il sistema operativo quando crea un processo crea anche - lo spazio su disco per tutte le pagine di quel processo e - la struttura per ricordare dove si trova su disco ogni pagina virtuale. Page table Memoria fisica 1 0 0 1 0 1 1 1 1 Memoria su disco

Dimensione della page table. Poichè la page table risiede in memoria, è preferibile che la sua dimensione venga mantenuta ridotta. (Principalmente se ci sono più processi in esecuzione sullo stesso processore, dato che le page table di tutti i processi devono essere mantenute in memoria). Sarebbe sufficiente mantenere la traduzione solo per gli indirizzi virtuali effettivamente usati dal processo ma questo non può essere noto a priori. Alcune tecniche. Limitare la dimensione iniziale della page table ed aggiungere nuove entrate solo quando necessario (il processo richiede un indirizzo non presente in tabella). Usare una funzione hash che permette di mantenere la dimensione della tabella uguale al numero di pagine fisiche utilizzate dal processo. Dividere la page table in pagine, cioè utilizzare lo spazio virtuale anche per la tabella delle pagine. Nota sulla tecnica di write-back. La tecnica di write-back prevede la copia della pagina all indirizzo fisico x - dalla memoria principale (fisica) alla memoria secondaria (disco) - ogni volta che l indirizzo fisico x viene riscritto. Per evitare copie superflue viene spesso mantenuto un bit (detto dirty bit) che avvisa se tale copia è proprio necessaria. Il dirty bit viene asserito quando avviene una scrittura nella pagina fisica.

Dirty bit per write-back Dirty bit 1 1 Page Table Dirty bit = 1: contenuto modificato! Esercizio.

Si supponga di avere un sistema in cui: - Lo spazio di indirizzamento virtuale è di 32 bit. - Lo spazio di indirizzamento fisico è di 27 bit. - La memoria virtuale è organizzata a pagine di dimensione 4KB. (a) Quale è la dimensione della page table, supponendo che comprenda per ogni ingresso un bit di validità? (a1) Come sono composti l'indirizzo fisico e quello virtuale? Se le pagine sono di 4KB = 22 210, il page offset è di 12 bit. Indirizzo fisico 27 bit Indirizzo pagina fisica Page offset 15 bit 12 bit Il numero di pagina fisica è formato quindi da 27-12 = 15 bit. Indirizzo virtuale 32 bit Indirizzo pagina virtuale Page offset 20 bit 12 bit L'indirizzo virtuale contiene i 12 bit del page offset, i restanti 32-12 = 20 bit formano l'indice nella page table.

(a2) Cosa contiene la page table?. Essendoci 20 bit per indirizzare un elemento della page table, le pagine virtuali sono 220. La page table ha quindi 220 ingressi. 2 20 val Indirizzo pagina fisica : 15 bit Page Table Ciascuno ingresso contiene i 15 bit dell indirizzo della pagina fisica più il bit di validità, ovvero 16 bit = 2B. La dimensione della page table è quindi 220 2 B = 2MB

(b) Quanti bit dovrebbe contenere una TLB con 2 8 ingressi? (b1) Cosa contiene la TLB? Per ogni ingresso si deve memorizzare il numero di pagina fisica, il campo Tag, il bit di validità. Il numero di pagina fisica richiede 15 bit. Per determinare la dimensione del campo Tag, vediamo come è formato l'indirizzo virtuale (con cui si accede alla TLB). 32 bit Indirizzo pagina virtuale Page offset 20 bit 12 bit Tag Indice TLB Page offset 12 bit 8 bit 12 bit Ogni ingresso richiede quindi 12+15+1 = 28 bit 2 8 Val Tag : 12 bit Ind. pagina fisica : 15 bit TLB Il numero totale di bit della TLB è (7 22 ) 28 = 7K bit.

Indirizzo virtuale 32 bit Tag Indice TLB Page offset Indirizzo pagina virtuale 20 bit 12 bit 2 8 TLB Pagina 2 20 Memoria Fisica 2 15 pagine Page table

Integrazione Memoria virtuale, TLB, Cache Indirizzo virtuale 32 bit Tag Indice TLB Page offset TLB Indice pagina fisica Page offset Tag Indice cache Indirizzo blocco Offset di blocco Tag Cache Memoria Fisica

Esercizio - continua Con riferimento all'esercizio precedente, si supponga di avere una cache per i dati: associativa a 2 vie, composta da 2K insiemi con blocchi di 16B. (c) Come è composta la cache? Indirizzo fisico 27 bit Indirizzo pagina fisica Page offset 15 bit 12 bit Tag Indice cache Offset blocco Lo spazio di indirizzamento fisico è di 27 bit. Il blocco della cache è di 16B, quindi il campo offset è di 4 bit. La cache è composta da 2K insiemi, il campo indice deve quindi essere formato da 11 bit (2 210 = 211). Il campo tag è formato quindi da 27-11- 4 = 12 bit. V Tag Blocco 1 V Tag Blocco 2 12 bit 128 bit 12 bit 128 bit 211 insiemi

Integrazione di memoria virtuale, TLB e cache Quando consideriamo memoria virtuale, TLB e cache assieme, la situazione ideale si verifica quando un indirizzo virtuale viene: tradotto dalla TLB la pagina è presente in memoria e il suo indice è nella TLB ed inviato alla cache dove viene trovato e recuperato, il blocco cercato è presente nella cache e quindi rinviato alla CPU Il caso peggiore si ha invece in caso di page fault. non viene tradotto dalla TLB l'indice della pagina non è memorizzato nella TLB viene cercato nella Page Table ma non viene trovato nella Page Table la pagina non è presente in memoria. Verrà quindi inviata una richiesta al SO affinchè venga trasferita la pagina dalla memoria secondaria alla memoria principale. Si possono verificare vari casi intermedi. Vediamo due esempi.

L indirizzo virtuale non viene tradotto dalla TLB e viene quindi inviato alla page table, viene trovato nella page table la pagina è in memoria ma non è stata referenziata recentemente, quindi il suo indice non è nella TLB ed inviato alla TLB per la memorizzazione, viene quindi tradotto dalla TLB ed inviato alla cache dove viene trovato e recuperato, e quindi rinviato alla CPU L indirizzo virtuale viene tradotto dalla TLB la pagina è in memoria e il suo indice è ancora nella TLB ed inviato alla cache dove non viene trovato; ma il blocco cercato non è nella cache l'indirizzo viene quindi inviato alla memoria (è presente perché inserito nella TLB) recuperato e copiato nella cache, e quindi rinviato alla CPU Quest ultima situazione può verificarsi ma non è frequente perché le associazioni nella TLB dovrebbero rappresentare accessi recenti e questi dovrebbero essere ancora presenti nella cache. Altre situazioni sono impossibili. Ad esempio non può esserci un hit nella cache ed un miss nella page table, perché la cache rappresenta un sottoinsieme della memoria; non può esserci un hit nella TLB e un miss nella page table. perché la TLB contiene traduzioni in indirizzi fisici della memoria principale.

Le tre C Tutti i fallimenti (miss) che si verificano durante una ricerca nella cache appartengono ad una delle tre seguenti categorie. - Compulsory (fallimenti obbligati). Sono quelli che avvengono la prima volta quando è richiesto l accesso ad un blocco che non è mai stato nella cache. - Capacity (fallimenti di capacità). Sono quelli che avvengono quando la cache è piena e il blocco cercato è stato scaricato per far posto ad uno usato più di recente. - Conflict (fallimenti di conflitto). Sono quelli che avvengono quando, per la scelta del tipo di indirizzamento, due blocchi distinti collidono sullo stesso blocco della cache. Per ciascuna di queste sorgenti di fallimento possono essere adottate soluzioni per diminuirne la frequenza. Compulsory: diminuiscono se si aumenta la dimensione del blocco. Capacity: ovviamente si tratta di aumentare la dimensione della cache. Conflict: diminuiscono aumentando il livello di associatività Ciò che fa diminuire la frequenza di un tipo di fallimento può però avere un influenza negativa su altri aspetti.

Protezione della memoria virtuale Quando più processi vengono eseguiti da un unico processore deve essere possibile garantire che - ogni processo abbia un proprio spazio di memoria virtuale, e che - la condivisione della memoria fisica non permetta ad un processo di accedere ai dati di un altro processo. Associando ad ogni processo una page table personale, per soddisfare i precedenti vincoli bisogna che il sistema operativo quando gestisce un page fault assegni un indirizzo fisico che NON sia valido in un altra tabella. 1 Tabella P1 1 NO Tabella P2 In questo modo il passaggio del controlla dal processo P1 al processo P2 può avvenire in modo sicuro.

Quando si utilizza anche la TLB (che è unica per tutti i processi), passando il controllo da P1 a P2 la TLB, che era usata da P1, verrà usata da P2. Senza alcun accorgimento possono sorgere sia - problemi di sicurezza: P2 può accedere ai dati di P1; che - problemi di correttezza: P2 può credere di avere una associazione che non è ancora stata creata. La soluzione più semplice è quella di cancellare la TLB ogni volta che il controllo passa da in processo ad un altro. Con questa soluzione però ogni volta che un processo viene riattivato non trova nessuna delle associazioni usate prima della sua interruzione e deve ricostruire la TLB. Il neo di questa soluzione è che possono essere persi i vantaggi della TLB: quando ci sono frequenti alternanze tra i processi, un processo può venir interrotto quando non ha ancora sfruttato appieno le associazioni memorizzate. Per ovviare a ciò può essere inserito nella TLB un campo che permette di individuare il processo che ha creato l associazione: ogni processo (eccettuato il sistema operativo) può accedere solo alle associazioni da lui memorizzate.