Brevet FR3042051A1 (20170407)
REVENDICATIONS1. Procédé d'exécution d'une opération atomique dans un coeur de processeur, comprenant les étapes suivantes : - attribuer un groupe de points de mémorisation à double accès (AMEM) à un groupe d'emplacements dans une mémoire (18) destinés à stocker des variables partagées ; - répartir des instructions de programme dans plusieurs fils d'exécution indépendants (TH) ; - initier l'opération atomique dans un fil courant par l'exécution d'une instruction de chargement-acquisition (AQLD) ayant comme paramètre une adresse mémoire (An) d'une variable partagée, laquelle exécution provoque : - le chargement de la variable partagée contenue à l'adresse mémoire dans un registre (20) du coeur de processeur ; - la sélection d'un point de mémorisation correspondant à l'adresse mémoire ; - la mise à un état actif du point de mémorisation sélectionné et l'observation simultanée de l'état précédent (FL) du point de mémorisation sélectionné ; et - l'annulation de l'opération atomique si l'état précédent du point de mémorisation sélectionné est actif\n<CLM>\1\tProcédé selon la revendication 1, comprenant en outre les étapes suivantes : - à la fin de l'opération atomique, exécuter dans le fil courant une instruction de stockage-libération (STRL) avec comme paramètre la même adresse mémoire (An) que l'instruction de chargement-acquisition, laquelle exécution provoque : - l'écriture du contenu d'un registre du coeur de processeur à l'adresse mémoire ; - la sélection du point de mémorisation correspondant ; et - la mise à un état inactif du point de mémorisation sélectionné. 3042051 11\n<CLM>\1\tProcédé selon la revendication 1, dans lequel l'opération atomique annulée est réitérée ultérieurement.\n<CLM>\1\tProcédé selon la revendication 3, dans lequel le coeur de processeur comprend une unité de traitement d'instructions de type pipeline à plusieurs étages, le procédé 5 comprenant les étapes suivantes : - fournir au pipeline des instructions consécutives de manière que, à tout instant, les instructions contenues dans les étages du pipeline appartiennent à de fils d'exécution différents ; - identifier les instructions à fournir au pipeline par des compteurs de 10 programme (PCa-PCd) respectivement associés aux fils d'exécution ; et - lors de l'annulation d'une opération atomique dans un fil d'exécution courant, omettre la mise à jour du compteur de programme du fil d'exécution courant, d'où il résulte que l'opération atomique est réitérée au cycle d'exécution suivant du fil d'exécution courant. 15\n<CLM>\1\tProcédé selon la revendication 3, comprenant en outre les étapes suivantes : - générer une valeur d'index (IDX) à partir de l'adresse mémoire (An) de la variable partagée ; et - utiliser la valeur d'index pour sélectionner le point de mémorisation.\n<CLM>\1\tCoeur de processeur comprenant dans son jeu d'instructions un couple 20 d'instructions prévues pour définir une opération atomique, la première instruction du couple étant conçue pour lire une variable partagée et activer un point de mémorisation associé à la variable partagée, caractérisé en ce que la première instruction (AQLD) est conçue en outre pour lire l'état initial (FL) du point de mémorisation et annuler l'exécution de l'opération atomique si l'état initial du point 25 de mémorisation est actif\n<CLM>\1\tCoeur de processeur selon la revendication 6, dans lequel la deuxième instruction du couple (STRL) est conçue pour mettre à jour la variable partagée et désactiver le point de mémorisation (FL). 3042051 12\n<CLM>\1\tCoeur de processeur selon la revendication 6, dans lequel la première instruction du couple a comme paramètre l'adresse mémoire (A) de la variable partagée, le coeur comprenant en outre : - un groupe de points de mémorisation à double accès (AMEM) attribué à une 5 plage d'adresses mémoire allouée à des variables partagées ; - un circuit de génération d'index (22) recevant l'adresse mémoire (A), configure pour mapper la plage d'adresses sur le nombre de points de mémorisation, et câblé pour sélectionner le point de mémorisation à utiliser par la première instruction ; et 10 - une unité de traitement (14) configurée pour lire l'état initial et simultanément écrire un état actif dans le point de mémorisation sélectionné.