Brevet FR3048795A1 (20170915)
REVENDICATIONS1. Système sur puce (100) comportant une pluralité de noeuds de calculs (102A, ..., 102P) interconnectés en réseau, dans lequel au moins un noeud de calcul (302 ;\n<CLM>\1\tcomporte : au moins une mémoire (312 ; 412), au moins un processeur (310 ;\n<CLM>\1\tde traitement de données conçu pour lire des données dans une zone de travail (318 ;\n<CLM>\1\tde ladite au moins une mémoire (312 ; 412), traiter des données lues et écrire des données traitées dans la zone de travail (318 ; 418), un contrôleur (314 ;\n<CLM>\1\td'accès direct en mémoire comportant : - un récepteur (322) conçu pour recevoir des données provenant de l'extérieur du noeud de calcul (302) via le réseau et pour les écrire dans une zone de partage (320) de ladite au moins une mémoire (312), ou - un émetteur (422) conçu pour lire des données dans ladite zone de partage (420) et pour les transmettre vers l'extérieur du noeud de calcul (402) via le réseau, et dans lequel il est prévu un mécanisme de requêtes en écriture et lecture entre le contrôleur (314 ;\n<CLM>\1\td'accès direct en mémoire et le processeur (310 ;\n<CLM>\1\tpour engendrer, sur requête du processeur (310 ; 410), un transfert de données, par le contrôleur (314 ;\n<CLM>\1\td'accès direct en mémoire, entre la zone de partage (320 ;\n<CLM>\1\tet la zone de travail (318 ;\n<CLM>\1\tde ladite au moins une mémoire (312 ; 412), caractérisé en ce que le contrôleur (314 ;\n<CLM>\1\td'accès direct en mémoire comporte en outre un dispositif émetteur (326) ou récepteur (426) supplémentaire conçu pour échanger des données entre l'extérieur du noeud de calcul (302 ;\n<CLM>\1\tvia le réseau et la zone de travail (318 ;\n<CLM>\1\tdu processeur (310 ; 410), sans transiter par la zone de partage (320 ; 420).\n<CLM>\1\tSystème sur puce (100) selon la revendication 1, dans lequel le contrôleur (314 ;\n<CLM>\1\td'accès direct en mémoire dudit au moins un noeud de calcul (302 ;\n<CLM>\1\tcomporte : - le récepteur (322) conçu pour recevoir des données provenant de l'extérieur du noeud de calcul (302) via le réseau et pour les écrire dans la zone de partage (320), 3048795 24 - l'émetteur (422) conçu pour lire des données dans ladite zone de partage (420) et pour les transmettre vers l'extérieur du noeud de calcul (402), et un dispositif (326 ;\n<CLM>\1\témetteur et récepteur supplémentaire conçu 5 pour échanger des données entre l'extérieur du noeud de calcul (302 ;\n<CLM>\1\tvia le réseau et la zone de travail (318 ;\n<CLM>\1\tdu processeur (310 ; 410), sans transiter par la zone de partage (320 ; 420).\n<CLM>\1\tSystème sur puce (100) selon la revendication 1 ou 2, dans lequel ladite 10 au moins une mémoire dudit au moins un noeud de calcul (302 ;\n<CLM>\1\tcomporte : - une table de connexion (328 ;\n<CLM>\1\tdéfinie de manière à associer, pour chaque connexion impliquant l'un dudit au moins un processeur (310 ;\n<CLM>\1\tet établie pour échanger des données avec un autre processeur ou bloc matériel de traitement extérieur audit au moins un 15 noeud de calcul (302 ; 402), un identifiant de cette connexion à un identifiant de cet autre processeur ou bloc matériel de traitement extérieur, et - une table de partage (330 ;\n<CLM>\1\tdéfinie de manière à associer chaque identifiant de connexion à une zone de mémoire tampon 20 réservée pour cette connexion dans la zone de partage (320 ; 420).\n<CLM>\1\tSystème sur puce (100) selon la revendication 1 ou 2, dans lequel : les communications entre noeuds de calculs (102A, ..., 102P) sont traitées en flot de données, ladite au moins une mémoire dudit au moins un noeud de calcul 25 (302 ;\n<CLM>\1\tcomporte une table de crédits (334 ;\n<CLM>\1\tdéfinie de manière à associer chaque identifiant de connexion à un compteur de crédits disponibles pour cette connexion, et - le contrôleur d'accès direct en mémoire (314 ;\n<CLM>\1\tdudit au moins un noeud de calcul (302 ;\n<CLM>\1\tcomporte un gestionnaire de crédits 30 (332 ;\n<CLM>\1\tpour la mise à jour du compteur de crédits de chaque connexion en cours en fonction des échanges réalisés pendant cette connexion.\n<CLM>\1\tSystème sur puce (100) selon les revendications 3 et 4, dans lequel le gestionnaire de crédits (332 ;\n<CLM>\1\test conçu pour initialiser chaque compteur de 3048795 25 crédits en fonction de la taille de la zone de mémoire tampon réservée pour chaque connexion.\n<CLM>\1\tSystème sur puce (100) selon l'une quelconque des revendications 1 à 5, dans lequel au moins l'un des éléments suivants dudit au moins noeud de calcul 5 (302 ;\n<CLM>\1\t: le récepteur (322) conçu pour recevoir des données provenant de l'extérieur du noeud de calcul via le réseau et pour les écrire dans la zone de partage, ou l'émetteur (422) conçu pour lire des données dans ladite zone de 10 partage et pour les transmettre vers l'extérieur du noeud de calcul via le réseau, et le dispositif émetteur (326) ou récepteur (426) supplémentaire conçu pour échanger des données entre l'extérieur du noeud de calcul via le réseau et la zone de travail du processeur sans transiter par la zone 15 de partage, est conçu sous la forme d'un bloc matériel formant une machine à états finis.\n<CLM>\1\tSystème sur puce (100) selon l'une quelconque des revendications 1 à 6, dans lequel la zone de travail (318 ;\n<CLM>\1\tde ladite au moins une mémoire (312 ;\n<CLM>\1\tcomporte un registre interne au processeur (310 ; 410). 20\n<CLM>\1\tSystème sur puce (100) selon l'une quelconque des revendications 1 à 7, dans lequel la zone de partage (320 ;\n<CLM>\1\test configurée pour être inaccessible en lecture et écriture par le processeur (310 ; 410).\n<CLM>\1\tProcédé d'échange de données entre un noeud de calcul émetteur (302E ; 402E) et un noeud de calcul récepteur (302R ; 402R) d'un système sur puce (100) 25 comportant une pluralité de noeuds de calculs (102A, ..., 102P) interconnectés en réseau (304 ; 404), au moins l'un des noeuds de calcul émetteur et récepteur comportant : au moins une mémoire, au moins un processeur (310E, 3108 ; 410E, 4108) de traitement de 30 données conçu pour lire des données dans une zone de travail (318E, 3188 ; 418E, 418R) de ladite au moins une mémoire, traiter des données lues et écrire des données traitées dans la zone de travail, un contrôleur (314E, 3148 ; 414E, 414R) d'accès direct en mémoire comportant : 3048795 26 - un récepteur (322R) conçu pour recevoir des données provenant de l'extérieur du noeud de calcul (302R) via le réseau (304) et pour les écrire dans une zone de partage (320R) de ladite au moins une mémoire, ou 5 - un émetteur (422E) conçu pour lire des données dans ladite zone de partage (420E) et pour les transmettre vers l'extérieur du noeud de calcul (402E) via le réseau (404), le procédé prévoyant un mécanisme de requêtes en écriture (606 ;\n<CLM>\1\tet lecture (614 ;\n<CLM>\1\tentre le contrôleur (314E, 3148 ; 414E, 414R) d'accès direct en mémoire et 10 le processeur (310E, 31OR ; 410E, 410R) d'un même noeud de calcul pour engendrer, sur requête du processeur (310E, 31OR ; 410E, 410R), un transfert de données (614 ; 810), par le contrôleur (314E, 3148 ; 414E, 4148) d'accès direct en mémoire, entre la zone de partage (32OR ; 420E) et la zone de travail (318R ; 418E) de ladite au moins une mémoire, 15 caractérisé en ce que, lors d'un échange de données, au moins l'un (302E ; 402R) desdits noeuds de calculs émetteur et récepteur sollicite un dispositif émetteur ou récepteur supplémentaire (326E ; 426R) de son contrôleur (314E ; 414R) d'accès direct en mémoire pour échanger les données entre l'extérieur de ce noeud de calcul (302E ; 4028) via le réseau (304 ;\n<CLM>\1\tet la zone de travail (318E ; 418R) de son processeur 20 (310E ; 410R), sans transiter par sa zone de partage (320E ; 420R).\n<CLM>\1\tProgramme d'ordinateur téléchargeable depuis un réseau de communication et/ou enregistré sur un support lisible par ordinateur et/ou exécutable par un processeur, caractérisé en ce qu'il comprend des instructions pour l'exécution des étapes d'un procédé d'échange de données entre noeuds de calculs (102A, ..., 25 102P) d'un système sur puce (100) selon la revendication 9, lorsque ledit programme est exécuté par un noeud de calcul du système sur puce.