2014-11-23 18 views
40

La mia comprensione è che la differenza principale tra i due metodi è che nel metodo "write-through" i dati vengono scritti nella memoria principale attraverso la cache immediatamente, mentre nei dati di "write-back" è scritto in un "secondo tempo".Write-back vs Write-through

Abbiamo ancora bisogno di attendere la memoria in "quest'ultimo momento", quindi qual è il vantaggio di "write-through"?

+0

@EricWang Penso che intendiate che "write back" ha prestazioni migliori? – wlnirvana

+0

@wlnirvana Sì, hai ragione, è il mio errore di ufficio. Lo rimuoverei e inserirei un nuovo commento qui per evitare futuri fuorvianti. –

+2

In parole semplici, 'write back' ha prestazioni migliori, perché scrivere nella memoria principale è molto più lento della scrittura nella cache della cpu, e i dati potrebbero essere brevi durante (mezzi potrebbero cambiare di nuovo prima, e non c'è bisogno di mettere la vecchia versione in memoria). È complesso, ma più sofisticato, la maggior parte della memoria nella CPU moderna usa questa politica. –

risposta

44

Il vantaggio del write-through nella memoria principale è che semplifica la progettazione del sistema informatico. Con write-through, la memoria principale ha sempre una copia aggiornata della linea. Quindi, quando una lettura è terminata, la memoria principale può sempre rispondere con i dati richiesti.

Se si utilizza la write-back, a volte i dati aggiornati si trovano nella cache del processore e talvolta nella memoria principale. Se i dati si trovano in una cache del processore, il processore deve interrompere la memoria principale dal rispondere alla richiesta di lettura, poiché la memoria principale potrebbe avere una copia obsoleta dei dati. Questo è più complicato del write-through.

Inoltre, il write-through può semplificare il protocollo di coerenza della cache poiché non è necessario lo stato Modifica. Il modifica i record di stato che la cache deve scrivere nuovamente la riga della cache prima che invalidi o elimini la riga. In write-through una riga di cache può sempre essere invalidata senza riscrittura poiché la memoria ha già una copia aggiornata della linea.

Un'ultima cosa: su un software di architettura write-back che scrive su registri I/O mappati in memoria, è necessario eseguire ulteriori passaggi per assicurarsi che le scritture vengano immediatamente inviate fuori dalla cache. Altrimenti le scritture non sono visibili al di fuori del core finché la riga non viene letta da un altro processore o la linea viene espulsa.

+4

Per l'I/O mappato in memoria, tali indirizzi vengono in genere mappati come non collegati. La scrittura attraverso può anche essere utilizzata per aumentare l'affidabilità (ad es., Se L1 ha solo protezione di parità e L2 ha ECC). La scrittura attraverso è anche più popolare per le cache più piccole che usano no-write-allocate (cioè, una mancanza di scrittura non alloca il blocco alla cache, riducendo potenzialmente la richiesta di capacità L1 e L2 read/L1 fill widthwidth) poiché gran parte dell'hardware il requisito per la scrittura è già presente per questo tipo di scrittura. –

+1

è possibile verificare se il metodo di cache nel mio core è write-back o write through? – Shaowu

+2

Potrebbe essere fuorviante affermare che la scrittura è più complessa perché il processore deve interrompere la memoria principale dal rispondere alla richiesta di lettura. È più difficile che la cache tenga traccia di quali dati sono dati (non allineati con la memoria principale) e cosa no usando "bit sporchi", quindi è possibile non controllare affatto la memoria principale. – steviejay