2013-05-06 12 views
5

Sto cercando di risolvere una domanda di tipo obiettivo, è venuto In esame. In realtà non conosco la risposta giusta e non so come ottenerlo, ho bisogno del tuo aiuto. Grazie .Razione di errore nella cache e calcolo del tempo medio

Domanda: In un determinato sistema il tempo di accesso alla memoria principale è 100 ns. La cache è 10 volte più veloce della memoria principale e utilizza il protocollo di scrittura. Se il rapporto di hit per la richiesta di lettura è 0.92 e l'85% delle richieste di memoria generate dalla CPU sono in lettura, il rimanente è per la scrittura; poi la considerazione tempo medio di lettura e scrittura richieste è

a) 14.62ns

b) 348.47ns

c) 29.62ns

d) 296.2ns

Il mio lavoro ::::

Bene, tempo di accesso alla memoria = 100ns

cache di tempo di accesso sarebbe = 10 ns (10 tempo più veloce)

In order to find avg time we have a formula 

Tavg = hc+(1-h)M 

    where h = hit rate 
    (1-h) = miss rate 
     c = time to access information from cache 
     M = miss penalty (time to access main memory) 

scrittura tramite le operazioni di: posizione della cache e la posizione di memoria principale viene aggiornato contemporaneamente.

È dato che la richiesta dell'85% generata dalla CPU è richiesta di lettura e il 15% è richiesta di scrittura.

Tavg = 0.85(avg time for read request)+ 0.15(avg time for write request) 
    = 0.85(0.92*10+0.08*100)+0.15(avg time for write request) 

// * 0.92 è un rapporto di successo per richiesta di lettura, ma ha colpito il rapporto per la richiesta di scrittura non è dato ??

Se assumo tale hit rapporto colpire per richiesta di scrittura è la stessa percentuale di successi per richiesta di lettura allora,

= 0.85(0.92*10+0.08*100)+0.15(0.92*(10+100)+0.08*100) 
    =31 ns 

Se assumo che hit ratio è 0% per richiesta di scrittura allora,

= 0.85(0.92*10+0.08*100)+0.15(0*110+1*100) 
    =29.62 ns 

risposta

0

In caso di scrittura attraverso la politica e quando i dati vengono letti direttamente dalla memoria principale quando si verifica la cache miss,

Tavg(for write)=Hw*Tm +(1-Hw)*Tm = Tm 

Hw = percentuale di successi per la scrittura, Tm = Tempo di accedere alla memoria principale

in questa formula, in entrambi i casi di cache hit & perdere, siamo in grado di aggiornare e leggere i dati simultaneamente in tempo Tm per sé, dato che di solito Tm >> Tc . Quindi Tc per la lettura può essere ignorato.

Quindi non è necessario conoscere il rapporto di riscontro per scrivere per questa domanda. e la risposta sarebbe 29.62ns

2

Tempo di accesso medio considerando solo lettura = 0,92 * 10 + 0,08 * 100 = 17,2 ns.

Tempo di accesso medio considerando solo scrittura = 100 ns (perché in scrittura tramite devi tornare in memoria per aggiornare anche se è un hit o miss. Se si assume hit ratio = 0.5 e miss = 0.5 then 0.5 * 100 + 0.5 * 100 = 1 * 100)

Così, tempo di accesso totale sia per leggere e scrivere sarebbe - 0,85 * 17,2 + 0,15 * 100 = 14,62 + 15 = 29.62 ns

** cant assume percentuale di successi per scrivere lo stesso come hit ratio per leggere. per la richiesta di scrittura (write through) qualunque sia il caso, è necessario scrivere di nuovo nella memoria. quindi il tempo di accesso in scrittura sarà uguale al tempo di accesso alla memoria.

2

La tua seconda ipotesi è corretta.

Con la cache write-through, scrive immediatamente i blocchi modificati in memoria e quindi sul disco. Poiché non viene fornito il tempo di accesso al disco, viene eliminato dall'equazione. Le mie notazioni sono leggermente diverse, ma le posterò in questo modo per i futuri lettori. Ho usato la notazione data in William StallingsSistemi operativi: Internals e principi di progettazione.

Dato:

Tm = 100ns 
Tc = 10ns /* 10x faster than Tm */ 
Hr = 0.92 /* Hit rate reading */ 
85% reading => 15% of the time writing 

Soluzione:

The effective access time for reading: 
Te_r = Hr * Tc + (1-Hr)Tm = 0.92*10 + (1 - 0.92)100 = 9.2 + 8 = 17.2 

The effective access time for writing, is determined from the Hit rate Hw, 
which is always 0, because the data must be immediately written onto the 
memory. 
Te_w = Hw * Tc + (1-Hw)Tm = 0*10 + (1 - 0)100 = 100 

Taking into account the percentage: 
0.85*17.2 + 0.15*100 = 14.62 + 15 = 29.62 

                    Q.E.D 
+0

Perché si parla niente di disco? La domanda non dice che la memoria è supportata dal disco, quindi dovresti pensare che non lo sia. per esempio. una mappatura 'MAP_PRIVATE' (come la sezione dei dati di un eseguibile) o' MAP_ANONYMOUS' (malloc, o la sezione bss). I sistemi operativi normali non scrivono pagine anonime sporche da scambiare a meno che non ci sia una pressione di memoria, anche se riservano abbastanza swap per evitare l'overcommit. –

+0

@PeterCordes Bene, ho assunto esattamente quello. Tuttavia, la cache write-through scrive sull'archiviazione di backup e ho pensato che con "memoria" si intendesse la memoria principale interna *, che è volatile. Ecco perché come memoria di supporto comune, ho pensato al disco. Ma ancora non l'ho assunto nella soluzione. – user8

Problemi correlati