Brevet FR3048526A1 (20170908)
REVENDICATIONS1. Processeur multi-coeurs comprenant : - une mémoire cache (L2 CACHE) partagée par un groupe de plusieurs coeurs (CPUa, CPUb) configurés pour déléguer les instructions atomiques à la mémoire cache ; - un gestionnaire de mémoire cache (CTRL) configuré pour recevoir et traiter chaque instruction atomique exécutée par un coeur du groupe ; caractérisé en ce qu'il comprend dans son jeu d'instructions une instruction atomique de lecture-modification-écriture en-cache (AFA) prenant comme paramètre une adresse d'une variable stockée dans une mémoire système (MEM), le gestionnaire de mémoire cache étant configuré pour recevoir chaque instruction atomique en-cache et la traiter par : - la réalisation des opérations de lecture (LD) et écriture (ST) de l'instruction atomique dans un mode en-cache, provoquant un accès à une ligne de la mémoire cache attribuée à l'adresse (al) de la variable ; et - le verrouillage de la ligne de cache sans interdire l'accès à la variable dans la mémoire système, jusqu'à la mise à jour de la variable dans la ligne de cache.\n<CLM>\1\tProcesseur selon la revendication 1, dans lequel le gestionnaire de mémoire cache est configuré pour verrouiller la ligne de cache sans invalider la ligne de cache dans d'autres mémoires cache de même niveau.\n<CLM>\1\tProcesseur selon la revendication 1, dans lequel l'instruction atomique en-cache est une instruction de lecture-et-addition, ayant en outre comme paramètre une valeur d'incrément (i), le gestionnaire de mémoire cache étant configuré pour ajouter l'incrément à la variable.\n<CLM>\1\tProcesseur selon la revendication 1, comprenant : - dans son jeu d'instructions, une instruction atomique de lecture-modification écriture hors-cache (AFAU) prenant comme paramètre une adresse (al) d'une variable stockée dans la mémoire système (MEM) ; 3048526 11 - le gestionnaire de mémoire cache (CTRL) étant configuré en outre pour recevoir chaque instruction atomique hors-cache exécutée par un coeur et la traiter par - la réalisation des opérations de lecture (LDU) et écriture (STU) de 5 l'instruction atomique dans un mode hors-cache, provoquant un accès à la variable dans la mémoire système, et - l'interdiction d'accès à la variable dans la mémoire système jusqu'à la mise à jour de la variable dans la mémoire système.\n<CLM>\1\tProcédé de mise à jour d'une variable partagée entre plusieurs coeurs de processeur, 10 comprenant les étapes suivantes mises en oeuvre à l'exécution dans un des coeurs d'une instruction atomique de lecture-modification-écriture en-cache (AFA) avec comme paramètre l'adresse mémoire (al) de la variable partagée : - réaliser une opération de lecture dans un mode en-cache (LD) à l'adresse mémoire de la variable partagée, d'où il résulte la vérification de validité 15 d'une ligne de cache attribuée à l'adresse mémoire, et que la ligne de cache est mise à jour à partir de la mémoire en cas d'invalidité ; - modifier la variable ; - réaliser une opération d'écriture (ST) de la variable modifiée dans le mode en-cache, d'où il résulte que la variable est écrite dans la ligne de cache et que la 20 ligne de cache est vidée en mémoire ; et - verrouiller la ligne de cache jusqu'à sa mise à jour par l'opération d'écriture.\n<CLM>\1\tProcédé selon la revendication 5, comprenant l'étape suivante : - verrouiller la ligne de cache sans invalider la ligne de cache dans d'autres mémoires cache de même niveau.