Brevet FR3072799A1 (20190426)

REVENDICATIONS1. Processeur comprenant : un pipeline d'exécution comprenant une unité d'exécution pour exécuter des instructions de code machine, chacune étant une instance d'un ensemble prédéfini de types d'instructions dans un jeu d'instructions du processeur, chaque type d'instruction du jeu d'instructions étant défini par un code opération correspondant et par zéro ou plus champs d'opérandes pour prendre zéro ou plus opérandes ; de multiples ensembles de registres de contexte ; un ordonnanceur agencé pour contrôler le pipeline d'exécution pour fournir une séquence répétitive de créneaux temporels entrelacés temporellement, permettant par cela à au moins un fil de travail respectif d'être alloué pour exécution dans chaque créneau respectif de certains ou de la totalité des créneaux temporels, dans lequel un état de programme du fil du travail respectif en cours d'exécution dans chaque créneau temporel est maintenu dans l'un respectif des ensembles de registres de contexte ; et un registre d'état de sortie agencé pour mémoriser un état de sortie agrégé des fils de travail ; dans lequel le jeu d'instructions comprend une instruction de sortie destinée à être incluse dans chacun des fils de travail, l'instruction de sortie prenant au moins un état de sortie individuel du fil respectif comme opérande ; et dans lequel l'unité d'exécution comprend de la logique matérielle dédiée agencée de manière à, en réponse au code opération de l'instruction de sortie, mettre fin à l'exécution du fil de travail respectif dans son créneau temporel respectif, et aussi pour amener l'état de sortie 71 B17780 FR - 408528FR individuel spécifié dans l'opérande à contribuer à l'état de sortie agrégé dans le registre d'état de sortie.\n<CLM>\1\tProcesseur selon la revendication 1, dans lequel l'instruction de sortie comprend un seul champ d'opérande prenant un seul opérande sous la forme de l'état de sortie individuel.\n<CLM>\1\tProcesseur selon la revendication 1 ou 2, dans lequel chacun des états de sortie individuels et des états de sortie agrégés est seulement un bit.\n<CLM>\1\tProcesseur selon la revendication 3, dans lequel l'agrégation est constituée d'un ET booléen des états de sortie individuels, ou d'un OU booléen des états de sortie individuels.\n<CLM>\1\tProcesseur selon la revendication 1 ou 2, dans lequel l'état de sortie agrégé comprend au moins deux bits représentant une valeur trinaire, indiquant si les états de sortie binaires individuels sont tous à 1, tous à 0 ou mélangés.\n<CLM>\1\tProcesseur selon l'une quelconque des revendications précédentes, agencé en outre, dans un ou plusieurs des créneaux temporels, pendant au moins certaines répétitions de ladite séquence de créneaux temporels, pour exécuter un fil superviseur qui alloue les fils de travail aux créneaux d'exécution respectifs.\n<CLM>\1\tProcesseur selon la revendication 6, dans lequel les multiples ensembles de registres de contexte comprennent de multiples ensembles de registres de contexte de travail, chaque ensemble de registres de contexte de travail étant agencé pour maintenir l'état du programme du fil de travail respectif en cours d'exécution dans le créneau temporel respectif lors de l'exécution du fil de travail respectif, 72 B17780 FR - 408528FR et un ensemble de registres de contexte de superviseur additionnel comprenant des registres additionnels agencés pour mémoriser un état de programme du fil superviseur.\n<CLM>\1\tProcesseur selon la revendication 6 ou 7, dans lequel le fil superviseur commence à s'exécuter dans chacun de la pluralité de créneaux temporels, puis abandonne certains ou la totalité des créneaux temporels aux fils de travail respectifs ; et dans lequel l'instruction de sortie amène le fil superviseur a reprendre son exécution dans le créneau temporel respectif du fil de travail qui a exécuté l'instruction de sortie.\n<CLM>\1\tProcesseur selon la revendication 8, dans lequel le jeu d'instructions comprend en outre une instruction d'abandon et l'étage d'exécution est agencé pour réaliser l'abandon du créneau d'exécution respectif en réponse au code opération de l'instruction d'abandon exécutée par le fil superviseur dans le créneau temporel respectif qui est abandonné.\n<CLM>\1\tProcesseur selon l'une quelconque des revendications précédentes, dans lequel le processeur comprend un groupe de pavés dont chacun comprend une instance de l'étage d'exécution, des contextes multiples, de l'ordonnanceur et du registre d'état de sortie ; et dans lequel le processeur comprend en outre une interconnexion pour communiquer entre les pavés.\n<CLM>\1\tProcesseur selon la revendication 10, dans lequel l'interconnexion comprend de la logique matérielle dédiée agencée pour agréger automatiquement les états de sortie agrégés provenant du groupe de pavés en un agrégat global, et pour rendre disponible l'agrégat global à au moins l'un des fils sur chacun des pavés. 73 B17780 FR - 408528FR\n<CLM>\1\tProcesseur selon la revendication 11 et l'une quelconque des revendications 6 à 9, dans lequel ledit au moins un fil comprend le fil superviseur.\n<CLM>\1\tProcesseur selon la revendication 11 ou 12, dans lequel chacun des pavés comprend en outre un registre d'agrégat global agencé pour être lisible par ledit au moins un fil sur ce pavé ; et dans lequel la logique se trouvant dans l'interconnexion est agencée pour rendre automatiquement l'agrégat global disponible pour ledit au moins un fil sur chaque pavé en mémorisant automatiquement l'agrégat global dans le registre d'agrégat global sur chaque pavé.\n<CLM>\1\tProcesseur selon l'une quelconque des revendications 10 à 13, dans lequel l'interconnexion comprend un contrôleur de synchronisation actionnable pour appliquer un processus d'échange parallèle synchrone massif aux communications entre pavés, d'où il résulte que lorsque chacun des pavés est programmé pour réaliser une phase d'échange inter-pavé et une phase de calcul sur les pavés alors soit a) la phase d'échange est retenue jusqu'à ce que tous les fils de travail sur tous les pavés du groupe aient achevé la phase de calcul, soit b) la phase de calcul est retenue jusqu'à ce que tous les pavés du groupe aient achevé la phase d'échange.\n<CLM>\1\tProcesseur selon la revendication 14, dans lequel : le jeu d'instructions comprend en outre une instruction de synchronisation à barrière à inclure dans l'un des fils dans chacun des pavés à la suite de (a) la phase de calcul ou (b) la phase d'échange, respectivement ; sur chacun des pavés, l'étage d'exécution est agencé pour, à l'exécution de l'instruction de synchronisation à barrière, envoyer une demande de synchronisation au 74 B17780 FR - 408528FR contrôleur de synchronisation dans l'interconnexion ; et le contrôleur de synchronisation est agencé pour renvoyer un signal d'accusé de réception de synchronisation à chacun des pavés en réponse à la réception d'une instance du signal de demande de synchronisation à partir de tous les pavés, le signal d'accusé de réception de synchronisation libérant la prochaine (a) phase d'échange ou (b) phase de calcul, en conséquence.\n<CLM>\1\tProcesseur selon la revendication 14 ou 15, et l'une quelconque des revendications 6 à 9, dans lequel la phase d'échange est agencée pour être réalisée par le fil superviseur.\n<CLM>\1\tProcesseur selon l'une quelconque des revendications précédentes, programmé pour réaliser un algorithme d'intelligence artificielle dans lequel chaque noeud d'un graphe comporte une ou plusieurs arêtes d'entrée respectives et une ou plusieurs arêtes de sortie respectives, les arêtes d'entrée d'au moins certains des noeuds étant les arêtes de sortie d'au moins certains autres des noeuds, chaque noeud comprenant une fonction respective reliant ses arêtes de sortie à ses arêtes d'entrée, chaque fonction respective étant paramétrée par un ou plusieurs paramètres respectifs, et chacun des paramètres respectifs ayant une erreur associée, de sorte que le graphe converge vers une solution lorsque les erreurs dans certains ou la totalité des paramètres se réduisent ; dans lequel chacun des fils travail modélise l'un respectif des noeuds du graphe, et chacun des états de sortie individuels est utilisé pour indiquer si les erreurs dans lesdits un ou plusieurs paramètres du noeud respectif ont satisfait une condition prédéterminée. 75 B17780 FR - 408528FR\n<CLM>\1\tProcédé d'actionnement d'un processeur comprenant un pipeline d'exécution et de multiples ensembles de registres de contexte, le pipeline d'exécution comprenant une unité d'exécution pour exécuter des instructions de code machine, chacune étant une instance d'un ensemble prédéfini de types d'instructions dans un jeu d'instructions du processeur, chaque type d'instruction dans le jeu d'instructions étant défini par un code opération correspondant et par zéro ou plus champs d'opérandes pour prendre zéro ou plus opérandes ; dans lequel le procédé comprend : ordonnancer le pipeline d'exécution pour obtenir une séquence répétitive de créneaux temporels entrelacés temporellement, permettant ainsi à au moins un fil de travail respectif d'être alloué pour exécution dans chaque créneau respectif de certains ou de la totalité des créneaux temporels, dans lequel un état de programme du fil de travail respectif en cours d'exécution dans chaque créneau est maintenu dans l'un respectif des ensembles de registres de contexte ; et maintenir au moins temporairement un état de sortie agrégé des fils de travail dans un registre d'état de sortie du processeur ; dans lequel le leu d'instructions comprend une instruction de sortie qui est incluse dans chacun des fils de travail, l'instruction de sortie prenant au moins un état de sortie individuel du fil de travail respectif comme opérande ; et le procédé comprend, en réponse au code opération de l'instruction de sortie en exécution, le déclenchement de logique matérielle dédiée du processeur pour mettre fin à l'exécution du fil de travail respectif dans son créneau temporel respectif, et pour amener l'état de sortie individuel spécifié dans l'opérande à contribuer à l'état de sortie agrégé dans le registre d'état de sortie. 76 B17780 FR - 408528FR\n<CLM>\1\tProduit programme informatique incorporé sur un stockage lisible par un ordinateur et comprenant du code agencé pour s'exécuter sur le processeur de l'une quelconque des revendications 1 à 17, le code comprenant les fils de travail comprenant l'instruction de sortie dans chaque fil de travail.