Stack cache: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Recupero di 3 fonte/i e segnalazione di 0 link interrotto/i.) #IABot (v2.0.1
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 [["''Stack]]''". Uno ''[[Pila (informatica)|stack]]'' è sempre una lista impilata (informazioni messe come in una pila, una sopra l'altra), significa che una nuova richiesta entrante manda giù quella precedente rispetto al Puntatore di stack (''Stack Pointer''). In realtà la lista è fissa e è il puntatore di stack che si muove, in su nelle operazioni di salvataggio, in giù nelle operazioni di recupero. Un altro modo per vedere uno stack è che il programma prende sempre il prossimo elemento da operare dalla cima dello stack (LIFO Last in - First out - primo ad entrare primo ad uscire). Il termine stack è mutuato dal nome dei contenitori verticali (pile) dei piatti usati all'inizio del XX secolo nei vecchi ristoranti londinesi, con una molla nel fondo cosicché era il fondo che si abbassava o alzava, mettendo o togliendo i piatti, mentre l'ultimo piatto era sempre in cima fisso.
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 {{Webarchive|url=https://web.archive.org/web/20141204215129/http://web.cecs.pdx.edu/~herb/cs322s10/Sparc_Architecture.pdf |date=4 dicembre 2014 }}</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 {{Webarchive|url=https://web.archive.org/web/20141204215129/http://web.cecs.pdx.edu/~herb/cs322s10/Sparc_Architecture.pdf |date=4 dicembre 2014 }} - http://web.cecs.pdx.edu/~herb/cs322s10/Sparc_Architecture.pdf {{Webarchive|url=https://web.archive.org/web/20141204215129/http://web.cecs.pdx.edu/~herb/cs322s10/Sparc_Architecture.pdf |date=4 dicembre 2014 }}</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]]