Con l'aumentare del livello di integrazione sui chip, i sistemi multiprocessore sono passati dalle implementazioni di sistemi multi-chip a sistemi a singolo chip (Chip Multiprocessor, o CMP).
Per raggiungere prestazioni ottimali tali sistemi necessitano di una comunicazione ad elevata banda e bassa latenza sia tra processore e processore che tra gli stessi e le memorie cache.
Con l'obiettivo di avere sistemi di elaborazione basati su cache condivisa di grande capacità che siano anche in grado di mascherare gli effetti del
ritardo sui fili, che cresce all'aumentare: i) della capacità della cache, in quanto la maggior parte del tempo di risposta di una memoria cache è speso nella propagazione dei segnali sulle linee di comunicazione, e ii) della frequenza di lavoro del processore, in quanto tanto più essa è alta tanti più cicli di stall saranno visti dal processore per ogni accesso alla gerarchia di memoria, sono state proposte architetture di cache non convenzionali, caratterizzate dall'avere un tempo medio di accesso non uniforme (Non-Uniform Cache Access, NUCA).
Una NUCA è una memoria cache il cui spazio di storage è organizzato in sottobanchi indipendenti, accessibili tramite un'infrastruttura di comunicazione scalabile, tipicamente una Network-on-Chip (NoC).
Il tempo di accesso ad una NUCA è funzione della distanza fisica tra il processore richiedente ed il banco che contiene il blocco di cache indirizzato. Grazie alla proprietà di non uniformità del tempo di accesso, ed adottando politiche di gestione dei dati che determinano un piazzamento ottimale dei blocchi all'interno della cache, è possibile ottenere un mascheramento degli effetti negativi che il crescente ritardo sui fili on-chip ha sulle prestazioni totali del sistema processore-memoria.
Le politiche di gestione dei dati possono essere statiche (si parla di S-NUCA) o dinamiche (si parla di D-NUCA). In particolare, nelle S-NUCA i blocchi sono staticamente piazzati su un singolo sottobanco, mentre in una D-NUCA possono essere memorizzati in un insieme di sottobanchi per spostarsi fra essi in funzione delle condizioni dinamiche dell'applicazione che li accede. Schemi più avanzati prevedono la possibilità di introdurre un sistema di replicazione (si parla di Re-NUCA) di determinate categorie di blocchi, in modo da avere più copie indipendenti che si spostano dinamicamente con l'obiettivo di piazzarsi nella posizione più vicina ai richiedenti.
Il presente lavoro di tesi si propone di studiare il trade-off tra una Re-NUCA, che adotta un sistema ottimizzato di replicazione in grado di tenere sotto controllo il miss-rate, ed una configurazione S-NUCA a cache private, che qui chiameremo Private S-NUCA (PS-NUCA), in cui ogni core mantiene una propria copia locale nella cache di ultimo livello. A tale scopo, nel presente lavoro è stata progettata, realizzata e testata l'architettura di gerarchie di memoria PS-NUCA, in cui i banchi di una S-NUCA vengono esplicitamente suddivisi e mappati come privati di ciascun processore.
I risultati sperimentali, ottenuti per via simulativa, vengono analizzati e confrontati con architetture ti tipo S-NUCA, D-NUCA e Re-NUCA, al fine di valutare i comportamenti delle varie configurazioni dal punti di vista delle prestazioni e della scalabilità