• Non ci sono risultati.

Capitolo 6: Conclusioni e sviluppi futuri

A.2 L2 Cache

M: Modified. Il blocco di memoria, memorizzato nel banco della L2Cache, è stato

modificato, per mezzo di un rimpiazzamento (PUTX) della L1Cache, rispetto alla copia che risiede in memoria principale. Tale banco è l'unico della L2Cache ad avere memorizzata la copia del blocco.

E: Exclusive. Il blocco di memoria, memorizzato nel banco della L1Cache, è coerente con

la copia che risiede in memoria principale. Tale banco è l'unico della L2Cache ad avere memorizzata la copia del blocco.

S: Shared. Il blocco di memoria, memorizzato nel banco della L2Cache, è coerente con la

copia che risiede in memoria principale. Tale banco può non essere l'unico della L2Cache ad avere memorizzata la copia del blocco.

MS: Modified to Shared. Il blocco di memoria, memorizzato nel banco della L2Cache, si

trovava nello stato M oppure E ed ha il flag L1Invalid impostato a true. Ha ricevuto un messaggio GETS oppure GET_INSTR, proveniente dalla DirectoryCache, contenente l'identificatore del banco della L2$ richiedente la copia condivisa del blocco di memoria. Ha risposto alla Dir$ con un messaggio PUTS, contenente la copia del blocco, oppure ACCEPTS. Ha inviato la copia del blocco di memoria, per mezzo di un messaggio DATA_SHARED al banco di L2$ richiedente e attende, sempre dalla Dir$, un messaggio WB_ACK per poter transire nello stato S. E' in grado di servire tutte le richieste di tipo GETS oppure GET_INSTR provenienti sia dalla L1$, sia dalla Dir$.

MI: Modified to Invalid. Il blocco di memoria, memorizzato nel banco della L2Cache, si

trovava indifferentemente nello stato M, E, oppure MS con il flag L1Invalid impostato a true. Il banco della L2$ è costretto ad effettuare un rimpiazzamento del blocco, che potrebbe essere stato imposto dall'algoritmo LRU implementato nella L2$ stessa, oppure a causa della ricezione di un messaggio GETX dalla DirectoryCache. Ha già inviato un messaggio PUTX oppure PUTS (contenente la copia del blocco), oppure un messaggio EJECT oppure ACCEPTS verso la Dir$; ed attende, da quest'ultima, un messaggio WB_ACK per poter transire nello stato I. E' in grado di servire tutte le richieste di tipo GETS oppure GET_INSTR provenienti solo dalla Dir$ e non dalla L1$.

IM: Invalid to Modified. Il blocco di memoria, se memorizzato nel banco della L2Cache, si

trovava nello stato S, altrimenti è nello stato I. Avendo ricevuto un messaggio GETX da parte della L1$, ha inviato un messaggio GETX verso la DirectoryCache. Attende di ricevere la copia del blocco in modo esclusivo, oppure in modo condiviso insieme agli acknowledgement di avvenuta invalidazione da parte degli altri banchi della L2$ che condividevano la copia, per poter inviare la copia stessa alla L1$, ed infine transire nello stato M.

IE: Invalid to Exclusive. Il banco della L2Cache si trovava nello stato I. Avendo ricevuto

un messaggio GETS oppure GET_INSTR proveniente dalla L1Cache, ha inviato un messaggio GETS oppure GET_INSTR verso la DirectoryCache ed attende di ricevere la copia del blocco di memoria in modo condiviso oppure in modo esclusivo per poi poter transire nello stato S oppure nello stato E.

MSS: Modified to Shared waiting for L1-Cache Sharing. Il blocco di memoria,

memorizzato nel banco della L2Cache, si trovava nello stato M oppure E ed ha il flag L1Invalid impostato a false. Ha ricevuto un messaggio GETS oppure GET_INSTR, proveniente dalla DirectoryCache, contenente l'identificatore del banco della L2$ richiedente la copia condivisa del blocco di memoria. Ha memorizzato il suddetto identificatore. Ha inoltrato il messaggio ricevuto alla L1Cache e attende da quest'ultima la copia del blocco per poterla inviare ai banchi di L2$ richiedenti ed alla Dir$ per poi impostare il flag L1Invalid a true e transire in MS.

