Brevet FR2687487A1 — publié le 19930820

Système de partage de temps d'accès à une mémoire partagée entre un processeur et d'autres applications. Le domaine de l'invention est celui des systèmes permettant de partager les temps d'accès à une mémoire entre une pluralité d'applications. Il est fréquent de devoir partager une mémoire entre des applications différentes Cette mémoire est par exemple une mémoire vive (RAM) dans laquelle chaque application vient lire et/ou écrire des données Une de ces applications est généralement constituée par un processeur communiquant habituellement avec la mémoire vive à travers un bus d'adresse et un bus de données Lorsque d'autres applications doivent également pouvoir accéder à cette mémoire vive, il est nécessaire de prévoir des dispositions permettant ces accès. De façon connue, le partage d'une mémoire vive est habituellement effectué par accès direct à cette mémoire La mémoire vive constitue de ce fait une mémoire partagée Ce processus, également appelé DMA (Direct Memory Access), permet notamment à une autre application que le processeur, généralement constitué par un microprocesseur, d'accéder très rapidement à la mémoire partagée sans que soient nécessités des cycles d'instructions du microprocesseur permettant un tel accès (lecture ou écriture de données). On connaît différents types d'accès direct mémoire. Un premier type d'accès direct mémoire consiste à suspendre le fonctionnement du microprocesseur par une instruction HALT, mettant les sorties des bus d'adresses et de données du microprocesseur en état haute impédance Ces bus peuvent alors être utilisés par une autre application pour accéder à la mémoire partagée. Cependant, cette méthode implique un ralentissement du fonctionnement du microprocesseur et n'est de ce fait pas adaptée aux systèmes requérant à la fois une importante vitesse de traitement des données et un transfert rapide de données entre cette application et la mémoire partagée. Un second type d'accès direct mémoire est basé sur le vol de cycles Le fonctionnement du microprocesseur est suspendu pendant un cycle d'horloge pendant lequel l'application accède à la mémoire partagée. Cette méthode entraîne donc également un ralentissement du fonctionnement du microprocesseur. Un troisième type d'accès direct mémoire consiste à multiplexer temporellement l'accès à la mémoire partagée entre le microprocesseur et l'application Ce multiplexage temporel est réalisé en employant une mémoire partagée dont le temps de cycle est égal à une fraction du temps d'activation du microprocesseur Par exemple, si le temps d'accès à la mémoire partagée est égal à 560 ns, l'horloge du microprocesseur est réglée à 1,2 gs de telle sorte qu'une autre application puisse également accéder toutes les 1,2 As à la mémoire partagée Ce mode de réalisation permet d'effectuer des accès à la mémoire partagée sans modifier le fonctionnement du microprocesseur, les accès de l'application à la mémoire étant transparents pour ce dernier. Cependant, lorsque les accès à la mémoire partagée doivent pouvoir être effectués à haut débit et que le microprocesseur doit également pouvoir traiter des données à sa fréquence de fonctionnement maximale, imposée par un quartz, il n'est pas toujours possible de diminuer cette vitesse de fonctionnement Cette méthode revient donc à ralentir le fonctionnement du microprocesseur pour permettre des accès à la mémoire partagée. En conclusion, les processus d'accès direct mémoire existants impliquent tous la suspension du traitement des données par le microprocesseur, ou alors un ralentissement de ce traitement, pour permettre un échange de données entre une application et la mémoire partagée. La présente invention a notamment pour objectif de pallier ces inconvénients. Plu S précisément, un des objectifs de l'invention est de fournir un système de partage de temps d'accès à une mémoire commune pour au moins deux applications, le microprocesseur constituant une de ces applications, ces transferts d'accès direct mémoire étant réalisés sans ralentir le fonctionnement du microprocesseur. Cet objectif, ainsi que d'autres qui apparaîtront par la suite, est atteint grâce à un système de partage de temps d'accès à une mémoire partagée entre au moins une application et un processeur, le processeur coopérant, par l'intermédiaire d'un premier bus, avec une mémoire de code comprenant des instructions de programme devant être exécutées par le processeur, le processeur coopérant également avec la mémoire partagée pour y lire et/ou écrire des données, un signal d'accès à la mémoire de code étant généré par le processeur ou par des moyens de génération coopérant avec le processeur lorsque le processeur accède à la mémoire de code, cette application devant également pouvoir accéder à la mémoire partagée pour y lire et/ou écrire des données par l'intermédiaire d'un deuxième bus, le système comprenant un gestionnaire d'accès placé entre d'une part les premier et deuxième bus et d'autre part un troisième bus relié à la mémoire partagée, le gestionnaire d'accès effectuant une commutation du premier bus sur le troisième bus lorsque le signal d'accès est absent, de façon à permettre au processeur d'accéder à la mémoire partagée, et une commutation du deuxième bus sur le troisième bus lorsque le signal d'accès est présent, de façon à permettre à l'application d'accéder à la mémoire partagée. Le système de l'invention permet ainsi à une application d'accéder à la mémoire partagée pendant que le processeur accède à sa mémoire de code Le fonctionnement du processeur n'est de ce fait pas ralenti et le transfert de données entre l'application et la mémoire partagée est transparent pour le processeur. Selon un mode de réalisation préférentiel de l'invention, le processeur est constitué par un microcontrôleur comprenant le générateur du signal d'accès à la mémoire de code. Avantageusement, le signal d'accès à la mémoire de code est du type PSEN généré par un microcontrôleur de la famille 8031 d'INTEL (marque déposée). Selon un autre mode de réalisation, le processeur est constitué par un microprocesseur et le signal d'accès à la mémoire de code est constitué par un signal de type "Chip Select" généré par un décodeur d'adresses externe au microprocesseur et constituant le générateur du signal d'accès à la mémoire de code. Le système de l'invention est donc applicable à tout type de microprocesseur. Préférentiellement, le gestionnaire d'accès comprend des drivers tri-state réalisant la commutation. Une mémoire tampon est avantageusement insérée entre l'application et le gestionnaire d'accès pour réaliser une fonction d'adaptation de débit. D'autres caractéristiques et avantages apparaîtront à la lecture de la description suivante d'un mode de réalisation préférentiel de l'invention, donné à titre illustratif et non limitatif, et des dessins annexés dans lesquels: la figure 1 est un bloc diagramme d'un système de transfert de données mettant en oeuvre un processeur et une application se partageant une mémoire commune, selon un mode de réalisation préférentiel de l'invention; la figure 2 est un chronogramme représentant le partage temporel de l'accès à la mémoire partagée entre le processeur et l'application de la figure 1, ce processeur étant constitué par un microcontrôleur de la famille 8031 d'INTEL (marque déposée); la figure 3 est un chronogramme montrant deux accès successifs à la mémoire partagée, effectués pendant un accès unique du processeur à sa mémoire morte. La figure 1 est un bloc diagramme d'un mode de réalisation préférentiel de l'invention o un processeur et une autre application se partagent une mémoire commune, ci- après appelée mémoire partagée. L'invention repose sur l'exploitation du principe que, pendant que le processeur accède à sa mémoire de code, typiquement constituée par une mémoire morte (ROM), la mémoire partagée (RAM) n'est pas utilisée par ce processeur. Il est donc possible à une autre application, pendant ces temps d'accès à la mémoire ROM par le processeur, d'adresser la mémoire RAM pour y lire et/ou écrire des données. La figure 1 montre un processeur 10 raccordé par un premier bus 15 d'adresses et de données à une mémoire de code 14 (ROM) Ce bus véhicule également des signaux de commande de type Read et Write La mémoire de code 14 est une mémoire morte et comporte des instructions de programme. Le processeur 10 accède à cette mémoire morte 14 pour y lire ces instructions et les exécuter Le premier bus 15 est également connecté à un port d'un gestionnaire d'accès 13 pour pouvoir accéder à une mémoire partagée 12 Le système comprend également une application il qui doit pouvoir accéder à la mémoire partagée 12 Elle comprend pour cela un bus 19 d'adresses, de données et de signaux de contrôle, constituant un deuxième bus du système, connecté à un autre port du gestionnaire d'accès 13 Le gestionnaire d'accès 13 se comporte comme un commutateur de bus, c'est à dire qu'il permet à l'application il d'accéder à la mémoire partagée 12 lorsque, le processeur 10 accède à sa mémoire morte 14 La mémoire partagée 12 est raccordée pour cela à -un troisième port constituant un "point commun" du commutateur ainsi constitué par un troisième bus 16 Un accès du processeur 10 à la mémoire morte 14 est détecté par la génération d'un signal d'accès à la ROM, véhiculé sur une liaison de commande 17 Ce signal est appliqué à la fois au gestionnaire d'accès 13 et à la ROM 14. Le signal d'accès à la ROM est par exemple un niveau logique constituant un signal de sélection (Chip Select) destiné à la mémoire ROM 14 Ce signal est alors issu de moyens 18 de décodage d'adresse, constituant des moyens de génération du signal d'accès à la ROM par le processeur, connectés en parallèle sur le bus d'adresses du processeur , constitué par un microprocesseur, et passe à l'état actif dès que le microprocesseur 10 accède à la ROM 14. Selon un autre mode de réalisation, le signal de sélection est un signal de type PSEN généré directement par le processeur 10 Le processeur est alors un microcontrôleur et les moyens de décodage 18 sont inutiles Les signaux de type PSEN sont propres aux microcontrôleurs de la famille 8031 d'INTEL (marque déposée), microcontrôleurs 8 bits, et signalent un accès du microcontrôleur 10 au code contenu dans la ROM 14 Ce signal PSEN agit de la même manière qu'un signal de sélection de la ROM 14, c'est à dire qu'il est équivalent à un signal "chip Select". Lorsqu'un tel accès à la ROM 14 est effectué par le processeur 10, le gestionnaire d'accès 13 reçoit le signal d'accès à la ROM 14 véhiculé sur la liaison de commande 17. Le gestionnaire d'accès 13 effectue alors une commutation de ses ports, de façon à connecter le bus 16 d'adresses et de données au troisième bus 19 d'adresse et de données, comme représenté en traits discontinus L'application 11, par exemple constituée par un autre processeur (microprocesseur ou microcontrôleur), peut alors accéder à la mémoire partagée 12 pour y écrire et/ou lire des données Le gestionnaire d'accès 13 assure également une commutation des signaux de contrôle (Read et Write) en provenance du microcontrôleur vers la mémoire RAM, lorsque le microcontrôleur n'accède pas à son code, et gère les signaux d'échange entre l'application il et la RAM lorsque le microcontrôleur accède à son code L'application 11 voit alors le gestionnaire d'accès 13 comme une mémoire Lorsque le processeur 10 a terminé son accès à la ROM 14, le signal d'accès à la ROM disparaît et le gestionnaire d'accès 13 rétablit la liaison entre le premier bus 15 et le troisième bus 16, de telle sorte que le processeur 10 puisse accéder à la mémoire partagée 12. Le gestionnaire d'accès 13 assurant l'aiguillage des adresses, des données et la gestion des signaux de contrôle est par exemple constitué par des drivers tri-state bidirectionnels pour les données et monodirectionnels pour les adresses et les signaux de contrôle Le sens de circulation des données est déterminé par les signaux de lecture et d'écriture générés par l'application et le processeur Il est ainsi possible au processeur 10 et à l'application il à la fois de lire et d'écrire dans la mémoire partagée 12 Bien entendu, ce mode de réalisation n'est donné qu'à titre indicatif et d'autres modes de réalisation sont possibles. Comme l'accès à la mémoire partagée 12 est effectué par l'application il pendant que le processeur 10 accède à son code mémorisé dans la ROM 14, le fonctionnement du processeur 10 n'est pas ralenti. Le processeur 10 effectue obligatoirement un certain nombre d'accès à son code et ces périodes d'accès sont exploitées dans la présente invention puisque la RAM n'est pas utilisée Le déroulement du programme mémorisé dans la ROM autorise donc nécessairement la mise en oeuvre de l'invention Cependant, lorsque les instructions mémorisées dans la mémoire de code 14 nécessitent de fréquents accès du processeur 10 à la mémoire partagée 12, le débit de données pouvant être transférées entre l'application il et cette mémoire partagée 12 s'en trouve affecté. La figure 2 est un chronogramme représentant le partage temporel de l'accès à la mémoire partagée 12 entre le processeur 10 et l'application il pour une instruction de programme nécessitant un temps d'accès du processeur 10 à la mémoire partagée 12 de valeur importante. Ce chronogramme correspond à l'exécution d'une instruction MOVX @DPTR,A par un microcontrôleur 80 C 154 de la famille 80 C 31 d'INTEL (marque déposée) Comme il sera décrit par la suite, cette instruction de programme est l'une des plus défavorables pour la mise en oeuvre de l'invention. Elle fait en effet intervenir un temps maximal entre deux signaux PSEN consécutifs et c'est donc en se basant sur ce type d'instruction que l'on pourra déterminer le débit minimal garanti pour le transfert de données entre l'application et la mémoire RAM partagée Lors de l'exécution de cette instruction, le microcontrôleur transfère les données de l'accumulateur A vers la mémoire partagée à l'adresse contenue dans un registre DPTR 16 bits interne au microcontrôleur Cette opération consiste donc à écrire une donnée en mémoire partagée et nécessite deux cycles M 1,M 2 processeur constitués chacun de six sous-temps Si à 56 Le signal XTAL 1 est celui généré par le quartz et chaque sous-temps nécessite deux périodes d'horloge Le microcontrôleur comporte deux ports PORT 0 et PORT 2 et les adresses et données sont démultiplexées sur ces deux ports. PORT O est réservé aux adresses basses (AO-A 7) et aux données (DO-D 7) et PORT 2 aux adresses hautes (A 8-A 15) Le microcontrôleur génère un premier signal PSEN à partir de la deuxième période du sous-temps 53 jusqu'à la fin du sous- temps 54, correspondant à une période Pi Ensuite, ce signal d'accès à la mémoire de code est inactivé pendant une période P 2 avant d'être à nouveau présent pendant une nouvelle période Pi La période P 2 correspond à l'écart maximal entre deux signaux PSEN. L'exécution de cette instruction nécessite donc un temps d'accès important du microcontrôleur 10 à la mémoire partagée 12 (période P 2) En conséquence, afin de connaître le débit minimal de données pouvant être transmises entre l'application il et la mémoire partagée 12, il faut se placer dans le cas o toutes les instructions comprises dans la mémoire ROM 14 seraient de ce type Dans ce cas de figure le plus défavorable, on considère ensuite la fréquence du quartz pilotant le microprocesseur pour en déduire la durée du signal PSEN Par exemple, si la fréquence d'oscillation du quartz est de 16 M Hz, la durée du signal PSEN est de: Pl = 3 x 1 187 ns 16.106 = A cette période Pi, il est nécessaire de soustraire des temps fixes dus aux étages logiques du système ainsi constitué, pour obtenir le temps d'accès maximal dont dispose l'application il pour accéder à la mémoire partagée 12 Si l'application il peut réaliser un accès à chaque période Pi, le débit minimal de transfert de données est alors égal a P 1 +P 2 A titre d'exemple, pour une fréquence de fonctionnement de 16 M Hz du microcontrôleur, compte tenu des temps de transition dus aux étages logiques, une mémoire partagée statique présentant un temps d'accès de l'ordre de 85 ns permet d'effectuer un transfert de données entre la RAM et l'application 11 Un tel temps d'accès permet l'utilisation d'une RAM de vitesse moyenne Bien entendu, si la RAM présente des temps d'accès plus courts, et/ou si la fréquence de fonctionnement du processeur est inférieure à 16 M Hz, l'application il peut réaliser plusieurs accès à la mémoire partagée pendant un accès unique du processeur à sa mémoire morte. La figure 3 est un chronogramme montrant deux accès successifs à la mémoire partagée par l'application il, effectués pendant un accès unique d'un microcontrôleur à sa mémoire morte. Les chronogrammes sont représentés en logique positive Lorsque le microcontrôleur accède à la mémoire morte (premier chronogramme), il génère le signal PSEN Deux accès successifs à la mémoire partagée sont alors effectués (deuxième chronogramme), pendant la durée d'activation du signal PSEN, par l'application 11 Cette opération se répète à chaque activation du signal PSEN La durée du signal PSEN est notée Pl et le nombre d'accès à la mémoire partagée par l'application il pendant la durée Pl est noté M Dans cette figure M= 2 Le débit maximal de données, en octets, entre la mémoire partagée et l'application il est égal à M N/T o T est une période de référence pendant laquelle le microcontrôleur accède N fois à la mémoire de code (ROM) Le nombre N est déterminé, pour une fréquence de fonctionnement du processeur donnée, par une suite d'instructions nécessitant chacune un temps d'accès du processeur à la mémoire partagée maximal, du type MOVX @DPTR,A pour un microcontrôleur 8031 d'INTEL (marque protégée). L'accès de l'application il à la mémoire partagée 12 peut s'effectuer par l'intermédiaire d'une mémoire tampon insérée entre le gestionnaire d'accès 13 et l'application il On réalise ainsi une adaptation de temps d'accès. Le fonctionnement de l'application est totalement asynchrone par rapport à celui du processeur puisque les accès à la mémoire partagée sont permis à l'application en fonction du contenu du logiciel contenu dans la mémoire ROM. Il est également possible de synchroniser les échanges de données entre le processeur et l'application en associant des drapeaux aux données de la mémoire partagée. Il est également possible de partager les données mémorisées dans la mémoire commune, c'est à dire laisser à une ou plusieurs applications le soin de traiter une partie ou la totalité des données comprises dans la mémoire commune L'ensemble ou une partie du traitement est alors soustraité et le microprocesseur peut effectuer d'autres tâches de traitement. Un autre avantage de l'invention est que du point de vue du logiciel mémorisé dans la mémoire morte, l'utilisation partagée de la RAM est totalement transparente si la RAM est partagée en deux champs mémoire différents Le il boîtier RAM peut donc être unique On peut illustrer ce avantage par l'exemple suivant: Soit un système comprenant un microcontrôleur et une mémoire de code associée L'exécution du programme nécessite 18 Koctets de mémoire RAM et le microcontrôleur ne peut être ralenti dans son exécution Une application de transmission de données nécessite 10 Koctets de RAM, par exemple pour réaliser une fonction de décalage de données La solution classique consiste à associer un boîtier RAM de 32 Koctets (taille de boîtier directement supérieure à 18 Koctets) au microprocesseur et un boîtier RAM de 32 Koctets à la fonction de transmission des données En appliquant le principe de l'invention, un seul boîtier RAM de 32 Koctets est suffisant On diminue ainsi la taille de la mémoire, le coût et la consommation du système. Il est bien entendu possible de permettre un accès à la mémoire partagée à plusieurs applications différentes Un gestionnaire de priorité est alors inséré entre le gestionnaire d'accès 13 et les différentes applications Ce gestionnaire de priorité peut par exemple affecter à une première application un premier temps d'accès pendant la durée Pl, un second temps d'accès pendant cette même durée Pl étant réservé à une seconde application D'autres modes de réalisation sont possibles, notamment l'établissement d'une priorité tournante entre les différentes applications. REVENDICATIONS 1 Système de partage de temps d'accès à une mémoire partagée entre au moins une application et un processeur, ledit processeur coopérant, par l'intermédiaire d'un premier bus, avec une mémoire de code comprenant des instructions de programme devant être exécutées par ledit processeur, ledit processeur coopérant également avec ladite mémoire partagée pour y lire et/ou écrire des données, un signal d'accès à ladite mémoire de code étant généré par ledit processeur ou par des moyens de génération coopérant avec ledit processeur lorsque ledit processeur accède à ladite mémoire de code, ladite application devant également pouvoir accéder à ladite mémoire partagée pour y lire et/ou écrire des données par l'intermédiaire d'un deuxième bus, caractérisé en ce qu'il comprend un gestionnaire d'accès ( 13) placé entre d'une part lesdits premier ( 15) et deuxième ( 19) bus et d'autre part un troisième bus ( 16) relié à ladite mémoire partagée ( 12), ledit gestionnaire d'accès ( 13) effectuant une commutation dudit premier bus ( 15) sur ledit troisième bus ( 16) lorsque ledit signal d'accès est absent, de façon à permettre audit processeur ( 10) d'accéder à ladite mémoire partagée ( 12), et une commutation dudit deuxième bus ( 19) sur ledit troisième bus ( 16) lorsque ledit signal d'accès est présent, de façon à permettre à ladite application ( 11) d'accéder à ladite mémoire partagée ( 12). 2 Système selon la revendication 1, caractérisé en ce que ledit processeur ( 10) est constitué par un microcontrôleur comprenant ledit générateur dudit signal d'accès à la mémoire de code. 3 Système selon la revendication 2, caractérisé en ce que ledit signal d'accès à la mémoire de code est du type PSEN généré par un microcontrôleur ( 10) de la famille 8031 d'INTEL (marque déposée). 4 Système selon la revendication 1, caractérisé en ce que ledit processeur ( 10) est constitué par un microprocesseur et en ce que ledit signal d'accès à la mémoire de code est constitué par un signal de type "Chip Select" généré par un décodeur d'adresses ( 18) externe audit microprocesseur ( 10) et constituant ledit générateur dudit signal d'accès à la mémoire de code. Système selon l'une des revendications 1 à 4, caractérisé en ce que ledit gestionnaire d'accès ( 13) comprend des drivers tri-state réalisant ladite commutation. 6 Système selon l'une des revendications 1 à 5, caractérisé en ce qu'une mémoire tampon est insérée entre ladite application ( 11) et ledit gestionnaire d'accès ( 13) pour réaliser une fonction d'adaptation de débit.