Stack cache: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m WPCleaner v2.01 - Fixed using Wikipedia:Check Wikipedia (References ripetuto - Wikilink scritto come un link esterno)
LauBot (discussione | contributi)
m Bot: passaggio degli url da HTTP a HTTPS
Riga 5:
Per velocizzare le operazioni Call/Return (chiamata e ritorno), alcuni processori fanno uso dei [[Register window|Register windows]] ([[sPARC]]<ref>Understanding stacks and registers in the Sparc architecture(s) - {{collegamento interrotto|http://icps.u-strasbg.fr/people/loechner/public_html/enseignement/SPARC/sparcstack.html.pdf|date=marzo 2018|bot=InternetArchiveBot}}</ref><ref>The SPARC Architecture - Jingke Li - http://web.cecs.pdx.edu/~herb/cs322s10/Sparc_Architecture.pdf</ref><ref>The SPARC Architecture Manual Version 8 - http://www.gaisler.com/doc/sparcv8.pdf - http://web.cecs.pdx.edu/~herb/cs322s10/Sparc_Architecture.pdf - http://web.cecs.pdx.edu/~herb/cs322s10/Sparc_Architecture.pdf</ref>, [[AMD 29000]], e [[Intel i960]]). In questi sistemi un set di registri (windows) sono riservati per ciascuna Call (da 2 a 32 windows). In questi sistemi non è quindi necessario alcun salvataggio, perciò le operazioni di Call e Return sono molto veloci, cambia solo la selezione del gruppo di registri.
[[File:Stack.svg|destra|miniatura|Stack]]
Una soluzione alternativa è la Stack Cache<ref>Stack data cache having a stack management hardware with internal and external stack pointers and buffers for handling underflow and overflow stack - httphttps://www.google.com/patents/US5107457</ref><ref name="Stack Cache">Understanding stacks and registers in the Sparc architecture(s) - Implementing a Stack Cache - AMD architecture - http://www.owlnet.rice.edu/~elec525/projects/SCreport.pdf</ref><ref>Register Allocation for Free: The C Machine Stack Cache - Massachusetts Institute of Technology - {{collegamento interrotto|http://cm.bell-labs.com/cm/cs/cstr/138b.pdf|date=marzo 2018|bot=InternetArchiveBot}}</ref><ref>Stack Cache for Block-Structured Programs - httphttps://comjnl.oxfordjournals.org/content/37/7/610.full.pdf</ref><ref>The Mechanization of a Push-down Stack" - C. B. Carlson (AFIPS Conf. Proc., V. 24, 1963)</ref><ref>Strategies for Managing the Register file in RISC" - Tamir and C. H. Sequin (IEEE Transection on Computers, Vol. C-32, No. 11, November 1983)</ref> in quanto la cache dati soffre in genere di un limitato hit rate (nel range di 80-90 % per le applicazioni business<ref name="SMP analysis">Architecture Analysis of Tightly Coupled Multiprocessor Systems - F. Zulian Honeywell (Bull Italia 1987)</ref>) causato da accessi casuali e da dati non omogenei. Un incremento significativo di prestazioni può essere ottenuto usando cache separate per dati normali e dati di stack. La stack cache (S-Cache) è usata per mantenere i dati di stack separati dai dati della cache dati (D-cache) L1 che è acceduta in modo univoco con uno stile tipo-stack. Grazie alle caratteristiche seriali dei dati di stack, una cache stack può essere indirizzata come un ''"[[buffer]]"'' (polmone—memoria tampone) continuo di memoria, il che significa che può essere implementata come una cache direct-mapped.
La stack cache previene che i dati di stack siano rimpiazzati dai dati normali. In questo modo l'hit-rate della stack cache può essere vicino al 100%<ref name="Stack Cache" /><ref name=":0">Implementing a Stack Cache - http://www.owlnet.rice.edu/~elec525/projects/SCpresentation.pdf</ref>. Un'ottimizzazione può essere ottenuta usando una cache L1 Set Associative e riservando uno dei set della cache per i dati di stack ([[Memoria cache#en:Honeywell|Honeywell]] [[Memoria cache#en:Groupe Bull|Bull]] Systems<ref name="Pseudo virtual add.">Cache memory having pseudo virtual addressing - Honeywell Bull Italia - https://www.google.com/patents/US5165028</ref>). Questo set non viene riservato esclusivamente per questi dati, ma l'area variabile libera sopra lo stack pointer, non usata dai dati di stack, può essere usata per i dati normali. Questo significa che questo Set è usato per i dati normali nel consueto modo ma con la sola restrizione che i dati normali non possono rimpiazzare i dati di stack.