FR 3077893 A1 20190816 FR 1851252 A 20180214 B16657 - 17-R0-0638 1 SYSTEME DE CONTROLE D'ACCES A UNE MEMOIRE Domaine La présente invention concerne le domaine des processeurs et, plus particulièrement, des droits d'accès à des zones mémoire selon les tâches exécutées. Exposé de l'art antérieur Dans le cadre des systèmes comprenant un processeur et une mémoire (par exemple les ordinateurs, les téléphones...), il est important d'être capable de restreindre l'accès à certaines zones de la mémoire. On peut, par exemple, vouloir restreindre l'accès à des données confidentielles ou à des données système. Cela peut être, par exemple, effectué en incluant dans le système une unité de protection de la mémoire (MPU - Memory Protection Unit), associée à une unité centrale de traitement (CPU - Central Processing Unit), par exemple un processeur. La MPU est apte à refuser l'accès à des zones de la mémoire à certaines tâches effectuées par le CPU. Par exemple, on peut associer à certaines tâches un identifiant et une zone de la mémoire, et refuser l'accès à cette zone de la mémoire à toute tâche n'ayant pas l'identifiant associé. Dans un tel système, le contrôle de la mémoire est effectué par la MPU associée au CPU. Il n'est possible de contrôler les tâches qu'une par une. B16657 - 17-R0-0638 2 Résumé Un mode de réalisation pallie tout ou partie des inconvénients des systèmes de contrôle d'accès à une mémoire. Ainsi, un mode de réalisation prévoit un système de 5 contrôle d'accès à une mémoire comprenant : au moins un premier circuit d'accès direct à la mémoire ; et au moins un second circuit, chaque second circuit étant associé à un premier circuit et étant programmé pour restreindre la zone de la mémoire accessible audit premier circuit. 10 Selon un mode de réalisation, le système comprend une unité centrale de traitement adaptée à programmer les seconds circuits. Selon un mode de réalisation, le système comprend une unité de protection de la mémoire ayant accès aux adresses des 15 zones à accès restreint. Selon un mode de réalisation, le système comprend au moins huit premiers circuits. Un autre mode de réalisation prévoit un procédé de lecture ou d'écriture d'une mémoire d'un système tel que celui 20 décrit précédemment. Selon un mode de réalisation, lorsqu'une tâche est démarrée, le second circuit vérifie à chaque changement de l'adresse de destination si la nouvelle adresse fait partie de la zone accessible à cette tâche, et si ce n'est pas le cas, la tâche est arrêtée. Selon un mode de réalisation, le procédé précédent comprend les étapes suivantes : a) attribuer un premier circuit à une tâche à effectuer ; b) programmer le second circuit de manière à définir la zone mémoire accessible lors de cette tâche ; c) programmer le premier circuit de manière à définir l'adresse de la mémoire à laquelle commence la tâche ; et d) commencer la tâche. Selon un mode de réalisation, l'étape b) est effectuée en mode privilégié. B16657 - 17-R0-0638 3 Selon un mode de réalisation, l'étape c) est effectuée dans un mode limité associé à la tâche. Selon un mode de réalisation, les étapes b) et c) sont effectuées par une unité centrale de traitement. 5 Selon un mode de réalisation, les étapes a) à d) sont reproduites pour chaque tâche à effectuer. Selon un mode de réalisation, les tâches effectuées par les au moins un premier circuit peuvent s'effectuer en parallèle. Brève description des dessins 10 Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : la figure 1 représente, sous forme de blocs, un mode de 15 réalisation d'un système de contrôle d'accès à une mémoire ; la figure 2 représente un mode de mise en oeuvre d'un procédé de fonctionnement du système de la figure 1 ; la figure 3 illustre une étape du procédé de la figure 2 ; 20 la figure 4 illustre une autre étape du procédé de la figure 2 ; la figure 5 illustre une autre étape du procédé de la figure 2 ; la figure 6 illustre une autre étape du procédé de la 25 figure 2 ; la figure 7 illustre une autre étape du procédé de la figure 2 ; et la figure 8 illustre une étape non représentée en figure 2. 30 Description détaillée De mêmes éléments ont été désignés par de mêmes références dans les différentes figures. Par souci de clarté, seuls les éléments utiles à la compréhension des modes de réalisation décrits ont été représentés et sont détaillés. En B16657 - 17-R0-0638 4 particulier, les systèmes décrits comprennent divers autres composants qui ne sont pas détaillés. La figure 1 représente, sous forme de blocs, un mode de réalisation d'un système 10 de contrôle d'accès à une mémoire. 5 Le système 10 comprend une unité centrale de traitement (CPU) 12, une mémoire (MEMORY) 14 et une pluralité de périphériques 16 dont deux sont représentés (PERIPH1, PERIPH2). Les périphériques 16 correspondent à des circuits aptes à effectuer des tâches, c'est-à-dire à lire ou écrire dans la 10 mémoire 14. Les périphériques 16 peuvent être des périphériques externes au système comme une imprimante ou des capteurs connectés au système. Les périphériques 16 peuvent aussi être internes au système, par exemple d'autres processeurs. Le système comprend de plus une unité de protection de la mémoire (MPU) 18 adaptée à 15 refuser ou à accepter l'accès à certaines zones de la mémoire 14 au CPU dans certains modes d'utilisation autres qu'un mode privilégié, c'est-à-dire un mode dans lequel le CPU a toutes les autorisations et peut accéder à toutes les zones mémoire. Le système comprend, de plus, des circuits 20 d'accès 20 direct à la mémoire dont deux sont représentés (DMA1, DMA2 - Direct Memory Access). De préférence, il y a par exemple au moins huit circuits DMA, par exemple entre huit et seize circuits DMA. Les circuits DM A correspondent à des canaux à travers lesquels des données peuvent être lues ou écrites par un périphérique 16 25 dans la mémoire 14 sans intervention du CPU 12 autre que le lancement de la lecture ou de l'écriture. Une adresse de destination d'un circuit DM A correspond à l'adresse à laquelle la lecture ou l'écriture par un périphérique est effectuée à un instant donné. Cette adresse peut être programmée, par exemple 30 par le CPU, et change au fur et à mesure de l'écriture ou de la lecture. Selon un mode de réalisation, chaque circuit DM A 20 est associé à un circuit (L1, L2) 22 de protection locale de la mémoire. Chaque circuit 22 est apte à comparer l'adresse de 35 destination du circuit DM A 20, avec les adresses des zones mémoire B16657 - 17-R0-0638 5 autorisées du circuit DM A 20 à chaque changement d'adresse de destination et ainsi à restreindre la zone de la mémoire accessible par le circuit DMA. Chaque circuit 22 est, de plus, apte à arrêter la lecture ou l'écriture de la mémoire si l'adresse 5 ne fait pas partie des zones autorisées. La zone de mémoire accessible par le circuit DM A peut être programmée dans le circuit 22 par le CPU en mode privilégié. La figure 2 représente un mode de mise en oeuvre du système de la figure 1. Certaines étapes du procédé de la figure 10 2 sont illustrées par les figures 3 à 8. Le CPU commence par déterminer, au cours d'une étape 30 (DETERMINING TASKS TO IMPLEMENT), si des tâches venant de périphériques 16 peuvent être exécutées par un circuit DMA. Pour simplifier, on utilise par la suite l'index i pour désigner un 15 circuit DMA, le circuit 22, une tâche qui leur est associée, ou un périphérique qui leur est associé, i étant un entier allant de 1 à N, N étant le nombre de tâches pouvant être exécutées par des circuits DMA. Le CPU exécute ensuite une étape 32 (ASSIGNING DMA) au 20 cours de laquelle il attribue un circuit DM A à chaque tâche à exécuter. S'il y a plus de tâches que de circuits DMA, certaines tâches sont mises en attente jusqu'à ce qu'un circuit DM A devienne disponible. L'étape 32 est suivie d'une étape 34 (PROGRAMMING LOCAL 25 MEMORY PROTECTION UNITS Li) de programmation des circuits de protection locale de la mémoire. Au cours de l'étape 34, le CPU passe en mode privilégié pour programmer les circuits 22. La programmation des circuits 22 n'est possible qu'en mode privilégié. La MPU a accès aux adresses 30 des différentes zones mémoire autorisées pour chaque périphérique ou pour chaque tâche. Le CPU utilise, en mode privilégié, la MPU et ses informations pour programmer les circuits 22 associés aux circuits DM A auxquels une tâche a été attribuée de manière à ce que chaque circuit 22 autorise la lecture et l'écriture de la zone mémoire autorisée associée à la tâche correspondante. B16657 - 17-R0-0638 6 L'étape 34 est suivie d'une étape 36 (PROGRAMMING DMAi CURRENT ADDRESS) au cours de laquelle le CPU quitte le mode privilégié et entre dans un mode limité associé à une tâche i à laquelle un circuit 20 DMAi a été attribuée. Le circuit 22 Li de 5 ce DMAi a été programmé. La MPU assure alors que l'accès du CPU est restreint à la zone de la mémoire associée à cette tâche. Au cours de cette étape 36, le CPU programme l'adresse de destination du circuit DMAi comme étant l'adresse à laquelle l'écriture ou la lecture de la mémoire doit commencer pour cette tâche i. Cette 10 programmation entraine le démarrage de la tâche i (TASK i). Une fois qu'il a lancé la tâche i, le CPU détermine (étape 40 - OTHER TASK TO IMPLEMENT ?) si une autre tâche à laquelle un circuit DM A a été attribué doit être effectuée. Dans l'affirmative (sortie YES du bloc 40), le CPU passe 15 à la tâche suivante (étape 42 - NEXT TASK) et revient à l'étape 36 pour cette nouvelle tâche, c'est-à-dire revient à l'étape de programmation de l'adresse de destination du circuit DMA attribuées à cette autre tâche. Si, à l'étape 40, le CPU détermine que toutes les tâches 20 auxquelles ont été attribuées un circuit DM A ont été exécutées (sortie NO du bloc 40), le CPU détermine (étape 44 - NEW TASK TO IMPLEMENT ?) si de nouvelles tâches, auxquelles n'ont pas été attribué un circuit DM A précédemment, doivent être exécutées. Dans la négative (sortie NO du bloc 44), le système 10 25 de contrôle d'accès à la mémoire est en attente jusqu'à l'arrivée d'une nouvelle tâche. Si une ou plusieurs nouvelles tâches doivent être exécutées avec un circuit DM A (sortie YES du bloc 44), on revient à l'étape 32 avec l'attribution des circuits DM A aux différentes 30 nouvelles tâches. Côté tâche i (bloc 60), le circuit 22 du circuit DMA commence par déterminer (étape 46 - CURRENT ADDRESS IN AUTORIZED ZONE ?), sans avoir recours au CPU, si l'adresse de destination est dans la zone autorisée, par exemple en la comparant avec les 35 bornes d'une plage d'adresses programmée à l'étape 34. B16657 - 17-R0-0638 7 Dans la négative (sortie NO du bloc 46), la tâche est considérée comme terminée et le circuit DM A est de nouveau disponible pour être attribué à une autre tâche (étape 48 - DMA AVAILABLE). 5 Dans l'affirmative (sortie YES du bloc 46), le périphérique PERIPHi de la tâche lit ou écrit dans la ligne de mémoire à l'adresse de destination (étape 50 - READING/WRITING). Le périphérique PERIPHi détermine ensuite si la tâche est terminée (étape 52 - TASK ENDED ?). Si oui (sortie YES du bloc 10 52), le circuit DM A est de nouveau disponible pour être attribué à une autre tâche (étape 48). Si non (sortie NO du bloc 52), l'adresse de destination du circuit DM A est changée pour devenir l'adresse suivante (étape 54 - NEXT ADDRESS) et on revient à l'étape 46. 15 Les étapes 46 à 54, correspondant à l'exécution proprement dite de la tâche, s'effectuent parallèlement, pour chaque tâche à laquelle on a attribué un circuit DMA, après la programmation par le CPU de l'adresse de destination. Les figures 3 à 8 illustrent un exemple d'application 20 des étapes du procédé de la figure 2 dans le cas du système 10 de la figure 1. Dans cet exemple, on considère que les deux périphériques 16, PERIPH1 et PERIPH2, cherchent à avoir accès à la mémoire 14 par des circuits DMA. Les circuits DMA1 et DMA2 ont été respectivement attribués à la tâche 1 du périphérique PERIPH1 25 et à la tâche 2 du périphérique PERIPH2. La figure 3 illustre l'étape 34, au cours de laquelle le CPU passe en mode privilégié pour programmer les circuits 22 des circuits DMA1 et DMA2. Le CPU 12 utilise, en mode privilégié, la MPU 18 pour 30 programmer le circuit Li, associé au circuit DMA1, de manière à ce qu'il restreigne la lecture et l'écriture par le périphérique PERIPH1 à la zone mémoire comprise entre des adresses al et a2. De la même manière, le CPU programme le circuit L2, associé au circuit DMA2, de manière à ce qu'il restreigne la lecture et B16657 - 17-R0-0638 8 l'écriture par le périphérique PERIPH2 à la zone mémoire comprise entre des adresses bl et b2. Le système comprend aussi, dans cet exemple, un circuit DMA3 n'étant pas attribué à une tâche et son circuit 22 L3 n'est 5 donc pas programmé par le CPU à cette étape. La figure 4 illustre les étapes 36 et 46, pour la tâche 1 associée au périphérique PERIPH1. Au cours de l'étape 36, le CPU quitte le mode privilégié et entre dans un mode limité associé à la tâche 1. La MPU assure 10 alors que l'accès du CPU est restreint à la zone de la mémoire associée à cette tâche 1 (adresses al à a2). Le CPU programme ensuite l'adresse de destination du circuit DMA1 pour être l'adresse à laquelle l'écriture ou la lecture de la mémoire doit commencer. Au cours de l'étape 46, le circuit Li compare cette 15 adresse aux zones autorisées et autorise ou non le début de la tâche, c'est-à-dire la lecture ou l'écriture de la mémoire (étape 50). Parallèlement à l'exécution de la tâche 1, le CPU détermine (étape 42) qu'un circuit DM A a été attribué à une autre tâche, par exemple la tâche 2, associée au périphérique PERIPH2. 20 La figure 5 illustre les étapes 36 et 46, pour la tâche 2. Au cours de l'étape 36, le CPU entre dans un mode limité, associé à la tâche 2. De même que précédemment, l'accès du CPU est restreint à la zone (adresses bl à b2) de la mémoire associée 25 à cette tâche. Le CPU programme ensuite l'adresse de destination du circuit DMA2 pour être l'adresse à laquelle l'écriture ou la lecture de la mémoire doit commencer. Au cours de l'étape 46, le circuit L2 compare cette adresse aux zones autorisées et autorise ou non le début de la tâche 2. 30 La tâche 1 du périphérique PERIPH1 peut être terminée, auquel cas le circuit DMA1 est rendu disponible (étape 48) pour être attribué à une nouvelle tâche. Si non, la tâche 1 du périphérique PERIPH1 se poursuit, c'est-à-dire que les étapes 46, 50, 52 et 54 se répètent. En effet, la présence du circuit DMA1 B16657 - 17-R0-0638 9 permet la lecture ou l'écriture sans l'utilisation du CPU, qui est alors occupé à programmer le circuit DMA2. La figure 6 illustre les étapes 32 et 34 d'application du procédé de la figure 2. 5 Parallèlement à l'exécution des tâches 1 et 2 associées aux périphériques PERIPH1 et PERIPH2, un autre périphérique 16 (PERIPH3) cherche à effectuer une tâche 3 avec un circuit DMA, ce qui est déterminé par le CPU à l'étape 44 suivant la programmation du circuit DMA2. 10 Le procédé reprend donc à l'étape 32 au cours de laquelle le CPU entre dans le mode privilégié de manière à attribuer un circuit DMA, ici le circuit DMA3, à cette tâche 3. L'unité CPU programme ensuite le circuit L3 (étape 34) de manière à restreindre l'accès du circuit DMA3 à des adresses comprises entre 15 cl et c2. Les tâches 1 et 2 effectuées par les périphériques PERIPH1 et PERIPH2 peuvent toujours être en cours ou peuvent être terminées. S'il n'y a plus de circuit DM A disponible lorsqu'une 20 nouvelle tâche cherche à accéder à la mémoire à travers un circuit DMA, la tâche est par exemple mise en attente. Un système de priorité peut aussi être mis en place dans lequel une tâche de moindre niveau de priorité peut être mise en attente de manière à attribuer le circuit DM A à une autre tâche. La tâche de moindre 25 niveau de priorité est reprise à la fin de la tâche prioritaire. La figure 7 illustre les étapes 36 et 46, pour la tâche 3 associée au périphérique PERIPH3, au cours de laquelle le CPU entre un mode limité associé à la tâche 3 du périphérique PERIPH3. De même que précédemment, le CPU n'a accès qu'à la zone (adresses 30 cl à c2) de la mémoire associée à cette tâche 3. L'unité CPU programme ensuite le circuit DMA3 (étape 36) de manière à définir l'adresse de destination du circuit DMA3 pour être l'adresse à laquelle l'écriture ou la lecture de la mémoire doit commencer. Le circuit L3 compare cette adresse de destination aux zones 35 autorisées et autorise ou non le début de la tâche 3 (étape 46). B16657 - 17-R0-0638 10 Les tâches 1 et 2 des périphériques PERIPH1 et PERIPH2 peuvent toujours être en cours ou être terminées. La figure 8 illustre une étape, non représentée en figure 2, au cours de laquelle une tâche qui n'est pas programmée 5 pour être effectuée par un circuit DM A est effectuée directement par le CPU. Pour ce faire, le CPU entre dans un mode limité dans lequel il n'a accès à aucune des zones protégées et attribuées de la mémoire, dont les adresses sont connues de la MPU. Cette tâche peut être effectuée après que les tâches aient été démarrées ou 10 entre deux tâches, par exemple selon le niveau de priorité. Le CPU lit ou écrit alors dans une zone 24 de la mémoire et la MPU s'assure que le CPU n'accède à aucune zone protégée. Durant cette étape, les tâches effectuées par des circuits DM A continuent indépendamment du CPU. 15 Un avantage des modes de réalisation décrits est qu'il est impossible pour une tâche, par exemple provenant d'un programme malveillant, d'atteindre des zones mémoire protégées, même si cette tâche est exécutée par un circuit DM A et n'est donc pas contrôlée par la MPU. 20 Des modes de réalisation particuliers ont été décrits. Diverses variantes et modifications apparaîtront à l'homme de l'art. En particulier, la zone associée à chaque circuit DM A et programmée dans le circuit de protection locale de la mémoire 22 correspondant n'est pas limitée à une unique zone continue mais 25 peut, par exemple, REVENDICATIONS1. Système de contrôle d'accès à une mémoire (14) comprenant : au moins un premier circuit d'accès direct à la mémoire (20) ; et au moins un second circuit (22), chaque second circuit étant associé à un premier circuit et étant programmé pour restreindre la zone de la mémoire accessible audit premier circuit. 2. Système selon la revendication 1, dans lequel le 10 système comprend une unité centrale de traitement (12) adaptée à programmer les seconds circuits. 3. Système selon la revendication 1 ou 2, dans lequel le système comprend une unité de protection de la mémoire (18) ayant accès aux adresses des zones mémoire à accès restreint. 15 4. Système selon l'une quelconque des revendications 1 à 3, comprenant au moins huit premiers circuits (20). 5. Procédé de lecture ou d'écriture d'une mémoire d'un système selon l'une quelconque des revendications 1 à 4. 6. Procédé selon la revendication 5, dans lequel, 20 lorsqu'une tâche (TASKi) est démarrée, le second circuit (22) vérifie (46) à chaque changement de l'adresse de destination si la nouvelle adresse fait partie de la zone mémoire accessible à cette tâche, et si ce n'est pas le cas, la tâche est arrêtée. 7. Procédé selon la revendication 5 ou 6 comprenant les 25 étapes suivantes : a) attribuer un premier circuit à une tâche à effectuer (32) ; b) programmer le second circuit de manière à définir la zone mémoire accessible lors de cette tâche (34) ; 30 c) programmer le premier circuit de manière à définir l'adresse de la mémoire à laquelle commence la tâche (36) ; et d) commencer la tâche (60). 8. Procédé selon la revendication 7, dans lequel l'étape b) est effectuée en mode privilégié. B16657 - 17-R0-0638 12 9. Procédé selon la revendication 7 ou 8, dans lequel l'étape c) est effectuée dans un mode limité associé à la tâche. 10. Procédé selon l'une quelconque des revendications 7 à 9, dans lequel les étapes b) et c) sont effectuées par une unité 5 centrale de traitement (12). 11. Procédé selon l'une quelconque des revendications 7 à 10, dans lequel les étapes a) à d) sont reproduites pour chaque tâche à effectuer. 12. Procédé selon l'une quelconque des revendications 7 10 à 11, dans lequel les tâches effectuées par les premiers circuits peuvent s'effectuer en parallèle.