FR 2871908 A1 20051223 FR 0406666 A 20040618 PROCEDE ET PROGRAMME D'ORDINATEUR DE TRAITEMENT D'UNE ADRESSE VIRTUELLE POUR LA PROGRAMMATION D'UN CONTROLEUR DE DMA ET SYSTEME SUR PUCE ASSOCIE La présente invention concerne le domaine des systèmes intégrés sur silicium ou SoC (de l'anglais "System On Chip"), comprenant au moins une unité centrale de traitement ou CPU ("Central Processing Unit") sur laquelle des programmes s'exécutent, un contrôleur d'accès direct à la mémoire ou contrôleur de DMA ("Direct Memory Access"), une mémoire et une unité de gestion de mémoire. De tels SoC sont par exemple intégrés dans des appareils électroniques tels qu'un ordinateur à usage général, un boîtier décodeur ou "Set-TopBox", un assistant numérique personnel ou PDA ("Personal Digital Assistant"), un téléphone portable etc. La présente invention concerne plus précisément la programmation du contrôleur de DMA d'un tel SoC. Dans la mémoire physique, un espace mémoire de taille variable est alloué dynamiquement à chaque programme d'application ou programme utilisateur. Plus spécifiquement, chaque programme utilisateur n'a accès qu'à une partie des pages de la mémoire physique. Ces pages forment un espace mémoire (éventuellement discontinu) qui est adressé au niveau du bus mémoire par des adresses physiques, mais qui est connu du programme utilisateur via un espace d'adressage (en général continu), dit espace d'adressage virtuel auquel le programme accède avec des adresses virtuelles. L'espace d'adressage virtuel est propre au programme utilisateur. La relation qui lie les adresses virtuelles dans ledit espace d'adressage et les adresses physiques dans la mémoire physique est stockée sous la forme d'une table de traductions appelée table des pages, qui est gérée par le système d'exploitation et stockée dans la mémoire principale. Les dernières traductions d'adresses calculées par l'unité de rechargement de table de la MMU sont stockées dans une mémoire cache spécifique appelée TLB (TLB, de l'anglais "Translation Look-aside Buffer") . De façon connue, chaque entrée ("Entry" en anglais) de la TLB, i.e., chaque ligne correspondant à une traduction dans la TLB comprend un identificateur d'espace d'adressage (ou ASID, de l'anglais "Adress Space IDentifier") afin de distinguer des adresses virtuelles identiques dans des espaces d'adressage différents. Chaque ASID est respectivement associé, de manière univoque, à un espace d'adressage déterminé du système. Le contrôleur de DMA effectue des transferts de données entre la mémoire interne du SoC et des dispositifs mémoires périphériques (par exemple, des disques), à partir d'informations qui lui sont fournies. Ces informations comportent l'adresse physique de source du transfert, l'adresse physique de destination du transfert et enfin la taille de la zone mémoire à transférer. Dans l'art antérieur, un programme requérant une programmation du contrôleur de DMA en vue d'un transfert DMA s'exécutant sur le SoC en mode utilisateur (appelé encore mode applicatif ou mode non-privilégié) fournit une adresse virtuelle, qui est l'adresse virtuelle de la source du transfert DMA ou de la destination du transfert DMA, au système d'exploitation ou OS ("Operating System"). L'OS, s'exécutant en mode privilégié (appelé encore mode superviseur ou mode noyau) prend alors la main, traduit l'adresse virtuelle fournie en une adresse physique correspondante. Il requiert successivement la mémorisation de l'adresse physique de source du transfert obtenue dans le registre de source, la mémorisation de l'adresse de destination dans le registre de destination et enfin la mémorisation de la taille dans le registre de taille, et ce à partir de l'adresse virtuelle des registres. L'OS supervise ensuite le transfert réalisé par le contrôleur de DMA à partir des informations figurant dans ses registres et avertit le programme initiateur de la requête, du résultat du transfert. Les instructions de mémorisation utilisées généralement sont du type: "STORE pa_src@dma_src reg_adr", "STORE pa_dest@dma_dest_reg_adr" et "STORE size@dma_size_reg_adr", où "pa_src" est l'adresse physique de source, "pa_dest" est l'adresse physique de destination, "size" est la taille de la zone mémoire transférée, "dma_src_reg_adr", "dma_dest reg_adr" et "dma_size_reg_adr" sont respectivement les adresses virtuelles des registres de source, de destination et de taille. La première instruction ci-dessus signifie en langage naturel mémoriser la donnée correspondant à l'adresse physique de source "pa_src" dans le registre d'adresse de source du contrôleur de DMA dont l'adresse virtuelle est "dma_src_reg_adr" . Cette instruction fournit donc un argument d'adresse virtuelle "dma_src_reg_adr" et un argument de données "pa_src" à stocker à l'adresse fournie comme argument d'adresse. En référence à la figure 1 représentant schématiquement un exemple de SoC tel que considéré précédemment, le cheminement d'une programmation du contrôleur de DMA suivant l'art antérieur est le suivant: l'adresse virtuelle "dma_src reg_adr" est appliquée par la CPU à destination de la MMU sur le bus d'adresses virtuelles VA. La MMU la traduit en adresse physique, vérifie les droits d'accès à cette adresse physique, puis l'applique sur le bus d'adresse physiques PA, par lequel elle est mise à disposition notamment du contrôleur de DMA sur le bus général A qui est relié à un ensemble d'entités comprenant par exemple des contrôleurs de disques, la mémoire physique etc. En parallèle, l'adresse physique de source "pa_src" est appliquée par la CPU sur le bus de données DAT, à partir duquel elle est mise à disposition sur le bus général de données D relié également à l'ensemble d'entités. La traduction est effectuée par la MMU à l'aide d'une table de traduction. Plusieurs tentatives ont été récemment effectuées pour programmer le contrôleur de DMA directement par un programme s'exécutant en mode utilisateur, et non plus par l'OS. Ce besoin provient notamment de la proportion très importante du temps requis pour une programmation de contrôleur de DMA par l'OS, par rapport au temps du transfert lui-même des données opéré par le contrôleur de DMA. Une des difficultés rencontrées provient du fait que les registres du contrôleur de DMA doivent être programmés avec des adresses physiques, alors que les programmes en mode utilisateur n'y ont pas accès et qu'il n'est pas souhaitable, notamment pour des raisons de sécurité, qu'ils y aient accès. Des solutions sont proposées dans les documents User-Level DMA without Operating System Kernel Modification , de Evangelos P. Markatos et Manolis G.H. Katevenis, Institute of Computer Science, Science and Technology Park of Crete, 1997 IEEE, Protected User-Level DMA for the Shrimp Network Interface , de M.A. Blumrich et al., Proc of the 2nd International Symposium on High Performance Computer Architecture, pages 154-165, February 1996 et Integration of Message Passing and Shared Memory in the Stanford Flash Multi-Processor , de J. Heinlein et al., Proc. Of the 6th International Conference on Architectural Support for Programming Languages and Operating Systems, pages 38-50, 1994. Selon ces solutions, le programme utilisateur exécute une instruction de mémorisation existante de type de l'instruction STORE évoquée ci-dessus, mais place comme argument d'adresse l'adresse virtuelle de source ou de destination qu'il désire programmer dans le contrôleur de DMA, et non l'adresse du registre du contrôleur de DMA à programmer. Ceci a pour effet de forcer la MMU à traduire l'adresse virtuelle fournie, de source ou de destination, en adresse physique correspondante. Cette technique permet en outre à la MMU de contrôler que le programme utilisateur a bien le droit d'accéder à cette adresse. Deux difficultés supplémentaires ont dû être prises en compte. Tout d'abord, il faut faire en sorte que le contrôleur de DMA recueille cette adresse physique qui se trouve sur le bus d'adresses A, et l'écrive comme une donnée dans son registre de source ou de destination. Par ailleurs, il faut également permettre que la zone mémoire à laquelle l'adresse physique appliquée sur le bus correspond, ignore l'instruction "STORE" car elle ne lui est pas adressée. Le document cité ci-dessus permet de fournir une solution à ces problèmes. Cette solution consiste à mettre à 1 le bit le plus significatif (bit de plus fort poids ou MSB) de l'adresse de source ou de destination d'un transfert DMA avant qu'elle ne soit fournie à la MMU. Ainsi le contrôleur de DMA recueille à l'aide de sa machine d'état adaptée, comme une donnée à mémoriser dans un de ses registres, tout mot comportant un MSB à 1. Cette solution réalise donc un adressage implicite (ou "shadow adressing") , basé sur l'instruction de mémorisation "STORE" et le préfixe 1. L'inconvénient de cette technique est que le système ne doit comporter aucune zone mémoire ou dispositif périphérique dont l'adresse commence par 1, ce qui divise par deux l'espace mémoire adressable réellement disponible. Ainsi pour un système 32 bits (soit 4 Go), l'espace mémoire adressable en pratique est réduit de moitié, à 21'31 bits (soit 2 Go), ce qui est très pénalisant. La présente invention vise à pallier cet inconvénient de l'art antérieur. A cet effet, suivant un premier aspect, l'invention propose un procédé de traitement d'une adresse virtuelle par un processus comportant une programmation d'un contrôleur de DMA et adapté pour s'exécuter en mode utilisateur sur un système sur une puce comportant une unité centrale de traitement, une unité de gestion de mémoire et un contrôleur de DMA. L'adresse virtuelle est une adresse virtuelle de source ou une adresse virtuelle de destination, ayant une taille de N bits. Le procédé comprend les étapes suivantes: - on découpe l'adresse virtuelle en au moins deux champs de bits; - pour chaque champ, on crée un mot d'adresse de N bits, comprenant d'une part une valeur de préfixe donnée associée au champ et codée sur un nombre de bits strictement supérieur à 1, et d'autre part ledit champ; - on effectue une programmation du contrôleur de DMA à l'aide d'instructions de mémorisation et comportant, pour chacun des mots d'adresse créés, une instruction de mémorisation respective relative audit mot d'adresse. Ce procédé est avantageusement mis en oeuvre dans un programme utilisateur. Un tel procédé permet de réduire l'espace disponible de manière bien moins importante que dans les solutions de l'art antérieur, tout en préservant le fait que le programme utilisateur ne manipule pas les adresses physiques, et que la MMU effectue bien une vérification des droits du programme lors de sa demande de programmation du contrôleur de DMA. Suivant un second aspect, l'invention propose un programme d'ordinateur comportant une programmation de contrôleur de DMA à partir d'une adresse virtuelle de source ou une adresse virtuelle de destination, ayant une taille de N bits. Le programme d'ordinateur est adapté pour s'exécuter en mode utilisateur sur un système sur une puce comportant une unité centrale de traitement, une unité de gestion de mémoire et un contrôleur de DMA. Il comprend des instructions pour mettre en oeuvre les étapes d'un procédé suivant le premier aspect de l'invention. Suivant un troisième aspect, l'invention propose un système sur une puce comprenant au moins une unité de gestion de mémoire, une unité centrale de traitement, un bloc de traitement d'adresse et un contrôleur de DMA. L'unité centrale de traitement est adaptée pour, lors de l'exécution en mode utilisateur d'une instruction de mémorisation comportant au moins un argument d'adresses, fournir l'argument d'adresses au bloc de traitement d'adresses par l'intermédiaire d'un premier bus d'adresses. Le bloc de traitement d'adresse comprend: - un premier module adapté pour réaliser des traitements sur des mots d'adresse ayant une première valeur de préfixe donnée codée sur un nombre de bits strictement supérieur à 1, une unité de gestion de mémoire, adaptée pour traduire conformément à une table déterminée, un mot d'adresse virtuelle comportant N bits fourni en entrée en un mot d'adresse physique correspondant, - des moyens d'acheminement adaptés pour détecter au moins la première valeur de préfixe et une seconde valeur de préfixe donnée codée sur un nombre de bits strictement supérieur à 1 dans un mot d'adresse virtuelle fourni en entrée et pour fournir sélectivement le mot d'adresse à un élément sélectionné parmi l'unité de gestion de mémoire, le premier module du bloc de traitement d'adresse et un second bus d'adresses. Ce bloc de traitement d'adresse est adapté en outre pour, à partir d'un mot d'adresse virtuelle fourni en entrée comportant un préfixe présentant la première valeur, délivrer un mot d'adresse comportant un préfixe présentant la première valeur et des bits obtenus suite à une opération de traduction d'adresse virtuelle en adresse physique correspondante conformément à la table déterminée. L'adresse virtuelle à traduire est déterminée au moins en partie en fonction de bits situés après ledit préfixe du mot d'adresse virtuelle qui lui est fourni en entrée. Le bloc de traduction d'adresse est en outre adapté pour fournir les mots traités au second bus d'adresses. Le contrôleur de DMA comprend un registre d'adresse de source, un registre d'adresse de données, un registre de taille et une machine d'états. La machine d'états est adaptée pour détecter au moins un préfixe ayant la première valeur, respectivement un préfixe ayant la seconde valeur, dans un mot d'adresse mis à disposition sur le second bus d'adresses, et pour mémoriser dans un registre choisi parmi le registre de source et le registre de destination, au moins des bits extraits d'un premier emplacement dans un mot d'adresse comportant un préfixe ayant la première valeur, et des bits extraits d'un second emplacement dans un mot d'adresse comportant un préfixe ayant la seconde valeur. Le premier, respectivement second, emplacement est déterminé et situé après chaque préfixe. Le remplissage des registres de source, destination et taille se fait successivement et toujours selon la même séquence. La machine d'état recevant une information sait donc dans quel type de registre la stocker. D'autres caractéristiques et avantages de l'invention apparaîtront encore à la lecture de la description qui va suivre. Celle-ci est purement illustrative et doit être lue en regard des dessins annexés sur lesquels: - la figure 1 est une représentation d'un système sur puce de l'art antérieur; - la figure 2 représente un système sur puce selon un mode de réalisation de l'invention - la figure 3 est une représentation des différentes étapes mises en oeuvre par un programme utilisateur à partir d'une adresse virtuelle, dans un mode de réalisation de l'invention. On considère dans le mode de réalisation ci-après décrit un système sur une puce 1 avec une architecture standard à N bits, dans laquelle une adresse virtuelle se présente sous la forme d'un nombre formant adresse virtuelle de page codée sur les p bits de poids fort ou VPN (en anglais "Virtual Page Number"), suivie par un décalage (en anglais "offset ") dans ladite page codé sur les bits de poids faible. L'architecture considérée par la suite est à 32 bits et utilise des pages de 8 kilooctets. L'invention peut toutefois être mise en oeuvre dans tout type d'architecture comportant des pages de toute dimension. Chaque adresse virtuelle considérée ici comporte donc 19 premiers 30 bits de poids fort (p=19) indiquant la page. Ce VPN est suivi de 13 bits de poids faible indiquant le décalage. Le système sur puce 1 représenté sur la figure 2 et correspondant à un mode de réalisation de l'invention, comprend une unité centrale de traitement ou CPU 2. Il comprend également un bloc de traitement d'adresses 3, qui est relié à la CPU 2 par un bus d'adresses virtuelles VA. Le bloc 3 comprend un premier bloc logique 4 adapté pour fournir sélectivement un mot d'adresse de 32 bits fourni en entrée à différents entités du SoC, en fonction de la présence dans le mot, d'un préfixe de valeur pref1 ou pref2 dans les bits de plus fort poids du mot. Le bloc 3 comprend en outre une unité de gestion de mémoire ou MMU 5, deux modules de permutation 7 et 9, et un second bloc logique 8. Le fonctionnement du bloc logique 4 est le suivant: si dans un mot reçu par le bloc logique 4, les bits de plus fort poids sont égaux à pref1, alors le mot est délivré au module de permutation 7. Si dans un mot reçu par le bloc logique 4, les bits de plus fort poids sont égaux à pref2, alors le mot est délivré directement au bus général d'adresses BA. Sinon, le mot est fourni à la MMU 5. De façon standard, la MMU 5 traduit une adresse virtuelle de 32 bits qui lui est fournie en entrée, en réalisant la traduction des bits de plus fort poids uniquement indiquant la page (ici les 19 premiers bits), soit la traduction du VPN en numéro de page physique ou PPN (en anglais "Physical Page Number"), à l'aide d'une table T prédéterminée. La MMU 5 vérifie également que l'application à l'origine de la traduction possède bien les droits correspondants. Le module de permutation 7 permute un nombre N-p de bits de poids fort ( ici 13) d'une adresse de 32 bits fournie en entrée avec les p (soit ici 19) bits de poids faible et délivre l'adresse résultante à la MMU 5 pour traduction. Le second bloc logique 8 est relié à la MMU 5 par un bus d'adresses physiques PA. II est adapté pour fournir sélectivement un mot d'adresse physique qui lui est fourni en entrée, à différents entités du SoC, s'il y a eu détection de la valeur pref1 dans le bloc 4, suivie d'une permutation dans le bloc 7 sur le mot d'adresse virtuelle dont est issu le mot d'adresse physique. Son fonctionnement est le suivant. Si le bloc 7 vient d'effectuer une permutation, alors l'adresse physique sortant de la MMU est délivrée à un module de permutation 9. Sinon, elle est délivrée au bus général d'adresses BA.. Le bloc de permutation 9 permute les p (ici 19) bits de poids fort d'une adresse de 32 bits fournie en entrée avec les N-p (ici 13) bits de poids faible. Les mots d'adresse traités par le bloc de traitement 3 sont délivrés par un bus PA' au bus d'adresses général BA. Le système sur puce 1 comprend en outre un contrôleur de DMA 11, qui comporte un registre de source 12, un registre de destination 14 et un registre de taille 15. II comprend également une machine d'états 16 adaptée pour détecter la présence dans les bits de poids fort d'un mot d'adresse présent sur le bus BA, du préfixe pref1 ou du préfixe pref2, et pour mémoriser dans les registres, des données issues de tels mots. Dans le mode de réalisation particulier ici considéré, le fonctionnement de la machine d'états 16 est le suivant. Elle remplit, pour un même programme de transfert DMA, avec ces données, d'abord un registre de source, puis, le registre de destination, et enfin le registre de taille. Elle est adaptée pour, lorsque les bits de poids fort d'un mot reçu dans le cadre d'un programme donné de transfert DMA, sont égaux au préfixe de valeur prefl, mémoriser les 19 derniers bits du mot reçu dans les bits de poids fort du registre de source ou de destination en cours de remplissage. Et quand les bits de poids fort d'un mot reçu sont égaux au préfixe de valeur pref2, mémoriser les 13 bits suivant le préfixe dans le mot reçu, comme bits de poids faible du registre en cours de remplissage. Une fois le registre ainsi rempli, la machine d'états passe en cas de réception de données relatif au programme précédent, au remplissage du prochain registre à remplir (suivant la séquence source/destination/taille). Le bus d'adresses général BA interconnecte le bloc 3, le contrôleur de DMA 11, la CPU 2, des dispositifs périphériques DP, une mémoire RAM etc. De la même façon, un bus de données BD interconnecte ces différentes entités. Les nombres (13,19,32) apparaissant à proximité des bus de liaison sur la figure 2 indiquent le nombre de bits des mots transitant sur ces bus. Dans un mode de réalisation de l'invention, un programme utilisateur P s'exécute en mode utilisateur dans le SoC 1. II requiert une programmation du contrôleur de DMA afin d'effectuer un transfert. Un tel programme P est par exemple un pilote (en anglais "driver") DMA. Etant donné que certains drivers DMA peuvent maintenant être téléchargés sur Internet et sont par conséquent susceptibles d'être corrompus, on les fait s'exécuter en mode utilisateur et non plus en mode privilégié. Le programme P, à l'étape référencée 30 à la figure 3, découpe une adresse virtuelle A de source de transfert DMA en deux champs Cl et C2. Le premier champ Cl comporte les 19 bits de poids fort indiquant la page VPN1. Le second champ C2 comporte les 13 bits de poids faibles indiquant le décalage. Dans une étape 31, le programme utilisateur P crée un premier mot Al de 32 bits comprenant un préfixe de 13 bits ayant une première valeur pref1, suivi du champ Cl de 19 bits. Il crée également un second mot A2 de 32 bits comprenant un préfixe de 13 bits ayant une seconde valeur pref2 (différent de pref1 dans le mode de réalisation considéré), suivi du champ C2, complété de 6 bits quelconques de poids faible. Les valeurs pref1 et pref2 ont été déterminées lors d'une étape préalable de définition des règles de programmation DMA. Dans une étape 32, le programme utilisateur effectue une programmation de contrôleur de DMA à l'aide de deux instructions de mémorisation successives comportant les arguments d'adresse et de données suivants: instruction Il: STORE x @ Al; et instruction 12: STORE x @ A2. L'information x peut, dans des modes de réalisation, être un identifiant du programme utilisateur P, c'est-à-dire que l'ensemble des instructions de mémorisation effectuées pour un transfert DMA requis par un même programme utilisateur et relatives à la mémorisation des informations de source, de destination et de taille vont comporter le même identifiant x. Ces instructions sont ensuite traitées séquentiellement, ainsi qu'il va maintenant être expliqué en référence à la figure 2, par la CPU 2. La CPU 2, traitant chacune de ces instructions, délivre l'information x sur le bus de données BD par l'intermédiaire du bus de données DATA. D'autre part, l'adresse Al, puis l'adresse A2, sont envoyées successivement par la CPU 2 au bloc logique d'acheminement 4 du bloc de traitement 3, lors du traitement de l'instruction I1, puis de l'instruction 12. Comme l'adresse virtuelle Al comporte un préfixe ayant la valeur prefl, elle est délivrée par le bloc d'acheminement 4 au module de permutation 7, qui délivre en sortie le mot d'adresse virtuelle Al' à la MMU 5. Le mot d'adresse Al', comportant 32 bits, comprend ainsi comme bits de poids le plus fort les 19 bits du VPN issu du mot Al, qui sont suivis des bits du préfixe de valeur prefl. Dans la MMU 5, le mot Al' est traduit en un mot Al" conformément à la table T, en fonction des 19 bits de poids fort. Le mot d'adresse Al", comportant 32 bits, comprend ainsi comme bits de poids le plus fort, les 19 bits du PPNI fourni par la table, et comme bits de plus faible poids bits, ceux codant la valeur prefl du préfixe. Puis le mot d'adresse AI" est fourni par l'intermédiaire du bus PA au bloc logique 8, qui, sachant que le bloc 7 a effectué une permutation, délivre Al" au module de permutation 9. Ce module de permutation 9 délivre sur le bus BA un mot AI"' qui comprend 13 bits de plus fort poids égaux au préfixe de valeur prefl, et 19 bits de plus faible poids égaux à PPN1. Concernant l'adresse virtuelle A2 délivrée par la CPU 2 au bloc de traitement 3, comme elle comporte des bits de plus fort poids correspondant au codage de la valeur pref2, elle est délivrée par le bloc d'acheminement 4 directement au bus d'adresses général BA, par exemple par un équipement de dérivation (en anglais " by-pass". La machine d'états 16 du contrôleur de DMA II va détecter la présence de prefl dans les bits de plus fort poids de Al"' présent sur le bus BA et va ainsi remplir les 19 premiers bits du registre de source avec PPN1; puis elle va détecter la présence de pref2 dans les bits de plus fort poids de A2 lors de son application sur le bus BA et va remplir les 13 bits suivant PPN1 dans le registre de source, avec le champ Cl correspondant au décalage. La programmation du registre de source du contrôleur de DMA est ainsi effectuée. Le remplissage du registre de destination se déroule de façon similaire à celle présentée ci-dessus pour le registre de source. Les informations pour remplir le registre de taille peuvent être fournies par une instruction de l'art antérieur du type STORE size @ dma_size_reg_adr. La machine d'états 16 sera avertie par la présence sur le bus BA des données d'adresse physique correspondant à l'adresse virtuelle dma_size_reg, que des données présentes sur le bus de données BD sont à stocker dans le registre de taille. Par ailleurs, dans un mode de réalisation, l'argument de données x fourni au contrôleur de DMA sur le bus BD parallèlement à la transmission sur le bus général d'adresses BA, de l'adresse de source et également parallèlement à la transmission sur le bus BA de destination, est adapté pour permettre à la machine d'états de garantir l'atomicité des différentes instructions correspondant à une même programmation du contrôleur de DMA comportant une adresse de source, une adresse de destination et une taille. Cette caractéristique lui permet notamment, lorsqu'elle a la possibilité de renseigner en parallèle plusieurs triplets de registres de type source, destination et taille pour plusieurs programmes, de renseigner les bons registres. Dans ce cas, la machine d'états choisit le triplet de registres à remplir, lors de la réception d'informations sur le bus d'adresses général, en fonction de l'argument x présent simultanément sur le bus de données général. Dans un mode de réalisation, x sera pris égal à l'ASID. Par rapport à la méthode d'adressage implicite selon l'art antérieur, la détection par la machine d'états du contrôleur de DMA ne se fait plus sur la valeur d'un seul bit à 1, mais sur la présence de deux préfixes ici de 13 bits. Par rapport au fonctionnement selon l'art antérieur, il y a au niveau de la machine d'états, deux étapes, et non une seule pour remplir un registre. Par ailleurs, les blocs logiques 4 et 8 peuvent être réalisés par un premier dispositif de commande logique détectant le préfixe de valeur pref1 et commandant en fonction les deux blocs de permutation 7 et 9, et par un second dispositif de commande logique détectant le préfixe de valeur pref2 et commandant en fonction le by-pass. Dans des modes de réalisation, les composants correspondant au bloc logique 4 pourront être intégrés au composant dans lequel est réalisée la CPU 2, ou encore au composant dans lequel est réalisée la MMU 5. Dans des modes de réalisation, les composants correspondant au bloc logique 8 pourront être intégrés au composant dans lequel est réalisée la MMU 5, ou encore au composant dans lequel est réalisée le bus d'adresses physiques PA' . Ainsi il apparaît du mode de réalisation présenté cidessus, que l'invention permet de réaliser une programmation de contrôleur de DMA ne laissant pas le programme utilisateur P manipuler des adresses physiques et permettant en outre un contrôle des droits qu'il détient parla MMU. Le programme P n'a pas directement accès aux registres du contrôleur de DMA et ne peut donc y écrire ce qu'il souhaite. Par rapport aux techniques d'adressage implicite de l'art antérieur, il permet de perdre beaucoup moins d'espace disponible. En effet, dans le cas présenté ci-dessus, avec deux préfixes pref1 et pref2 distincts, on perd 2x2"19 emplacements mémoires, ce qui est bien inférieur à la perte selon les techniques d'adressage implicite réalisées conformément à l'art antérieur. L'invention permet en outre de ne pas provoquer de ralentissement 20 significatif des traitements réalisés par la MMU 5 sur des adresses non destinées au contrôleur de DMA. L'invention ne nécessite pas la création de nouvelles instructions. Elle utilise une instruction existante deux fois (ou plus, si on découpe en plus de deux champs) quand dans l'art antérieur on ne l'utilisait qu'une fois, pour programmer une adresse de source (ou de destination). Le mode de réalisation présenté ci-dessus est particulièrement avantageux, puisqu'il permet d'utiliser un système sur puce composé d'une CPU, d'une MMU et d'un contrôleur de DMA standards, et comportant simplement quelques composants supplémentaires (deux dispositifs de permutation, un by-pass) et une machine d'états de contrôleur de DMA adaptée. Dans un autre mode de réalisation, on utilisera une seule valeur de préfixe, c'est-à-dire pref1 sera égal à pref2. Le système sur puce sera alors adapté pour traiter un premier mot reçu pour une programmation du contrôleur de DMA présentant le préfixe unique comme indiqué ci-dessus pour Al, et pour traiter comme indiqué pour A2 ci-dessus, le mot arrivant pour une programmation du contrôleur de DMA après ce premier mot. Dans ce cas, il n'y a plus besoin de mécanisme de détection de deuxième valeur de préfixe, ni de by-pass. On traite l'arrivée du premier mot avec le préfixe, comme mot présentant un préfixe ayant la première valeur et on traite l'arrivée du second mot présentant le préfixe, comme mot présentant un préfixe ayant la seconde valeur. Par ailleurs, dans le mode de réalisation décrit en référence aux figures 2 et 3, une adresse virtuelle A de source ou de destination donne lieu à deux instructions de mémorisation implicite avec comme arguments. d'adresse deux mots d'adresse Al et A2 créés en fonction de A. Dans d'autres modes de réalisation, on découpe l'adresse A en un nombre de champs supérieur à 2. Le nombre de préfixes pourra alors être plus grand que 2 également. On exécutera autant d'instructions implicites que de champs. Chaque instruction comportera comme argument d'adresse, un mot de N bits (si l'architecture est à N bits) créé à partir d'un préfixe et d'un champ éventuellement complété par d'autres bits. De la sorte, un ou des préfixes utilisés pourront comporter un nombre de bits plus grands que la taille du décalage; la perte d'espace mémoire sera encore réduite. Cependant, les modifications à apporter aux composants standards (MMU, CPU, bus, contrôleur de DMA) du SoC seront plus importantes, notamment pour procéder à la reconstruction dans les registres du mot traduit. Et si le VPN ne se retrouve pas entier dans un des mots créés, il faudra un dispositif pour reconstruire le VPN avant de le faire traduire par la MMU. Dans le mode de réalisation décrit en référence aux figures 2 et 3, les champs sont insérés de manière compacte juste après le préfixe. Dans d'autres modes de réalisation, le placement des bits du champ dans le mot crée peut être différent. Le SoC et la machine d'états du contrôleur de DMA sont à adapter en conséquence. Dans un autre mode de réalisation où le découpage par le programme utilisateur est similaire à celui décrit en référence aux figures par le programme P, le SoC peut comporter une MMU spécifique vers laquelle on dirige les mots crées comportant le VPN, par exemple Al et qui est conçue pour traduire directement de tels mots. Elle effectuera les traductions conformément à la table T utilisée par la MMU 5, mais prendra en considération pour ce faire les 19 derniers bits, et non les 19 premiers bits du mot en entrée. Les moyens de permutation ne sont alors plus utiles et le mot d'adresse Al n'a alors plus besoin d'être fourni à être fourni à la MMU standard 5. REVENDICATIONS 1. Procédé de traitement d'une adresse virtuelle (A) par un processus (P) comportant une programmation de contrôleur de DMA et adapté pour s'exécuter en mode utilisateur sur un système sur puce (1) comportant une unité centrale de traitement (2), une unité de gestion de mémoire (5) et un contrôleur de DMA (11), ladite adresse virtuelle étant une adresse parmi une adresse virtuelle de source et une adresse virtuelle de destination et ayant une taille de N bits, ledit procédé comprenant les étapes suivantes: - on découpe l'adresse virtuelle en au moins deux champs de bits (Cl, C2); - pour chaque champ, on crée un mot d'adresse (Al, A2) de N bits, comprenant d'une part un préfixe (prefl, pref2) de valeur donnée associé au champ et comportant un nombre de bits strictement supérieur à 1 et d'autre part ledit champ; - on effectue une programmation du contrôleur de DMA à l'aide d'instructions de mémorisation (I1, 12) et comportant, pour chacun des mots d'adresse créés, une instruction de mémorisation respective relative audit mot d'adresse. 2. Procédé selon la revendication 1, selon lequel ladite adresse virtuelle comporte un nombre p de premiers bits qui déterminent une page suivis d'un nombre N p de bits qui déterminent un décalage dans ladite page. 3. Procédé selon la revendication 2, selon lequel on découpe l'adresse virtuelle en deux champs (Cl, C2), un premier champ de l'adresse virtuelle comportant au moins les p bits déterminant la page et un second champ de l'adresse virtuelle comportant au moins les N-p bits déterminant le décalage; et selon lequel: - on crée un premier mot d'adresse (Al) de N bits constitué d'un préfixe ayant une première valeur donnée (prefl) et du premier champ (Cl) ; 2871908 17 - on crée un second mot d'adresse (A2) de N bits comprenant un préfixe ayant une seconde valeur donnée (pref2) et le second champ (C2) ; - on effectue une programmation du contrôleur de DMA à l'aide d'au moins une première instruction de mémorisation (Il) relative au premier mot d'adresse, et d'une seconde instruction de mémorisation (12) relative au second mot d'adresse. 4. Procédé selon la revendication 2 ou la revendication 3, selon lequel une instruction de mémorisation est une instruction comportant un argument de données (x) destiné à être placé sur un bus de données (data) et un argument d'adresses destiné à être placé sur un bus d'adresses (VA), et l'argument d'adresses de l'instruction de mémorisation comprend un mot d'adresse (Al, A2) créé débutant par l'un des préfixes (pref1, pref2) et comprenant l'un des champs (Cl, C2) après le préfixe. 5. Procédé selon l'une quelconque des revendications précédentes, selon lequel une instruction de mémorisation (11,12) relative à un mot d'adresse créé (Al, A2) comprenant l'un des préfixes (pref1, pref2) et l'un des champs (Cl, C2), est une instruction de mémorisation de type à adressage implicite basée sur ledit préfixe. 6. Procédé selon l'une quelconque des revendications 3 à 5, selon lequel le premier champ (Cl) est constitué exclusivement des p bits déterminant la page. 7. Procédé selon l'une quelconque des revendications 3 à 5, selon lequel le second champ (C2) est constitué exclusivement des N-p bits déterminant le décalage. 8. Procédé selon l'une quelconque des revendications précédentes, selon lequel on utilise pour chaque champ le même préfixe. 9. Programme d'ordinateur (P) comportant une programmation de contrôleur de DMA à partir d'une adresse virtuelle (A) parmi une adresse virtuelle de source et une adresse virtuelle de destination, ayant une taille de N bits, ledit programme d'ordinateur étant adapté pour s'exécuter en mode utilisateur sur un système sur puce (1) comportant une unité centrale de traitement (2), une unité de gestion de mémoire (5) et un contrôleur de DMA (11), ledit programme comprenant des instructions pour mettre en oeuvre les étapes d'un procédé selon l'une quelconque des revendications précédentes. 10. Système sur puce (1) comprenant: - une unité centrale de traitement (2) adaptée pour, lors de l'exécution en mode utilisateur d'une instruction de mémorisation (I1, 12) comportant au moins un argument d'adresses (AI, A2), fournir l'argument d'adresses à un bloc de traitement d'adresses (3) par l'intermédiaire d'un premier bus d'adresses (VA), - le bloc de traitement d'adresse (3) comprenant: - un premier module (7) adapté pour réaliser des traitements sur des mots d'adresse (Al) ayant une première valeur de préfixe (pref1) codée sur un nombre de bits strictement supérieur à 1, - une unité de gestion de mémoire (5), adaptée pour traduire conformément à une table déterminée (T), un mot d'adresse virtuelle (A1') comportant N bits fourni en entrée en un mot d'adresse physique correspondant (Al "), - des moyens d'acheminement (4) adaptés pour détecter au moins la première valeur de préfixe (pref1) et une seconde valeur de préfixe donnée (pref2) codée sur un nombre de bits strictement supérieur à 1, dans un mot d'adresse virtuelle (Al, A2) fourni en entrée et pour fournir sélectivement le mot d'adresse à un élément sélectionné parmi l'unité de gestion de mémoire (5), le premier module (7) du bloc de traitement d'adresse et un second bus d'adresses (BA), ledit bloc de traitement d'adresse (3) étant adapté en outre pour, à partir d'un mot d'adresse virtuelle (Al) fourni en entrée et comportant un préfixe ayant la première valeur, délivrer en sortie un mot d'adresse (Al') comportant un préfixe ayant la première valeur et des bits obtenus suite à une opération de traduction d'adresse virtuelle en adresse physique correspondante (Al") conformément à la table déterminée, l'adresse virtuelle à traduire (A1') étant déterminée au moins en partie en fonction de bits situés après ledit préfixe dans ledit mot d'adresse virtuelle (Al) fourni en entrée; ledit bloc de traduction d'adresse étant en outre adapté pour fournir les mots traités au second bus d'adresses (BA) ; - un contrôleur de DMA (11) qui comprend un registre (12) d'adresse de source, un registre (14) d'adresse de données, un registre (15) de taille et une machine d'états (16), ladite machine d'états étant adaptée pour détecter au moins un préfixe ayant la première valeur (prefl), respectivement un préfixe ayant la seconde valeur (pref2), dans un mot d'adresse (Al, A2) mis à disposition sur le second bus d'adresses (BA), et pour mémoriser dans un registre choisi parmi le registre de source et le registre de destination, au moins des bits extraits d'un premier emplacement dans un mot d'adresse comportant un préfixe ayant la première valeur, et des bits extraits d'un second emplacement dans un mot d'adresse comportant un préfixe ayant la seconde valeur, ledit premier, respectivement second, emplacement étant déterminé et situé après lesdits préfixes respectifs. 11. Système sur puce (1) selon la revendication 10, dans lequel l'unité de gestion de mémoire (5) est adaptée pour traduire un mot d'adresse virtuelle (A1') fourni en entrée en un mot d'adresse physique correspondant (Al") en fonction d'un nombre p de premiers bits du mot d'adresse virtuelle qui déterminent une page. 12. Système sur puce (1) selon la revendication 11, dans lequel la machine d'états (16) du contrôleur de DMA (11) est adaptée pour extraire un nombre p de bits suivant le préfixe d'un mot d'adresse (Al "') dont ledit préfixe présente la première valeur (pref1). 13. Système sur puce (1) selon la revendication 11 ou la revendication 12, dans lequel la machine d'états (16) du contrôleur de DMA (11) est adaptée pour extraire un nombre N-p de bits suivant le préfixe d'un mot d'adresse (A2) dont ledit préfixe présente la seconde valeur (pref2). 14. Système sur puce (1) selon l'une quelconque des revendications 10 à 13, dans lequel le premier module (7) comprend des premiers moyens de permutation adaptés pour permuter le groupe constitué des N-p premiers bits d'un mot d'adresse virtuelle fourni en entrée avec le groupe constitué des p bits suivants dudit mot d'adresse virtuelle, et pour fournir le mot (A1') d'adresse virtuelle résultant à l'unité de gestion de mémoire (5). 15. Système sur puce (1) selon la revendication 14, dans lequel le bloc de traitement d'adresses (3) comprend un second module (8) auquel sont adressés les mots (Al") d'adresse physique résultant de la traduction de mots d'adresse virtuelle respectifs correspondants par l'unité de gestion de mémoire (5), ledit second module comprenant des moyens pour déterminer si une permutation a été effectuée par les premiers moyens de permutation (7) sur le mot d'adresse virtuelle correspondant au mot d'adresse physique en entrée, et des seconds moyens de permutation (9) pour permuter le groupe constitué des p premiers bits avec le groupe constitué des N-p suivants dans un mot (Al") fourni par le second module en cas de détermination d'une permutation par le second module et pour mettre à disposition le mot d'adresse résultant (A1 "') sur le second bus d'adresses (BA). 16. Système sur puce (1) selon l'une quelconque des revendications 10 à 15, dans lequel l'unité de gestion de mémoire (5) et l'unité centrale de traitement (2) sont comprises dans des composants respectifs, et au moins un élément parmi le premier module (7) et les moyens d'acheminement (4) est au moins partiellement intégré à un composant parmi le composant comprenant l'unité de gestion de mémoire et le composant comprenant l'unité centrale. 17. Système sur puce (1) selon l'une quelconque des revendications 15 à 16, dans lequel l'unité de gestion de mémoire (5) et un troisième bus d'adresses (PA') sont compris dans des composants respectifs, et au moins un élément parmi le second module (8) et les seconds moyens de permutation (9) est au moins partiellement intégré à un composant parmi le composant comprenant ledit troisième bus et le composant comprenant l'unité de gestion de mémoire (5). 18. Système sur puce (1) selon l'une quelconque des revendications 10 à 17, dans lequel les moyens d'acheminement (4) comprennent un dispositif de dérivation adapté pour fournir un mot d'adresse fourni en entrée directement au second bus d'adresses (BA) en cas de non détection de la première valeur de préfixe, ni de la seconde valeur de préfixe. 19. Système sur puce (1) selon l'une quelconque des revendications 9 à 13, dans lequel le premier module (7) du bloc de traitement d'adresses (3) comprend une unité de gestion de mémoire spécifique, ladite unité de gestion de mémoire spécifique est adaptée pour, à partir d'un mot d'adresse virtuelle (Al) fourni en entrée comportant un préfixe ayant la première valeur, délivrer un mot d'adresse comportant un préfixe ayant la première valeur et des bits obtenus suite à une opération de traduction d'adresse virtuelle en adresse physique correspondante conformément à la table déterminée (T), l'adresse virtuelle à traduire étant déterminée au moins en partie en fonction de bits déterminés dudit mot d'adresse virtuelle fourni en entrée qui sont situés après ledit préfixe. 20. Système sur puce (1) selon l'une quelconque des revendications 10 à 19, dans lequel la machine d'états (16) du contrôleur de DMA (11) est adaptée pour sélectionner le registre pour la mémorisation en fonction au moins d'une information (x) appliquée par l'unité centrale de traitement (2) sur un bus de données (BD) reliant le contrôleur de DMA et l'unité centrale de traitement (2).