Brevet FR3070514A1 (20190301)

REVENDICATIONS1. Contrôleur d'accès direct en mémoire (22,,,) destiné à être introduit dans un noeud de calcul (C,,,) d'un système sur puce (12), comportant : - une mémoire tampon d'entrée (32,,J) pour la réception de paquets de données à traiter provenant d'une interface d'entrées/sorties (14,,J) du noeud de calcul - un module (36,,J) de gestion d'écriture des données à traiter extraites de chaque paquet dans un espace d'adressage local (20,,J) du noeud de calcul (C,), cet espace d'adressage local (20,,J) étant partagé par au moins un processeur (16,\n<CLM>\1\tde traitement desdites données autre que le contrôleur d'accès direct en mémoire (22,,J), - une unité arithmétique et logique (42,,J) d'exécution de microprogrammes, et - un registre (44,,,) de stockage d'au moins un microprogramme, caractérisé en ce qu'il comporte au moins un microprogramme (46,,J(1), 46,,,(3)), stocké en registre (44,,,), constitué de lignes d'instructions de calculs arithmétiques et/ou logiques portant uniquement sur des adresses (@d) de stockage des données à traiter reçues par la mémoire tampon d'entrée (32,,,) pour une réorganisation (F) de celles-ci dans l'espace d'adressage local partagé (20,,,), et en ce que le module (36,,,) de gestion d'écriture est conçu pour commander l'exécution dudit au moins un microprogramme (46,(l), 46,,,(3)) par l'unité arithmétique et logique (42,,J).\n<CLM>\1\tContrôleur d'accès direct en mémoire (22,,J) selon la revendication 1, dans lequel : - plusieurs microprogrammes (46,,J(1), 46,,,(3)) sont stockés en registre (44) et associés respectivement à plusieurs identifiants, - le module (36) de gestion d'écriture est conçu pour sélectionner, pour chaque paquet de données à traiter (48) reçu, l'un des microprogrammes (46(1), 46(3)) sur la base d'une correspondance entre l'identifiant qui lui est associé et un identifiant (Id) inclus dans un en-tête (50) de chaque paquet de données à traiter (48).\n<CLM>\1\tContrôleur d'accès direct en mémoire (22,) selon la revendication 1 ou 2, dans lequel : 17 - ledit au moins un microprogramme (46(1), 46,,,(3)) stocké en registre (44,,,) comporte des paramètres d'exécution à définir, - le module (36,,,) de gestion d'écriture est conçu pour définir au moins une partie de ces paramètres d'exécution à partir de données 5 d'exécution (param) incluses dans un en-tête de chaque paquet de données à traiter (48).\n<CLM>\1\tContrôleur d'accès direct en mémoire (22,,J) selon la revendication 3, dans lequel les paramètres d'exécution à définir comportent des paramètres de traitement d'images incluant au moins l'un des éléments de l'ensemble constitué de : 10 - taille(s) de lignes (L) ou de colonnes (C) de blocs d'images, et - nombre(s) de données à traiter successives devant être écrites à des adresses successives de l'espace d'adressage local partagé (20,,J).\n<CLM>\1\tContrôleur d'accès direct en mémoire (22,,J) selon l'une quelconque des revendications 1 à 4, dans lequel le module (36,,,) de gestion d'écriture est conçu pour 15 commander l'exécution de plusieurs microprogrammes en parallèle sur plusieurs canaux d'exécution différents, identifiés chacun par un identifiant de canal inclus dans chaque paquet de données à traiter (48), et pour réserver plusieurs sous-espaces d'adressages respectivement associés à ces canaux d'exécution dans l'espace d'adressage local partagé (20,,J). 20\n<CLM>\1\tContrôleur d'accès direct en mémoire (22,,,) selon l'une quelconque des revendications 1 à 5, dans lequel ledit au moins un microprogramme (46,,J(1), 46,,,(3)) stocké en registre (44,,,) comporte des lignes d'instructions de calculs arithmétiques et/ou logiques visant à opérer une transposition matricielle entre les données à traiter telles que reçues par la mémoire tampon d'entrée (32,,J) et les 25 mêmes données à traiter telles que réorganisées et écrites dans l'espace d'adressage local partagé (20,,J).\n<CLM>\1\tContrôleur d'accès direct en mémoire (22) selon l'une quelconque des revendications 1 à 6, dans lequel au moins deux modes de fonctionnement dudit au moins un microprogramme (46(1), 46(3)) stocké en registre (44,,J) sont 30 paramétrables : - un premier mode de redémarrage dans lequel chaque exécution dudit au moins un microprogramme (46,,J(1), 46,,,(3)) sur un paquet de données à traiter démarre sur un nouveau contexte d'exécution, et - un deuxième mode de pause dans lequel chaque exécution dudit au 35 moins un microprogramme (46,,J(1), 46,,,(3)) sur un paquet de 18 données à traiter démarre sur un contexte d'exécution du paquet de données à traiter précédent dans l'ordre de réception des paquets par la mémoire tampon d'entrée (32,,J).\n<CLM>\1\tContrôleur d'accès direct en mémoire (22,,,) selon l'une quelconque des 5 revendications 1 à 7, dans lequel deux modes d'écriture du module (36,,J) de gestion d'écriture sont paramétrables par un identifiant inclus dans un en-tête de chaque paquet de données à traiter (48) : - un premier mode d'écriture séquentielle dans lequel les données à traiter de chaque paquet indiquant ce premier mode sont écrites dans 10 l'espace d'adressage local partagé (20,,J) à partir d'une adresse relative définie comme étant contiguë à la dernière adresse à laquelle a été écrite une donnée à traiter du paquet de données à traiter précédent dans l'ordre de réception des paquets par la mémoire tampon d'entrée (32,,,), et 15 - un deuxième mode d'écriture à décalage absolu dans lequel les données à traiter de chaque paquet indiquant ce deuxième mode sont écrites dans l'espace d'adressage local partagé (20,,J) à partir d'une adresse relative définie par un décalage, également indiqué dans un en-tête de ce paquet, à une adresse prédéterminée de 20 référence de l'espace d'adressage local partagé (20,,J).\n<CLM>\1\tDispositif (10) de traitement de données à réseau sur puce, comportant : - un réseau (12) d'interconnexion de noeuds de calcul (C,,,) pour l'échange de paquets de données entre eux ou avec au moins un périphérique (28, 30), et 25 - une pluralité de noeuds de calcul (C,,,) comportant chacun : - une interface d'entrées/sorties (14) de paquets de données, - un espace d'adressage local partagé (20,1 - un contrôleur d'accès direct en mémoire (22,,J) selon l'une quelconque des revendications 1 à 8, pour un accès direct en 30 écriture, dans l'espace d'adressage local partagé (20,1 de données extraites de paquets reçus par sa mémoire tampon d'entrée (32,), et - au moins un processeur (16, 18,,,) de traitement de données, autre que le contrôleur d'accès direct en mémoire (22,), pour un 19 traitement des données écrites par le contrôleur d'accès direct en mémoire (22) dans l'espace d'adressage local partagé (20,,J).\n<CLM>\1\tProcédé de réception et de stockage de données par un noeud de calcul (C,,,) d'un dispositif (10) de traitement de données à réseau sur puce (12), comportant 5 les étapes suivantes : - réception (100), via une interface d'entrées/sorties (14,,J) du noeud de calcul (C,), par une mémoire tampon d'entrée (32) d'un contrôleur d'accès direct en mémoire (22,,J) du noeud de calcul, de paquets de données à traiter, 10 - extraction (102) des données à traiter de chaque paquet par le contrôleur d'accès direct en mémoire (22,,J), - écriture (104, 106), par le contrôleur d'accès direct en mémoire (22), des données à traiter reçues et extraites dans un espace d'adressage local (20) du noeud de calcul (C,), cet espace d'adressage local 15 (20) étant partagé par au moins un processeur (16, 18,,,) de traitement desdites données autre que le contrôleur d'accès direct en mémoire (22,), caractérisé en ce qu'il comporte en outre les étapes suivantes : - exécution (104), par une unité arithmétique et logique (42,,,) du 20 contrôleur d'accès direct en mémoire (22), d'au moins un microprogramme (46,,J(1), 46,,,(3)) constitué de lignes d'instructions de calculs arithmétiques et/ou logiques portant uniquement sur des adresses (@d) de stockage des données à traiter reçues (100) et extraites (102) pour une réorganisation (F) de 25 celles-ci dans l'espace d'adressage local partagé (20), et - écriture (106) des données reçues et extraites dans l'espace d'adressage local partagé (20,,J) à des adresses obtenues par ladite réorganisation (F).