Brevet FR2820223A1 — publié le 20020802

MICROPROCESSEUR COMPRENANT DES MOYENS DE GESTION ET D'ACCES A UN ESPACE ADRESSABLE PAGINE La présente invention concerne les microprocesseurs et plus particulièrement les mécanismes d'accès à la mémoire adressable par les microprocesseurs. Les mémoires utilisées par les microprocesseurs ou les microcontrôleurs comprennent généralement une pluralité d'emplacements mémoire, chaque emplacement pouvant être utilisé pour stocker une donnée. Pour accéder à un emplacement mémoire en lecture ou en écriture, le microprocesseur doit générer une adresse correspondant à l'emplacement mémoire et l'envoyer sur un bus d'adresse reliant le microprocesseur à la mémoire. Il apparaît donc qu'une adresse mémoire doit être constituée d'un nombre de bits suffisant pour identifier de manière unique chaque emplacement mémoire accessible par le microprocesseur. Par exemple, une mémoire de 64 kilo-octets nécessite 16 bits d'adresse pour que chaque emplacement de cette mémoire puisse être identifié de manière unique. Comme la taille des mémoires tend à augmenter à coût constant, on cherche à augmenter la taille de l'espace adressable accessible par le microprocesseur. Pour ce faire, il faut doter le microprocesseur d'un bus d'adresse ayant un nombre de lignes correspondant, ce qui entraîne inévitablement une augmentation de la complexité du microprocesseur tant au niveau de sa structure que de son registre de commandes. Pour augmenter l'espace adressable par un microprocesseur sans toutefois augmenter notablement sa structure, on a déjà proposé d'intégrer dans l'unité de traitement du microprocesseur un registre de page ou de segment contenant les bits de poids fort supplémentaires qui sont concaténées avec les adresses générées par le microprocesseur pour augmenter l'espace adressable par ce dernier. Toutefois, cette solution nécessite d'ajouter au registre de commandes du microprocesseur des commandes supplémentaires pour gérer le registre de page ou de segment. La présente invention a pour but de supprimer ces inconvénients en proposant un microprocesseur à structure simplifiée pour accéder à une mémoire paginée. Cet objectif est atteint par la prévision d'un microprocesseur comprenant une unité de traitement, ainsi qu'un bus de donnée et un bus d'adresse, reliés à l'unité de traitement, pour accéder à un espace mémoire comprenant un espace de mémoire programme ayant une taille supérieure à la capacité d'adressage du bus d'adresse, caractérisé en ce que l'espace de mémoire programme est divisé en pages dont la taille est inférieure à la capacité d'adressage du bus d'adresse, un numéro de page étant mémorisé dans un registre de page, et en ce que le microprocesseur comprend en outre des moyens pour concaténer le contenu du registre de page avec les adresses circulant sur le bus d'adresse lorsque celles-ci correspondent à une adresse de l'espace de mémoire programme, pour accéder à un emplacement déterminé de l'espace de mémoire programme. Selon une particularité de l'invention, le registre de page est intégré dans le microprocesseur et relié à l'unité de traitement par l'intermédiaire des bus de données et d'adresse. Alternativement, le registre de page est relié au microprocesseur par un bus d'adresse et un bus de données. Avantageusement, le microprocesseur comprend en outre des moyens pour mettre à zéro le contenu du registre de page lors de son initialisation. Selon une autre particularité de l'invention, le microprocesseur comprend au moins une mémoire programme ayant un port de donnée et un port d'adresse dont les bits de poids faible sont reliés au bus d'adresse du microprocesseur et les bits de poids fort à la sortie du registre de page. De préférence, le bus d'adresse du microprocesseur est sur 16 bits et le registre de page est sur 8 bits, pour effectuer l'adressage d'un espace mémoire de programme sur 24 bits. Selon encore une autre particularité de l'invention, le microprocesseur est relié à une mémoire volatile pour le stockage temporaire de données, des adresses inférieures à une valeur prédéterminée étant attribuées aux emplacements mémoire de la mémoire volatile tandis que des adresses supérieures à ladite valeur prédéterminée sont attribuées aux emplacements mémoire d'une première page de l'espace de mémoire programme. Un autre objet de l'invention est de proposer un procédé d'accès à un espace de mémoire programme paginé accessible par un microprocesseur utilisant un registre de page pour le stockage d'un numéro de page en cours n où se trouvent des instructions en cours d'exécution par le microprocesseur, caractérisé en ce qu'à chaque exécution d'une séquence d'instructions située dans une autre page m que la page en cours n, il comprend les étapes consistant à : - sauvegarder le numéro de la page en cours n, contenu dans le registre de page, - charger dans le registre de page le numéro de m ladite autre page où se trouve ladite séquence d'instructions, ce qui déclenche l'accès du microprocesseur à ladite autre page m, - exécuter ladite séquence d'instructions, et - charger la sauvegarde du contenu du registre de page dans le registre de page, ce qui déclenche le retour de ladite autre m à la page en cours n. Avantageusement, les chargements du registre de page (PR) sont effectués à des adresses mémoire qui coïncident dans les deux pages considérées. De préférence, ladite séquence d'instructions est un sous-programme. Ces objets, caractéristiques et avantages ainsi que d'autres de la présente invention seront exposés plus en détail dans la description suivante d'un microprocesseur, faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : - la figure 1 représente d'une manière schématique et simplifiée la structure d'un microprocesseur selon l'invention ; la figure 2 représente le contenu d'une mémoire programme paginée, illustrant un mécanisme simplifié d'accès à une telle mémoire selon l'invention. La figure 1 représente la structure d'un microprocesseur selon l'invention. Sur cette figure, le microprocesseur 1 comprend une unité de traitement 2 qui est connectée de manière classique à un bus d'adresse 8 et un bus de données 4, destinés être reliés à des mémoires externes 6,7 et d'autres organes périphériques, comportant notamment une mémoire de type RAM 7 et au moins une mémoire non volatile 6, par exemple de type Flash, contenant le programme exécutable et des données à stocker de manière non temporaire. Le bus d'adresse 8 présente un nombre de lignes qui définit d'une manière classique la taille maximale de l'espace adressable accessible. Pour pouvoir accéder à un espace de mémoire programme plus grand que celui qui est accessible par le bus 8, le microprocesseur 1 comprend selon l'invention, un registre de page PR de préférence externe à l'unité de traitement 2, muni d'une sortie reliée aux lignes de poids fort du port d'adresse des mémoires programmes 6, tandis que les lignes de poids faible de ce port d'adresse sont reliées au bus 8 par l'intermédiaire d'un décodeur d'adresse 3. L'unité de traitement 2 comprend par exemple un registre tampon interne d'adresse REGA dans lequel sont présentées les adresses sur 16 bits à accéder, la sortie de ce registre étant reliée au bus 3. L'adresse présentée sur le port d'adresse des mémoires programme 6 provenant donc de la concaténation du contenu des registres PR et REGA. A titre d'exemple, le bus d'adresse 8 de l'unité de traitement 2 est sur 16 bits, le port d'adresse des mémoires programme 6 est sur 24 bits, tandis que le registre de page PR présente une taille de 8 bits. La mémoire RAM, ainsi que les registres gérés par le microprocesseur sont situés dans la partie basse de l'espace adressable par le microprocesseur, par exemple entre les adresses 0000 et OFFF (en hexadécimal), tandis que la mémoire programme se trouve à partir de l'adresse 1000. Le contenu du registre PR est accessible par l'unité de traitement 2 par l'intermédiaire du bus de données 4, une adresse inférieure à 1000 de l'espace adressable par l'unité de traitement 2 étant attribuée à ce registre. Lorsque cette adresse figure sur le bus d'adresse 8, le décodeur d'adresse sélectionne le registre pour être lu ou mis à jour à partir du bus de données 4. Le décodeur d'adresse 3 gère l'accès au contenu du registre PR pour qu'il ne soit utilisé que lorsque l'adresse transitant sur le bus d'adresse 3 concerne une adresse de la mémoire programme, c'est-à-dire, supérieure ou égale à 1000 dans l'exemple précédent, tandis que l'accès a mémoire RAM 7 est fermé. Lorsque l'adresse transmise sur le bus d'adresse 8 est inférieure à 1000, le décodeur d'adresse 3 ouvre l'accès à la mémoire RAM 7. L'espace mémoire réservé aux programmes et données non temporaires se trouve donc réparti en plusieurs pages, chaque page comprenant les adresses situées entre 1000 et FFFF (soit 2l6-2l2 = 61440 emplacements mémoire). Si le registre de page PR est sur 8 bits, le microprocesseur 1 peut adresser 256 pages de cette taille. Par ailleurs, si l'on souhaite assurer une compatibilité entre le microprocesseur 1 et les microprocesseurs ayant une unité de traitement identique, mais ne comportant pas de registre de page PR, et ainsi, que les programmes écrits pour de tels microprocesseurs puissent fonctionner sur le microprocesseur 1, il suffit de prévoir que la procédure d'initialisation du microprocesseur met le contenu du registre PR à zéro. Il faut en outre s'assurer que les programmes en question n'accèdent pas à l'adresse du registre PR. De cette manière, le registre PR reste toujours à zéro si le programme n'a pas prévu de modifier le contenu de ce registre. Bien entendu, le registre PR peut également être réalisé par un registre externe au microprocesseur. Pour illustrer un mécanisme de gestion simplifié du contenu du registre PR selon l'invention, la figure 2 représente une partie du contenu de la mémoire 6 comprenant notamment une page n et une page m dans lesquelles sont stockées des instructions de programme exécutable. Dans la page n, le programme comprend une instruction"CALL"d'appel d'un sous-programme se trouvant à l'adresse 4000 dans la page m. Toutefois, comme l'unité de traitement 2 fonctionne avec des adresses sur 16 bits, l'instruction"CALL 4000"déplace (saut 1 sur la figure 2) le pointeur de programme à l'adresse 4000 de la page courante"n", déterminée par le contenu du registre PR. Pour pouvoir atteindre le sous-programme se trouvant dans la page m, les instructions figurant à l'adresse n-4000 et n-4002 ("LD A, PR" et PUSH A) permettent de sauvegarder (en passant par un registre"A"intermédiaire) le contenu du registre de page PR, dans une zone de la mémoire RAM 7 prévue à cet effet, par exemple dans une pile si le microprocesseur est conçu pour gérer une telle pile. Ensuite, aux adresses n-4003 et n-4005, les instructions "LD A, #m"et"LD PR, A" permettent de charger dans le registre PR le numéro de page m à atteindre. Il en résulte qu'à l'instruction suivante, le pointeur de programme pointe sur l'adresse 4007, non plus dans la page n, mais dans la page m puisque le contenu du registre de page contient la valeur m (saut 2). A l'adresse m-4007 se trouve l'appel du sous- programme"Sub"que l'on cherchait à atteindre (saut 3). La fin du sous-programme est marquée par une instruction de retour"RET"qui positionne le pointeur de programme à l'adresse m-400A qui suit l'instruction d'appel"CALL Sub" (saut 4). A l'adresse m-400A, on exécute une instruction de saut"JRT 4004"qui positionne le pointeur de programme sur l'adresse 4004 (saut 5) où se trouvent des instructions permettant de retourner dans la page"n", à l'instruction suivant la première instruction d'appel de sous-programme"CALL 4000". En particulier, les adresses m-4004 et m-4005 contiennent les instructions"POP A"et"LD PR, A" permettant de recharger le registre PR avec la valeur sauvegardée précédemment dans la pile, à savoir"n", ce qui a pour effet de placer le pointeur de programme qui présente alors la valeur 4007, dans la page n (saut 6), où se trouve une instruction de retour"RET"marquant la fin du sous-programme 4000 (saut 7). Bien entendu, l'instruction d'appel de sousprogramme"CALL Sub"à l'adresse m-4007 peut être remplacée par les instructions du sous-programme, suivie par l'instruction de saut à l'adresse m-4004. Grâce à ces dispositions, le programme principal exécuté par le microprocesseur 1 peut être stocké dans la page 0 de l'espace adressable, et appeler des sousprogrammes répartis dans des pages respectives. Il suffit alors de prévoir les instructions figurant aux adresses n-4000 à n-4007 dans l'exemple de la figure 2, dans chaque page n contenant des appels de sousprogrammes se trouvant dans une autre page et pour chacun de ces sous-programmes. De même, pour chaque sous-programme se trouvant dans une page m, susceptible d'être appelé à partir d'une autre page n, il suffit de prévoir les instructions figurant aux adresses m-4004 et m-4005, en faisant coïncider les valeurs des adresses dans les pages m et n où se trouvent respectivement les instructions de mise à jour de la valeur du registre de page PR, à savoir les adresses 4005 dans les pages m et n. REVENDICATIONS 1. Microprocesseur comprenant une unité de traitement (2), ainsi qu'un bus de donnée (4) et un bus d'adresse (8), reliés à l'unité de traitement, pour accéder à un espace mémoire comprenant un espace de mémoire programme ayant une taille supérieure à la capacité d'adressage du bus d'adresse, caractérisé en ce que l'espace de mémoire programme (6) est divisé en pages dont la taille est inférieure à la capacité d'adressage du bus d'adresse (8), un numéro de page étant mémorisé dans un registre de page (PR), et en ce que le microprocesseur (1) comprend en outre des moyens pour concaténer le contenu du registre de page (PR) avec les adresses circulant sur le bus d'adresse (8) lorsque celles-ci correspondent à une adresse de l'espace de mémoire programme, pour accéder à un emplacement déterminé de l'espace de mémoire programme. 2. Microprocesseur selon la revendication 1, caractérisé en ce que le registre de page (PR) est intégré dans le microprocesseur (1) et relié à l'unité de traitement (2) par l'intermédiaire des bus de données (4) et d'adresse (8). 3. Microprocesseur selon la revendication 1, caractérisé en ce que le registre de page (PR) est relié au microprocesseur (1) par un bus d'adresse et un bus de données. 4. Microprocesseur selon l'une quelconque des revendications 1 à 3, caractérisé en ce qu'il comprend en outre des moyens pour mettre à zéro le contenu du registre de page (PR) lors de son initialisation. 5. Microprocesseur selon l'une quelconque des revendications 1 à 4, caractérisé en ce qu'il comprend au moins une mémoire programme (6) ayant un port de donnée et un port d'adresse dont les bits de poids faible sont reliés au bus d'adresse du microprocesseur et les bits de poids fort à la sortie du registre de page (PR). 6. Microprocesseur selon l'une quelconque des revendications 1 à 5, caractérisé en ce que le bus d'adresse du microprocesseur est sur 16 bits et le registre de page (PR) est sur 8 bits, pour effectuer l'adressage d'un espace mémoire de programme sur 24 bits. 7. Microprocesseur selon l'une quelconque des revendications 1 à 6, caractérisé en ce qu'il est relié à une mémoire volatile (7) pour le stockage temporaire de données, des adresses inférieures à une valeur prédéterminée étant attribuées aux emplacements mémoire de la mémoire volatile tandis que des adresses supérieures à ladite valeur prédéterminée sont attribuées aux emplacements mémoire d'une première page de l'espace de mémoire programme. 8. Procédé d'accès à un espace de mémoire programme divisé en pages, mis en oeuvre par un microprocesseur (1) selon l'une des revendications 1 à 7, le microprocesseur comprenant un registre de page (PR) pour le stockage d'un numéro de page en cours ('lu") où se trouvent des instructions en cours d'exécution par le micro-processeur, caractérisé en ce qu'à chaque exécution d'une séquence d'instructions située dans une autre page ('lu") que la page en cours ("n"), il comprend les étapes consistant à : - sauvegarder le numéro de la page en cours ("n"), contenu dans le registre de page (PR), - charger dans le registre de page (PR) le numéro de ("m") ladite autre page où se trouve ladite séquence d'instructions, ce qui déclenche l'accès du microprocesseur à ladite autre page ("m"), - exécuter ladite séquence d'instructions, et - charger la sauvegarde du contenu du registre de page (PR) dans le registre de page, ce qui déclenche le retour de ladite autre ("m") à la page en cours (ni 9. Procédé selon la revendication 8, caractérisé en ce que les chargements du registre de page (PR) sont effectués à des adresses mémoire ("4005") qui coïncident dans les deux pages ("m"et"n") considérées. 10. Procédé selon la revendication 8 ou 9, caractérisé en ce que ladite séquence d'instructions est un sous-programme.