CPU cache: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Zorro55 (discussione | contributi)
Correzioni SOS ... (148) Alcuni processori ...
Zorro55 (discussione | contributi)
Correzioni SOS ... come quelli recenti della famiglia SPARC ...
Riga 148:
Alcuni processori, come quelli recenti della famiglia SPARC, utilizzano cache che combinano sia etichette virtuali sia etichette fisiche. In questo tipo di cache, le etichette virtuali sono impiegate per selezionare il modo (ossia la linea o il blocco da verificare), mentre le etichette fisiche servono a determinare se l’accesso è un successo (cache hit) o un fallimento (cache miss). Questa soluzione unisce il vantaggio di una bassa latenza tipica delle cache con etichette virtuali alla semplicità di gestione del software garantita dalle cache con etichette fisiche. Tuttavia, comporta un costo maggiore dovuto alla necessità di mantenere etichette duplicate.Durante i casi di fallimento della cache, i modi alternativi della linea devono essere controllati per eventuali alias virtuali e, se necessario, le corrispondenze errate devono essere eliminate per mantenere la coerenza.
 
L'areaL’area extradi memoria aggiuntiva (e qualchela relativa latenza) puòassociata essereall’uso mitigatadi mantenendoetichette ''virtualvirtuali hints''può conessere ognimitigata informazioneimpiegando delladei cachevirtual hints invece che condelle etichette virtuali complete. Questi hints sonorappresentano un sottoinsieme, o un hash, di un'etichettadell’etichetta virtuale, e vengono utilizzati per selezionare il modo della cache tramiteda cui prelevareleggere uni datodati e un'la relativa etichetta fisica. ConIn una cache virtuallycon taggedetichette virtuali, cipuò potrebbe essereverificarsi una corrispondenza ditra virtual hinthints ma una non corrispondenzatra dietichette etichetta fisica,fisiche: in questotal caso, la informazionel’informazione nella cache conassociata laall’hint corrispondenza dell'hintcoincidente deve essere rimossa, cosicchéaffinché gli accessi allasuccessivi cacheallo dopo il riempimento della cache in questostesso indirizzo avranno solamentetrovino una sola corrispondenza di hint. SiccomePoiché glii hintvirtual hannohints minoricontengono meno bit dellerispetto alle etichette virtuali distinguerlicomplete, distinguono meno efficacemente gli indirizzi. unoDi dall'altroconseguenza, una cache conbasata hintsu virtualivirtual soffrehints ditende a soffrire più mancanzefrequentemente di mancanze dovute a conflitti di(conflict misses) rispetto a una cache acon etichette virtuali complete.
 
ForseUn laesempio riduzione finaleestremo di hintriduzione virtualidei puòvirtual esserehints trovatasi nelosserva nei processori Pentium 4 (core Willamette ande Northwood cores). In questi processorimodelli, l'hintl’hint virtuale è effettivamenteridotto dia soli 2 bit, ementre la cache è organizzata come una 4-way set associative. InIl effetti,processore l'hardware mantieneimplementa una semplice permutazione datra gli indirizzi virtuali ae gli indirizzi didella cache, cosicchétale nessunda CAMrendere siasuperfluo necessariol’uso di un Content-Addressable Memory (CAM) per selezionare quelloil giustomodo deicorretto quattroda modicui direcuperare i dati. Questo approccio consente una selezione rapida del blocco in cache, pur mantenendo i vantaggi recuperodell’associatività.
 
=== Page coloring ===
 
Cache indicizzate fisicamente larghe (solitamente cache secondarie) riscontrano un problema: il sistema operativo piuttosto che le applicazioni controlla quali pagine collidono vicendevolmente nella cache. Differenze nell'allocazione delle pagine da un programma portano al prossimo livello di differenze nei percorsi di collisione della cache, i quali possono portare a differenze molto larghe nelle prestazioni dei programmi. Queste differenze possono far diventare molto difficile ottenere un consistente e ripetibile tempo di benchmark per i programmi in esecuzione, che porta ingegneri pagati e sconsolati a richiedere che gli autori del sistema operativo risolvano il problema.