FR 3090923 A1 20200626 FR 1873951 A 20181221 Description Titre de l'invention : Dispositif de contrôle généralisé des transferts mémoires pour les accès concurrentiels sur un système sur une puce [0001] La présente invention concerne un procédé de gestion d'un transfert de données. La présente invention est également relative à une architecture et à un système sur une puce comprenant l'architecture correspondant au procédé. [0002] Une architecture est une structure informatique comprenant au moins un groupe de dispositifs de traitement et au moins une mémoire. Une architecture est propre à effectuer des traitements sur des données. Lorsque les données comportent à la fois des données sensibles et non-sensibles, il est souhaitable d'obtenir des architectures respectant des contraintes de cloisonnement définissant un droit d'accès à un composant spécifique par un autre composant de l'architecture. [0003] Pour cela, il est connu d'utiliser un MMU (acronyme de « Memory Management Unit » signifiant littéralement unité de gestion de mémoire) qui est un mécanisme faisant la correspondance entre des adresses de mémoires physiques et des adresses de mémoires virtuelles associées à des traitements d'un processeur. [0004] Lc mécanisme 1/0-MMU est un mécanisme MMU particulier assurant la corres- pondance entre des adresses de mémoires physiques et des adresses de mémoires associées à un périphérique (i.e. des dispositifs comprenant des mémoires) comme, par exemple, un contrôleur d'interface. [0005] De tels mécanismes permettent de contrôler les accès mémoires lors des corres- pondances entre adresses physiques et adresses logiques. Ce contrôle s'appuie sur l'identifiant du processus (MMU) ou du contrôleur (1/0MMU) à l'origine de la requête d'accès. [0006] Toutefois, aucun de ces mécanismes ne permet de réaliser un contrôle d'accès lorsque le transfert de données est réalisé par un composant pour le compte d'un autre composant, comme c'est le cas lors des transferts à accès mémoire direct (ou DMA de l'anglais « Direct Memory Access ») qui sont réalisés par un contrôleur spécifique pour le compte d'un processus. [0007] Il existe un besoin pour un procédé de gestion des transferts de données à destination et depuis des mémoires qui permette une gestion sécurisée des transferts mis en oeuvre par un tiers. [0008] Pour cela, il est proposé un procédé de gestion du transfert de données depuis ou à destination d'au moins une mémoire d'une architecture, l'architecture comprenant : [0009] - des composants initiateurs propre à requérir le transfert de données depuis ou à des- tination de la mémoire, 2 [0010] - des mandataires, au moins l'un des mandataires étant propre à assurer le transfert de données pour le compte de l'un des composants initiateurs, et [0011] - des parc-feu, au moins l'un des parc-feu étant un parc-feu spécifique à la mémoire, le pare-feu spécifique à la mémoire contrôlant l'accès à la mémoire, [0012] chaque mémoire et chaque composant initiateur présentant un niveau de sécurité, l'architecture étant caractérisée par une politique de filtrage définissant des règles d'accès à la mémoire pour chaque composant initiateur et pour chaque mandataire en fonction des niveaux de sécurité. [0013] le procédé comportant au moins une étape de : [0014] - réception par le pare-feu spécifique à la mémoire d'au moins une requête de transfert depuis le mandataire, [0015] - détermination par le parc-feu spécifique à la mémoire du composant initiateur de la requête de transfert, et [0016] - autorisation de l'accès à la mémoire par le parc-feu spécifique à la mémoire uniquement lorsque les niveaux de sécurité de la mémoire et du composant initiateur de la requête de transfert respectent les règles d'accès de la politique de filtrage. [0017] Suivant des modes de réalisation particuliers, le procédé comprend une ou plusieurs des caractéristiques suivantes, prise(s) isolément ou suivant toutes les combinaisons techniquement possibles : [0018] - au moins l'un des mandataires est un composant actif intermédiaire, notamment un contrôleur d'accès direct à la mémoire, le composant actif intermédiaire comprenant une première connexion configurée pour échanger des données avec l'un des composants initiateurs et une deuxième connexion configurée pour échanger des données avec l'une des mémoires ; [0019] - la requête de transfert transmise par le mandataire comporte un identifiant spécifique au composant initiateur émettant la requête de transfert ; [0020] - l'un des pare-feu est un pare-feu spécifique au mandataire, le pare-feu spécifique au mandataire contrôlant l'accès au mandataire ; [0021] - lors de l'étape de réception, le pare-feu spécifique au mandataire accepte, lorsqu'une transaction est en cours de réalisation par le mandataire sur la mémoire, uniquement les requêtes de transfert comportant le même identifiant du composant initiateur ; [0022] - lors de l'étape de réception, le pare-feu spécifique au mandataire bloque l'accès au mandataire par un des composants initiateurs lorsqu'une transaction est en cours par le mandataire sur la mémoire et l'identifiant du composant initiateur diffère de l'identifiant de la transaction en cours ; [0023] - le pare-feu spécifique au mandataire est un pare-feu à états ; [0024] - l'identifiant du composant initiateur est associé à un niveau de priorité de traitement 3 des requêtes de transfert par le mandataire, le pare-feu spécifique au mandataire interrompant une requête de transfert en cours sur la mémoire lorsque le pare-feu spécifique au mandataire reçoit une requête de transfert présentant un niveau de priorité supérieur ou égal à un niveau de priorité de la requête de transfert en cours ; [0025] - des règles existent et interdisent des préemptions sur des zones de données transférées et, dans lequel le pare-feu spécifique au mandataire reçoit une nouvelle requête de transfert présentant un niveau de priorité supérieur ou égal à un niveau de priorité de la requête de transfert en cours et temporise la nouvelle requête de transfert jusqu'à la finalisation du transfert de la requête de transfert en cours sur les zones de données concernées par les règles interdisant une préemption ; [0026] - au moins l'un des mandataires comprend une ou plusieurs mémoires volatiles, le procédé de gestion comprenant unc étape d'envoi d'une commande de suppression de données enregistrées sur la ou les mémoires volatiles. [0027] Par ailleurs, la description sc rapporte aussi à une architecture propre à mettre en oeuvre un transfert de données, l'architecture comprenant : [0028] - au moins une mémoire, [0029] - des composants initiateurs propres à requérir le transfert de données depuis ou à destination de la mémoire, [0030] - des mandataires, au moins l'un des mandataires étant propre à assurer le transfert de données pour le compte de l'un des composants initiateurs, et [0031] - des pai-e-feu, au moins l'un des pare-feu étant un pare-feu spécifique à la mémoire, le pare-feu spécifique à la mémoire contrôlant l'accès à la mémoire, chaque mémoire et chaque composant initiateur présentant un niveau de sécurité, [0032] l'architecture étant caractérisée par une politique de filtrage définissant des règles d'accès à la mémoire pour chaque composant initiateur et pour chaque mandataire en fonction des niveaux de sécurité, [0033] le pare-feu spécifique à la mémoire étant configuré pour : [0034] - recevoir au moins une requête de transfert depuis le mandataire, [0035] - déterminer le composant initiateur de la requête de transfert, et [0036] - autoriser l'accès à la mémoire uniquement lorsque les niveaux de sécurité de la mémoire et du composant initiateur de la requête de transfert respectent les règles d'accès de la politique de filtrage [0037] En outre, la description se rapporte aussi à un système sur au moins une puce comprenant l'architecture comme décrit précédemment. [0038] D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description qui suit de modes de réalisation de l'invention, donnée à titre d'exemple uniquement et en référence aux dessins qui sont : [Fig 1] figure 1, une représentation schématique d'un exemple de système sur une puce comportant une architecture, et [Fig 2] figure 2, une représentation schématique de l'architecture de la figure 1 lors d'un exemple de mise en oeuvre d'un procédé de gestion. [0039] Un système 10 sur au moins une puce est illustré schématiquement sur la figure 1. [0040] Par définition, un système sur une puce est un système dont les éléments sont embarqués sur une seule puce. Un tel système est souvent désigné sous l'acronyme Soc qui renvoie au terme anglais de « System on a Chip ». [0041] Selon un mode de réalisation, le système 10 est agencé sur une seule puce. [0042] Dans un autre mode de réalisation, le système 10 est réparti sur plusieurs puces configurécs pour communiquer via des bus de données (non représentés). [0043] Selon un exemple, le système 10 est reparti sur une première puce et une deuxième puce, par exemple pour contrôler des voix radio de type différentes. La première puce correspond, par exemple, à une carte numérique, et la deuxième puce correspond, par exemple, à une carte radiofréquence. [0044] Le système 10 comporte une architecture 12. [0045] L'architecture 12 est configurée pour mettre en oeuvre au moins un transfert de données. [0046] L'architecture 12 comporte des mémoires 14, des composants initiateurs 16, des mandataires 18 et un ensemble de parc-feu 20. [0047] L'architecture 12 est caractérisée par une politique de filtrage définissant des règles d'accès de chaque composant à chaque autre composant en fonction de niveaux de sécurité attribués à chaque composant. [0048] Notamment, des niveaux de sécurités sont attribués aux mémoires 14, aux composants initiateurs 16 et aux mandataires 18. [0049] En particulier, la politique de filtrage définit les règles d'accès aux mémoires 14 et aux mandataires 18. [0050] Une mémoire 14 est un élément propre à mémoriser des données. [0051] Dans l'exemple de la figure 1, l'architecture 12 comprend une première mémoire 14A et une deuxième mémoire 14B. [0052] Toutefois, ce nombre n'est qu'un simple exemple, le nombre pouvant être supérieur ou inférieur. [0053] Dans l'exemple représenté, les mémoires 14A, 14B sont des composants distincts. [0054] En variante, les mémoires 14A, 14B font partie du même composant. Dans ce dernier cas, chaque mémoire 14A, 14B peut être qualifiée de zone mémoire. [0055] Selon une variante, les mémoires 14A, 14B forment une seule mémoire physique comprenant une pluralité de zones de mémoires. Chaque zone de mémoire présente notamment un niveau de sécurité particulier. [0056] Dans l'exemple proposé, l'architecture 12 comporte deux composants initiateurs 16 niais comme pour le cas des mémoires 14, ce nombre est un simple exemple. Dans les exemples des figures, un premier composant initiateur 16A et un deuxième composant initiateur 16B sont représentés. [0057] Chaque composant initiateur 16 est propre à requérir un transfert de données depuis ou à destination des mémoires 14. [0058] Pour cela, chaque composant initiateur 16 émet une requête de transfert. [0059] Une requête de transfert depuis une mémoire 14 est une opération de lecture des données mémorisées dans la mémoire 14 alors qu'une requête de transfert à destination d'une mémoire 14 est une opération d'écriture sur la mémoire 14 de données. [0060] Selon l'exemple décrit, la requête de transfert comprend un identifiant spécifique au composant initiateur 16 qui émet la requête de transfert. [0061] Les composants initiateurs 16 sont des coeurs d'un processeur, c'est-à-dire un ensemble de circuits capables d'exécuter des calculs de façon autonome. [0062] Selon un exemple, le processeur est un processeur de traitement numérique ou un processeur d'interfaces. Par processeur d'interfaces, il est entendu un processeur réalisant des transferts mémoire entre une source de données disposée en interface avec le processeur d'interfaces et une mémoire. Un processeur d'interfaces est, par exemple, intégré dans une architecture configurée pour mettre en oeuvre des accès direct à la mémoire (DMA), dans une architecture comprenant un enregistrement embarqué comportant une interface pour une carte mémoire multimédia (ou MMC de l'anglais MultiMedia Card »), également appelée architecture eMMC, ou des architectures comprenant un contrôleur USB ou un circuit logique programmable (ou FPGA de l'anglais « Field-programmable gate array »). [0063] Selon encore un autre exemple, le processeur est un microprocesseur multi-coeurs. [0064] Chaque composant initiateur 16 est configuré pour mettre en oeuvre des processus. Un processus dans le cadre de la présente description désigne un logiciel susceptible à être exécuté sur le composant initiateur 16. [0065] Un mandataire 18 est un élément propre à assurer des transferts de données pour le compte de l'un des composants initiateurs 16. [0066] Selon l'exemple de la figure 1, chaque composant initiateur 16 est associé à un mandataire 18. Dans les exemples des figures, un premier mandataire 18A et un deuxième mandataire 18B sont représentés. [0067] Le mandataire 18 est ainsi propre à recevoir une requête de transfert émise par le composant initiateur 16 et à mettre en oeuvre les transferts de données requis entre des ressources mémoire 14 pour le compte du composant initiateur 16. [0068] Selon l'exemple décrit, le mandataire 18 est un contrôleur d'accès direct à la mémoire. Un tel contrôleur est souvent désigné sous le terme de contrôleur DMA, l'acronyme DMA renvoyant au terme anglais de « Direct Memory Access ». 6 [0069] Un tel mandataire 18 est un composant actif au sens où le mandataire peut effectuer lui-même des requêtes ou transactions dès réception sans intervention du composant initiateur 16. [0070] Par ailleurs, un tel mandataire 18 est un composant intermédiaire au sens où le mandataire 18 est connecté physiquement entre le composant initiateur 16 et la mémoire 14. De telles connexions sont respectivement représentées par les traits 22 et 24 sur la figure 1. [0071] L'ensemble de parc-feu 20 comporte des pare-feu de mandataire 26 et des parc-feu de mémoire 28. [0072] Chaque parc-feu de mandataire 26 est un pare-feu spécifique d'un mandataire 18. [0073] Chaque pare-feu de mandataire 26 est propre à contrôler les requêtes de transfert en provenance des composants initiateurs 16 vers le mandataire 18, appelées requêtes amont RA, et les transferts de données réalisées par le mandataire 18 sur les ressources mémoire 14 pour le compte du composant initiateur 16, appelées requêtes aval RB. Les requêtes aval sont par exemple contrôlés par le parc-feu de mandataire 26 et/ou par le parc-feu de mémoire 28. [0074] Selon l'exemple décrit, chaque pare-feu de mandataire 26 est un pare-feu à états. [0075] Aussi, dans la suite, chaque parc-feu de mandataire 26 est dénommé parc-feu à états 26. [0076] Par «parc-feu à états », il est entendu un pare-feu propre à effectuer un filtrage selon une machine à états mettant en oeuvre une pluralité d'étapes selon des règles d'accès qui prennent en compte certaines conditions d'état du pare-feu à états. Par exemple, les règles d'accès sont modifiées lorsque des conditions d'état du pare-feu à états évoluent, comme décrit ci-dessous lors du fonctionnement du pare-feu à états. Selon l'exemple proposé, les règles d'accès du p' -e-feuà états sont au moins en partie celles de la politique de filtrage. [0077] Chaque pare-feu de mémoire 28 est un pare-feu spécifique d'une mémoire 14. [0078] Chaque pare-feu de mémoire 28 est propre à contrôler l'accès à la mémoire 14 pour laquelle il est spécifique. [0079] Selon l'exemple décrit, chaque pare-feu de mémoire 28 est un pare-feu statique. [0080] Aussi, dans la suite, chaque pare-feu de mémoire 28 est dénommé pare-feu statique 28. [0081] Par « pare-feu statique », il est entendu un pare-feu propre à effectuer un filtrage selon des règles invariantes. [0082] Selon l'exemple proposé, les règles d'accès du pare-feu statique sont au moins en partie celles de la politique de filtrage. [0083] Le fonctionnement de l'architecture 12 est maintenant décrit en référence à une figure 2 illustrant schématiquement un exemple de mise en oeuvre d'un procédé de 7 gestion d'un transfert de données depuis et à destination d'une mémoire 14. [0084] Le procédé de gestion comporte une étape d' initialisation, une étape de réception et d'autorisation de requêtes de transfert amont en état initialisé, une étape de marquage et d'émission de requêtes de transfert aval et une étape de réception de requêtes de transfert aval. [0085] Lors de l'étape d' initialisation, l'ensemble des pare-feu 20 est alimenté élec- triquement. [0086] Avant alimentation, chaque pare-feu 20 bloque toutes les requêtes et après ali- mentation, chaque pare-feu 20 bloque toutes les requêtes tant que les règles d'accès pertinentes pour le parc-feu 20 considéré ne sont pas connues par chaque pare-feu 20. [0087] L'étape d' initialisation comporte alors l'insertion des règles d'accès pertinentes dans chaque pare-feu 20. [0088] Lors de l'étape de réception et d'autorisation de requêtes de transfert amont en état initialisé, il est supposé que le premier composant initiateur 16a émet une première requête R1 de transfert de données mémorisées dans la première mémoire 14A et que le deuxième composant initiateur 16B émet une deuxième requête R2 de transfert de données mémorisées dans la même première mémoire 14A. [0089] Notamment, lors de l'étape de réception et d'autorisation de requêtes de transfert amont en état initialisé, le premier pare-feu à états 26 reçoit la première requête R1 et la deuxième requête R2. [0090] Le pare-feu à états 26 détermine l'identifiant du premier composant initiateur 16A contenu dans la première requête RI ainsi que l'identifiant du deuxième composant initiateur 16B contenu dans la deuxième requête R2. [0091] Le pare-feu à états 26 autorise l'accès au médiateur 18 uniquement si les niveaux du composant initiateur 16 ayant émis la requête et celui du premier médiateur 18 sont conformes à la politique de filtrage. [0092] Plus précisément, le pare-feu à états 26 contrôle alors si le premier composant initiateur 16A a le droit d'accès au premier mandataire 18 d'après les règles d'accès de la politique de filtrage. Le premier pare-feu à états 26 contrôle similairement le ch-oit d'accès au mandataire 18 par le deuxième composant initiateur 16B. [0093] Lorsque le composant initiateur I6A ou I6B n'a pas le niveau de sécurité requis selon la politique de filtrage, le premier pare-feu à états 26 rejette la requête émise par ledit composant initiateur 16. [0094] Dans l'exemple proposé, il est supposé que les deux requêtes RI et R2 sont acceptées par le premier pare-feu à états 26. [0095] Lors de l'étape de réception et d'autorisation de requêtes de transfert amont en état initialisé, le mandataire 18 traite, selon un exemple particulier, la requête RI ou R2 ayant le plus haut niveau de priorité. 8 [0096] Lors de l'étape de marquage des requêtes de transfert aval, le mandataire 18 réalise le marquage des requêtes de transfert à destination de la première mémoire 14 avec l'identifiant du composant initiateur 16 dont la requête a le plus haut niveau de priorité. Ainsi, toutes les requêtes de transfert en provenance du mandataire 18 pour le compte du composant initiateur 16 contiennent l'identifiant du composant initiateur 16 autorisé et ayant le plus haut niveau de priorité. [0097] Lors de l'étape de réception de requête aval, le premier pare-feu statique 28 reçoit la requête R1 ou R2 ayant le niveau de priorité le plus élevé. [0098] Lors de l'étape de réception de requête de transfert aval, pour chaque transaction, le deuxième pare-feu 28 détermine le composant initiateur 16 de la requête R1 ou R2 en obtenant l'identifiant contenu dans chaque requête R1 ou R2 par échanges avec le mandataire 18. Par exemple, le composant initiateur 16 de la requête R1 ou R2 est le premier composant initiateur 1 6 A ou le deuxième composant initiateur 1 6B. [0099] Lors de l'étape de réception de requête de transfert aval, le premier pare-feu statique 28 autorise l'accès à la première mémoire 14 lorsque les niveaux de sécurité de la première mémoire 14 et du composant initiateur 16 de la requête RI ou R2 respectent les règles d'accès de la politique de filtrage. [0100] En l'espèce, il est supposé que seul le premier composant initiateur 1 6A a le niveau requis par la politique. [0101] Dans une telle hypothèse, la deuxième requête R2 est rejetée par le premier parc-feu statique 28 alors que la première requête RI est acceptée par le premier pare-feu statique 28. [0102] Le transfert de données sur la première mémoire 14A pour le compte du premier composant initiateur 16A est alors effectué conformément à la première requête RI. [0103] Le procédé de gestion de transfert permet ainsi de gérer une politique de filtrage à l'aide d'une combinaison de pare-feu à états 26 et de pare-feu statique 28 d'une manière très efficace et plus précise. [0104] En effet, le procédé de gestion rend impossible qu'un composant initiateur 16 utilise un mandataire 18 pour contourner frauduleusement la politique de contrôle d'accès à la mémoire 14 pour laquelle le composant n'a pas le droit d'accès associé. [0105] Par ailleurs, il suffit de modifier les règles d'accès insérées dans les pare-feu pour adapter le procédé de gestion à une nouvelle politique de filtrage. Le procédé de filtrage est donc aisément reconfigurable. [0106] Le procédé permet une gestion de bout-en-bout des flux dans le système 10 ainsi que des accès concurrents à un composant du système 10. [0107] Le procédé permet, en outre, d'établir une politique de filtrage homogène et cohérente sur l'ensemble du système 10 de manière statique et dynamique. [0108] Ainsi, le procédé de gestion permet, en outre, d'éviter un accès simultané de 9 plusieurs requêtes de transfert à la mémoire 14, si cela est spécifié dans politique de filtrage, comme décrit selon un mode de réalisation particulier ci-après. [0109] Selon un mode de réalisation particulier, le pare-feu à états 26 vérifie également si une transaction est en cours de réalisation par le mandataire 18 avec la mémoire 14. Notamment, lorsqu'une transaction est en cours de réalisation par le mandataire 18 avec mémoire 14, le pare-feu à états 26 accepte uniquement les requêtes de transfert comportant l'identifiant du composant initiateur 16 de la requête en cours de réalisation. Des autres requêtes sont bloquées. [0110] Selon un autre mode de réalisation, si l'identifiant du composant initiateur 16 est associé à un niveau de priorité de traitement des requêtes par le mandataire 18, le pare-feu à états 26 interrompt le traitement de la requête en cours lorsque le parc-feu à états 26 reçoit une requête de transfert présentant un niveau de priorité supérieur ou égal au niveau de priorité de la requête de transfert en cours de traitement. [0111] Le pare-feu à états 26 interrompt le transfert en cours et mémorise l'état en cours du transfert. Le pare-feu 26 traite alors une nouvelle requête comme décrit notamment dans l'étape de réception et d'autorisation de requêtes de transfert amont en état initialisé. [0112] Une fois le transfert correspondant à la nouvelle requête finalisé, le pare-feu 26 reprend le traitement de la requête interrompu à partir de l'état mémorisé. [0113] Selon un mode de réalisation particulier, le pare-feu à états 26 vérifie la nouvelle requête de transfert et la requête de transfert en cours partagent des zones de données transférées et si des règles particulières de transfert sont définies sur les données transférées. [0114] Si des règles existent et interdisent des préemptions sur des zones de données transférées, la nouvelle requête de transfert est temporisée jusqu'à la finalisation du transfert de la requête de transfert en cours sur les zones de données concernées, par lesdites règles, et cela même si la nouvelle requête de transfert présente un niveau de priorité supérieur ou égal à un niveau de priorité de la requête de transfert en cours. [0115] Avantageusement, le procédé de gestion comprend, en outre, une étape d'envoi d'une commande de suppression de données enregistrées dans une ou plusieurs mémoires volatiles du mandataire 18. Cela permet de garantir l'absence de fuite de données via la réutilisation de segments de mémoires mal dé-alloués lors d'un changement de contexte d'exécution. Ainsi, il apparaît que dans une version élaborée, le procédé permet d'assurer la mise en oeuvre d'une politique de filtrage respectant trois règles. Selon la première règle, l'accès à un composant est limité à un instant donné à un seul processus ou groupe de processus autorisés. Selon la deuxième règle, si un composant entreprend des transactions avec d'autres composants à la suite de la requête d'un processus, ces requêtes sont marquées comme appartenant au processus initiateur. Enfin, selon la troisième règle, la politique de filtrage appliquée pour chaque composant est homogène sur l'ensemble du système. 11 [Revendication 1] [Revendication 2] [Revendication 3]