Stack cache (S-Cache) è una memoria cache usata per mantenere i dati di stack separati dai dati della cache dati. 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%[1][2].

Caratteristiche

modifica

Nel processore che esegue le istruzioni ci sono delle piccole memorie molto veloci chiamate registri, gestiti dal software, per memorizzare dati temporanei. In un software strutturato, è frequente l'uso di routine software chiamate 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" (procedure call), è necessario salvare questi registri e i parametri (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 segmento di processo. Questa area è chiamata "Stack". Uno 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 ed è 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 windows (sPARC[3][4][5], 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.

Stack

Una soluzione alternativa è la Stack Cache[6][1][7][8][9][10] in quanto la cache dati soffre in genere di un limitato hit rate (nel range di 80-90 % per le applicazioni business[11]) 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%[1][2]. Un'ottimizzazione può essere ottenuta usando una cache L1 Set Associative e riservando uno dei set della cache per i dati di stack (Honeywell Bull Systems[12]). 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.

Note

modifica
  1. ^ a b c Understanding stacks and registers in the Sparc architecture(s) - Implementing a Stack Cache - AMD architecture - http://www.owlnet.rice.edu/~elec525/projects/SCreport.pdf
  2. ^ a b Implementing a Stack Cache - http://www.owlnet.rice.edu/~elec525/projects/SCpresentation.pdf
  3. ^ Understanding stacks and registers in the Sparc architecture(s) - http://icps.u-strasbg.fr/people/loechner/public_html/enseignement/SPARC/sparcstack.html.pdf[collegamento interrotto]
  4. ^ The SPARC Architecture - Jingke Li - http://web.cecs.pdx.edu/~herb/cs322s10/Sparc_Architecture.pdf Archiviato il 4 dicembre 2014 in Internet Archive.
  5. ^ The SPARC Architecture Manual Version 8 - http://www.gaisler.com/doc/sparcv8.pdf - http://web.cecs.pdx.edu/~herb/cs322s10/Sparc_Architecture.pdf Archiviato il 4 dicembre 2014 in Internet Archive. - http://web.cecs.pdx.edu/~herb/cs322s10/Sparc_Architecture.pdf Archiviato il 4 dicembre 2014 in Internet Archive.
  6. ^ 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
  7. ^ Register Allocation for Free: The C Machine Stack Cache - Massachusetts Institute of Technology - http://cm.bell-labs.com/cm/cs/cstr/138b.pdf[collegamento interrotto]
  8. ^ Stack Cache for Block-Structured Programs - https://comjnl.oxfordjournals.org/content/37/7/610.full.pdf
  9. ^ The Mechanization of a Push-down Stack" - C. B. Carlson (AFIPS Conf. Proc., V. 24, 1963)
  10. ^ Strategies for Managing the Register file in RISC" - Tamir and C. H. Sequin (IEEE Transection on Computers, Vol. C-32, No. 11, November 1983)
  11. ^ Architecture Analysis of Tightly Coupled Multiprocessor Systems - F. Zulian Honeywell (Bull Italia 1987)
  12. ^ Cache memory having pseudo virtual addressing - Honeywell Bull Italia - https://www.google.com/patents/US5165028
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica

📚 Artikel Terkait di Wikipedia

Stack

seguono una modalità LIFO Stack cache – memoria cache usata per mantenere i dati di stack separati dai dati della cache dati Allen Stack (1928-1999) – nuotatore

Memoria cache

pagina. Separatamente per le Istruzioni e per i Dati e i dati di Stack (se la cache Stack è usata), la probabilità che il successivo accesso sia fatto nella

Trusted Platform Module

Software Stack ^ https://trustedcomputinggroup.org/resource/tcg-software-stack-specification-tss-1-2-faq/ (EN) FAQ sul Trusted Software Stack versione

INMOS Transputer

Per aumentare ancora la velocità il T9000 spostava in cache le prime 32 locazioni dello stack, al contrario delle tre delle versioni precedenti. Il T9000

RAM scratchpad

elevata. Può essere considerata simile alla cache di un processore con la differenza che mentre la cache è invisibile al programmatore la scatchpad è

Spoofing

(MITM) attraverso tecniche ARP Spoofing, ARP Cache Poisoning, ARP Poison Routing (APR). Questo livello dello stack TCP/IP coincide con il livello di rete (3)

Basic access authentication

Is there a browser equivalent to IE's ClearAuthenticationCache?, su stackoverflow.com, StackOverflow. URL consultato il 15 marzo 2013. ^ IDM_CLEARAUTHENTICATIONCACHE

CPU

registri (RISC) e stack di registri (Transputer e simili). Stack di registri: i registri sono organizzati in una struttura a stack (pila); questa architettura