MSI: Modified to Shared waiting for L1-Cache Invalidation. Il blocco di memoria,

memorizzato nel banco della L2Cache, si trovava indifferentemente nello stato M, E, oppure MSS con il flag L1Invalid impostato a false. Il banco della L2$ è costretto ad effettuare un rimpiazzamento del blocco, che potrebbe essere stato imposto dall'algoritmo LRU implementato nella L2$ stessa, oppure a causa della ricezione di un messaggio GETX dalla DirectoryCache che ha prontamente inoltrato alla L1Cache dopo aver memorizzato l'identificatore del banco della L2$ richiedente. Attende dalla L1$ la copia del blocco per poterla inviare ai banchi di L2$ richiedenti ed alla Dir$ per poi impostare il flag L1Invalid a true e transire in MI.

IMS: Invalid to Modified to Shared. Il banco della L2Cache si trovava nello stato IM ed

ha ricevuto un messaggio GETS oppure GET_INTSR da parte della DirectoryCache. Ha memorizzato l'identificatore del banco della L2$ richiedente. Ha inoltrato il messaggio ricevuto alla L1Cache. Attende di ricevere la copia del blocco in modo esclusivo, oppure in modo condiviso insieme agli acknowledgement di avvenuta invalidazione da parte degli altri banchi della L2$ che condividevano la copia, per poterla inviare alla L1$. Dovrà attendere poi che la L1$ rimandi indietro la copia modificata per poterla inoltrare ai banchi di L2$ richiedenti ed alla Dir$, che le risponderà con un WB_ACK, per poter poi transire nello stato S.

IMI: Invalid to Modified to Invalid. Il banco della L2Cache si trovava nello stato IM

oppure IMS ed è costretta ad effettuare un rimpiazzamento del blocco, che potrebbe essere stato imposto dall'algoritmo LRU implementato nella L2$ stessa, oppure a causa della ricezione di un messaggio GETX dalla DirectoryCache che ha prontamente inoltrato alla L1Cache dopo aver memorizzato l'identificatore del banco della L2$ richiedente. Attende di ricevere la copia del blocco in modo esclusivo, oppure in modo condiviso insieme agli acknowledgement di avvenuta invalidazione da parte degli altri banchi della L2$ che condividevano la copia, per poterla inviare alla L1$. Dovrà attendere poi che la L1$ rimandi indietro la copia modificata per poterla inoltrare ai banchi di L2$ richiedenti ed alla Dir$, che le risponderà con un WB_ACK, per poter poi transire nello stato I.

IES: Invalid to Exclusive to Shared. Il banco della L2Cache si trovava nello stato IE ed ha

ricevuto un messaggio GETS oppure GET_INTSR da parte della DirectoryCache. Ha memorizzato l'identificatore del banco della L2$ richiedente. Ha inoltrato il messaggio ricevuto alla L1Cache. Attende la copia del blocco di memoria in modo esclusivo proveniente dalla memoria principale per poterla inviare alla L1$. Invierà poi ACCEPTS alla Dir$. Attenderà che la L1$ le invii un messaggio ACCEPTS oppure EJECT per poter inviare la copia anche ai banchi di L2$ richiedenti, dopo che la Dir$ le avrà risposto con WB_ACK, eppoi infine transire nello stato S.

IEI: Invalid to Exclusive to Invalid. Il banco della L2Cache si trovava nello stato IE

oppure IES ed è costretta ad effettuare un rimpiazzamento del blocco, che potrebbe essere stato imposto dall'algoritmo LRU implementato nella L2$ stessa, oppure a causa della ricezione di un messaggio GETX dalla DirectoryCache che ha prontamente inoltrato alla L1Cache dopo aver memorizzato l'identificatore del banco della L2$ richiedente. Attende la copia del blocco di memoria in modo esclusivo oppure condivido per poterla inviare alla L1$. Invierà poi ACCEPTS alla Dir$. Attenderà che la L1$ le invii un messaggio ACCEPTS oppure EJECT per poter inviare la copia anche ai banchi di L2$ richiedenti, dopo che la Dir$ le avrà risposto con WB_ACK, eppoi infine transire nello stato I.

Documenti correlati