A. Jerraya and W. Wolf, Multiprocessor systems-on-chips, 2004.
URL : https://hal.archives-ouvertes.fr/hal-00012749

W. Wolf, The future of multiprocessor systems-on-chips, Proceedings of the 41st annual conference on Design automation , DAC '04, pp.681-685, 2004.
DOI : 10.1145/996566.996753

J. Archibald and J. Baer, Cache coherence protocols: evaluation using a multiprocessor simulation model, ACM Transactions on Computer Systems, vol.4, issue.4, pp.273-298, 1986.
DOI : 10.1145/6513.6514

L. John, . Hennessy, A. David, and . Patterson, Computer architecture : a quantitative approach, 2011.

V. Sarita, . Adve, S. Vikram, . Adve, D. Mark et al., Comparison of hardware and software cache coherence schemes, 1991.

J. Daniel, . Sorin, D. Mark, . Hill, A. David et al., A primer on memory consistency and cache coherence, Synthesis Lectures on Computer Architecture, vol.6, issue.3, pp.1-212, 2011.

P. Norman and . Jouppi, Cache write policies and performance, In ACM SIGARCH Computer Architecture News, vol.21, pp.191-201, 1993.

A. Matthias, K. Blumrich, R. Li, C. Alpert, . Dubnicki et al., Virtual memory mapped network interface for the SHRIMP multicomputer, 1994.

J. Patricia and . Teller, Translation-lookaside buffer consistency, Computer, vol.23, issue.6, pp.26-36, 1990.

A. Ghassan, Conception d'un système d'exploitation pour une architecture many-cores à mémoire partagée cohérente de type cc-NUMA, p.2014

E. Guthmuller, Architecture adaptative de mémoire cache exploitant les techniques d'empilement tridimensionnel dans le contexte des multiprocesseurs intégrés sur puce, p.2013

G. Yang, Contrôleur de cache générique pour une architecture manycores massivement parallèle à mémoire partagée cohérente, 2011.

O. Celebican, T. Simunic-rosing, V. J. Mooney, and I. , Energy estimation of peripheral devices in embedded systems, Proceedins of the 14th ACM Great Lakes symposium on VLSI , GLSVLSI '04, pp.430-435, 2004.
DOI : 10.1145/988952.989055

L. Peh, Scorpio : a 36-core research chip demonstrating snoopy coherence on a scalable mesh noc with in-network ordering, Computer Architecture (ISCA) 2014 ACM/IEEE 41st International Symposium on, pp.25-36

S. Mark, . Papamarcos, H. Janak, and . Patel, A low-overhead coherence solution for multiprocessors with private cache memories, ACM SIGARCH Computer Architecture News, vol.12, issue.3, pp.348-354, 1984.

P. Conway, N. Kalyanasundharam, G. Donley, K. Lepak, and B. Hughes, Cache Hierarchy and Memory Subsystem of the AMD Opteron Processor, IEEE Micro, vol.30, issue.2, pp.16-29, 2010.
DOI : 10.1109/MM.2010.31

R. Sabela, T. Garea, and . Hoefler, Modelling communications in cache coherent systems, 2013.

G. Kurian, E. Jason, J. Miller, J. Psota, J. Eastep et al., ATAC, Proceedings of the 19th international conference on Parallel architectures and compilation techniques, PACT '10, pp.477-488, 2010.
DOI : 10.1145/1854273.1854332

C. Ranger, R. Raghuraman, A. Penmetsa, G. Bradski, and C. Kozyrakis, Evaluating MapReduce for Multi-core and Multiprocessor Systems, 2007 IEEE 13th International Symposium on High Performance Computer Architecture, pp.13-24, 2007.
DOI : 10.1109/HPCA.2007.346181

M. Steven-cameron-woo, E. Ohara, . Torrie, A. Singh, and . Gupta, The splash-2 programs : Characterization and methodological considerations, In ACM SIGARCH Computer Architecture News, vol.23, pp.24-36, 1995.

H. David and . Bailey, Ffts in external of hierarchical memory, Proceedings of the 1989 ACM/IEEE conference on Supercomputing, pp.234-242, 1989.

. Steven-cameron-woo, . Singh, L. John, and . Hennessy, The performance advantages of integrating block data transfer in cache-coherent multiprocessors, 1994.

E. Guy, . Blelloch, E. Charles, . Leiserson, M. Bruce et al., A comparison of sorting algorithms for the connection machine cm-2, Proceedings of the third annual ACM symposium on Parallel algorithms and architectures, pp.3-16, 1991.

. Steven-cameron-woo, . Singh, L. John, and . Hennessy, The performance advantages of integrating message passing in cache-coherent multiprocessors, 1995.

R. Le-protocole and D. Est-implémenté-À-base-du-protocole, Deux composant, le cache L1 et le cache L2

L. Dans-le-cache, trois automates est modifiée afin d'ajouter un nouvel état de ligne de cache : l'automate READ, l'automate WRITE et l'automate Cleanup

