Stack cache: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Bot: passaggio degli url da HTTP a HTTPS |
m →Caratteristiche: |date ----> |data |
||
(2 versioni intermedie di 2 utenti non mostrate) | |||
Riga 2:
== Caratteristiche ==
Nel processore che esegue le istruzioni ci sono delle piccole memorie molto veloci chiamate [[Registro (informatica)|registri]], gestiti dal [[software]], per memorizzare dati temporanei. In un software strutturato, è frequente l'uso di routine software chiamate [[Funzione (informatica)|procedure]] per eseguire specifici task, [[subroutine]] o funzioni. Anche queste procedure possono a loro volta chiamare altre procedure o funzioni. Queste procedure fanno uso di alcuni registri interni in modo indipendente rispetto al programma chiamante. Perciò, prima di fare una "Call" ([[Funzione (informatica)|procedure call]]), è necessario salvare questi registri e i parametri ([[Variabile (informatica)|variabili locali]], return address point - indirizzo del punto di ritorno, ecc.) usati dal programma chiamante, informazioni che saranno ricuperate quando si ritornerà indietro al programma chiamante. Queste informazioni sono memorizzate dal software in memoria in un'area dedicata del [[Segmentazione (memoria)|segmento di processo]]. Questa area è chiamata
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|
[[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 - https://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|
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.
|