R. Procédure-de-l-'automate, SI la ligne de cache est présente dans le cache L2 : SI le compteur de copies de la ligne de cache est nul : Le compteur de copies est incrémenté. La réponse au Read est envoyée en accompagnant l'état de la ligne, SINON : SI la ligne est en état NC : SI la ligne peut être enregistrée dans la table IVT : Cette ligne de cache est enregistrée dans la table IVT afin que le cache L2 envoie une requête Multicast Invalidate au cache L1. L'automate READ traitera la commande suivante. SINON : Le traitement de la requête est retardé

. Le-traitement-de-la-requête-est-retardé, SINON : SI la table TRT n'est pas pleine

. Procédure, SI la ligne de cache est présente dans le cache L2 : SI le compteur de copies est non nul : SI la ligne de cache est en état NC : SI la ligne peut être enregistrée dans la table IVT : Cette ligne de cache et enregistrée

C. Procédure-de-l-'automate, SI la ligne de cache est présente dans le cache L2 : SI la ligne est en état NC : SI la requête est Cleanup-data : La

S. Le and . De-demandeur-est-enregistré, L'enregistrement de l'invalidation est effacé. La réponse à cette lecture est envoyée avec l'état C

S. Le-changement-d, état fait suite à une requête d'écriture : Le compteur de copies est mis à 0. Le changement d'état est terminé. L'enregistrement de l'invalidation est effacé

. Le-compteur-de-copies-est-décrémenté, L'entrée dans la liste chaînée correspondant au SRCID pour le même type de ligne (instruction ou donnée) est remise dans la liste des éléments libres

H. Le-protocole and R. Est-implémenté-sur-la-base-du-protocole, Deux composants , le cache L1 et le cache L2, sont modifiés. Un état supplémentaire est introduit dans le composant cache L1, et les automates du cache L1 ne sont que légèrement modifiés par

L. Procédure-de and . Read, SI la ligne de cache est présente dans le cache L2 : SI la requête est un Read : SI le compteur de la ligne est nul : Le compteur est incrémenté, La réponse au Read est envoyée avec l'état de la ligne actuelle

S. Si-la-ligne-est-dans-l-'état and E. , SI cette ligne peut être enregistrée dans la table IVT : Cette ligne de cache est enregistrée dans la table IVT afin que le cache L2 envoie une requête CC-UPDT au cache L1. La ligne passe dans l'état LOCKED. L'automate READ traitera la commande suivante, SINON : Le traitement de la requête est retardé

L. Procédure-de, SI la ligne de cache est présente dans le cache L2 : SI le compteur de la ligne est nul : La ligne de cache est mise à jour. La ligne de cache est marquée Dirty. La réponse d'écriture est envoyée. SINON : SI la ligne de cache est en état LOCKED : Le traitement de la requête est retardé, SINON : SI la ligne de cache peut être enregistrée dans la Table IVT : La ligne de cache est enregistrée dans la Table IVT. SI la ligne de cache est dans l'état SHARED : La ligne est mise à jour

. Sinon, La valeur à écrire est stockée à côté afin de mettre à jour la ligne lorsque le cache L2

. Traitement-de-la-requête-suivante, SINON : SI la table TRT n'est pas pleine : Une requête de lecture vers la mémoire externe est enregistrée dans la table TRT

L. Procédure-de, SI la ligne de cache est présente dans le cache L2 : SI la ligne de cache est dans l'état LOCKED : La table IVT est accédée pour obtenir la requête en cours sur cette ligne de cache. SI à cette ligne correspond une requête Read : SI la requête Multi ack-miss correspondant à cette ligne n'est pas traitée par l'automate MULTI_ACK

L. Réponse-clack-est-envoyée, SINON : SI le type de requête est Cleanup-data : La valeur de cette ligne est mise à jour

S. Si-À-cette-ligne-de-cache-correspond-une-requête-getm, Le compteur dans la table IVT est décrémenté. SI le compteur d'invalidation devient nul : SI le type de requête est Cleanup-data

L. Réponse-clack-est-envoyée, SINON : La réponse Clack est envoyée

S. Si-la, ligne de cache est dans l'état EXCLUSIVE : SI le type de requête est Cleanup-data : La valeur de cette ligne est mise à jour

. Le-compteur-de-la-ligne, La réponse Clack est envoyée SINON (état SHARED) : SI la ligne est en mode compteur : Le compteur de copies est décrémenté. La réponse Clack est envoyée, SINON : Le compteur de copies est décrémenté. L'entrée dans la liste chaînée correspondant au SRCID pour le même type de ligne

L. Procédure-de, La table IVT est accédée. SI le type de requête est Multi ack-miss : SI la requête Cleanup a été traitée par l'automate CLEANUP

S. Le, . Du-demandeur-est-enregistré.-l-'enregistrement-de-la-ligne-dans-la-table-ivt-est-effacé, . La-requête, and . Au-read-est-envoyée, SINON : L'entrée de la table IVT correspondant à cette ligne est mise à jour afin que l'automate CLEANUP réponde à la requête Read

S. Le and . Demandeur-est-enregistré-dans-la-liste-chaînée, L'enregistrement de la ligne dans la table IVT est effacé