Brevet FR2740239A1 — publié le 19970425

Circuit intéqré perfectionné d'accès direct en mémoire La présente invention a pour objet un circuit intégré perfectionné d'accès direct en mémoire à interposer entre un microprocesseur et une cellule de communication. Cette invention est utilisable dans le transfert de données entre une mémoire et un périphérique. Les circuits d'accès mémoire direct servent à remplacer un microprocesseur lors de transferts de données entre la mémoire dudit microprocesseur et un périphérique. Ces circuit permettent de dégager le microprocesseur du transfert ou de palier un éventuel retard du microprocesseur lors d'un transfert. L'utilisation d'un circuit d'accès mémoire direct se fait de manière courante avec des périphériques du type mémoire de masse ou port de communication. Un circuit d'accès mémoire direct reçoit des instructions de la part d'un microprocesseur. Les instructions correspondent à l'indication de l'adresse de début de transfert, à la direction de transfert, à la validation de l'usage d'une interruption, à la valeurs d'incrémentation des adresses, à la suspension de fonctionnement, etc... Lors d'un transfert de données avec un périphérique, le microprocesseur envoie ses instructions au circuit d'accès mémoire direct, puis envoie ses instructions au périphérique et le transfert se déroule comme suit: - envoi au circuit d'accès mémoire direct par le périphérique d'un signal de demande de transfert d'une ou plusieurs données, - positionnement par le circuit d'accès mémoire direct d'un fil d'un bus de commande qui signale au microprocesseur que le circuit d'accès mémoire direct commande le bus de commande, le bus d'adresses et le bus de données du système, - transfert de la (ou des) donnée(s) entre le périphérique et la mémoire sous le contrôle du circuit d'accès mémoire direct, - relâchement du contrôle des bus par le circuit d'accès mémoire direct. Les périphériques étant généralement plus lents que la mémoire, l'usage d'un circuit d'accès mémoire direct évite au microprocesseur d'avoir à sauvegarder ses registres internes pour s'occuper du transfert avec le périphérique, ce qui prend un certain temps, et de ce fait évite au périphérique d'attendre le transfert. Toutes les opérations de transfert se passent sans aucun problème si le sens de transfert du périphérique et du circuit d'accès mémoire direct sont compatibles. Si le périphérique est une cellule de communication qui interface des transferts d'informations avec l'extérieur du système, cela revient à dire qu'une réception de donnée, venant de l'extérieur du système, pour la cellule de communication correspond à une écriture dans la mémoire pour le circuit d'accès mémoire direct et une émission de donnée, vers l'extérieur du système, pour la cellule de communication correspond à une lecture dans la mémoire pour le circuit d'accès mémoire direct. Dans le cas où le périphérique est une cellule de communication, son rôle est de s'interposer entre les bus du microprocesseur et un réseau de communication. La cellule de communication se charge d'une part des différentes adaptations d'impédance et de puissance nécessaire au bon fonctionnement du réseau de communication et d'autre part va gérer le protocole d'échange de données du réseau de communication. Or dans certains protocoles de transfert de données, par exemple le protocole dit DDC, la cellule de communication peut agir dans des modes dits "maître" et "esclave". Le mode "maître" signifie que la cellule de communication va diriger le réseau de communication. Le mode "esclave" signifie que la cellule de communication va être dirigée par le réseau de communication.Lors d'un fonctionnement en mode "esclave", la cellule de communication va être amenée à faire des transfert de données dont le sens est imposé par le réseau de communication. Si l'accès mémoire et la cellule n'ont pas des sens de transfert compatibles, un conflit se produit sur le bus de données, soit aucune information n'est présente, soit deux informations sont présentes. Si de tels conflits ne sont pas destructeurs (les circuits sont protégés contre de bref court-circuit), le problème de la perte d'information est bien réel. Une première solution à ce problème est une solution logicielle. Elle consiste à faire envoyer par le périphérique interface une interruption au microprocesseur afin que la cellule soit gérée par celuici jusqu'au moment où le sens de transfert soit défini afin de transmettre le sens du transfert au circuit d'accès mémoire direct. Une telle solution représente une perte de temps importante pour le microprocesseur et si celui-ci était occupé par une tâche nécessitant un temps de libération de tâche important, une perte éventuelle de donnée peut se produire si l'information de sens de transfert n'est pas transmise suffisamment vite au circuit d'accès mémoire direct. De plus le problème est encore présent car l'utilisation de l'accès mémoire direct ralentit encore le microprocesseur. L'invention a pour but de résoudre le problème précédemment défini. Selon l'invention, on ajoute des liaisons entre un registre de contrôle du circuit d'accès mémoire direct et la cellule de communication. En permettant une mise à jour du registre de contrôle du circuit d'accès mémoire direct contrôlée par la cellule de communication, on évite tous les conflits dus au sens de transfert et on décharge le microprocesseur. L'invention a donc pour objet un circuit comportant un microprocesseur, une mémoire, un circuit d'accès mémoire direct et une cellule de communication, la cellule de communication comportant un registre d'état et un séquenceur dans lesquels sont contenus des premières informations, le circuit d'accès mémoire direct comportant un registre de contrôle dans lequel sont mémorisées des deuxièmes informations, caractérisé en ce qu'il comporte des moyens d'action reliés à la cellule de communication et au circuit d'accès mémoire direct pour permettre à la cellule de communication d'agir directement sur des bits du registre de contrôle afin de rendre certaines des deuxièmes informations identiques à certaines des premières informations. Un tel dispositif permet de supprimer des conflit qui seraient dus à des informations de même type n'ayant pas les mêmes valeurs. Le problème se résout dans un cas en remplaçant les deux informations présentes dans le circuit d'accès mémoire direct et la cellule de communication par une même information. Dans un autre cas, on le résout en forçant une des informations en fonction de l'autre. L'invention consiste également en un procédé utilisant un tel dispositif. D'autres caractéristiques et avantages de l'invention apparaîtront au cours de la description faite au regard des dessins annexés, donnés uniquement à titre d'exemple et sur lesquels: la figure 1 représente un schéma où est utilisé un circuit d'accès mémoire direct avec une cellule de communication, par exemple soutenant le protocole DDC, selon l'invention. Le schéma de la figure 1 représente selon l'invention un microprocesseur 1 avec une partie de son environnement. On peut y voir entre autre une mémoire 2 dédiée à ce microprocesseur 1, un circuit d'accès mémoire direct 3 pour accéder à cette mémoire 2, et une cellule de communication 4, par exemple de type DDC. Ces quatre éléments 1 à 4, sont reliés entre eux par un bus de données 5, un bus d'adresses 6, un bus de commande 7. Les trois bus sont montrés ici différenciés mais on aurait très bien pu concevoir qu'il s'agit d'un bus unique englobant les trois bus. Une liaison particulière s'effectue en outre entre la cellule 4 et le circuit d'accès mémoire direct 3 par l'intermédiaire d'un bus d'interface 8.Le bus 8 a pour but de véhiculer des requêtes de transfert en provenance de la cellule 4 et des signaux de synchronisation nécessaires lors de transferts de données entre la cellule 4 et la mémoire effectués sous le contrôle du circuit d'accès mémoire direct. Une cellule de communication comporte dans son principe des circuits d'adaptation de données et des circuits adaptés d'une part au protocole d'un réseau de communication 9 et d'autre part au protocole propre au microprocesseur 1, c'est à dire aux bus 5 à 7. Un circuit d'accès mémoire direct est un élément bien connu de l'homme de l'art, de nombreux documents techniques décrivent son fonctionnement. Le circuit d'accès mémoire direct 3 comporte entre autre un registre d'état 11 et un circuit de commande 16. La cellule 4 comporte un registre d'état 11 et un séquenceur 12. Le registre de contrôle 10 est relié au bus de données 5 lorsque ce registre de contrôle 10 est adressé par le microprocesseur 1. Le microprocesseur 1 peut alors lire ou écrire dans ce registre de contrôle 10. Le registre de contrôle 10 permet de mémoriser des informations propre au fonctionnement du circuit d'accès mémoire direct. Le registre de contrôle 10 est constitués de bascules et toutes les sorties des bascules sont reliées au circuit de commande 16 (non représenté sur la figure 1). Pour notre exemple, deux bits de contrôle 13 et 14 de ce registre sont particulièrement intéressants. Le premier bit de contrôle 13 représente une information de lecture/écriture dans la mémoire 2. Le deuxième bit de contrôle 14 représente une information d'activité suspendue. Le circuit de commande 16 est relié au bus de commande 7, au bus d'interface 8, aux sortie de toute les bascules du registre de contrôle (non représenté sur la figure 1) et à de nombreux autres éléments du circuit d'accès mémoire direct. Le rôle de ce circuit de commande est de synchroniser le fonctionnement du circuit d'accès mémoire direct en tenant compte d'informations interne au circuit d'accès mémoire direct et en tenant compte d'information en provenance de l'extérieur (Bus 7 et Bus 8). Ce circuit de commande produira également des signaux de synchronisation sur les bus 7 et 8 pendant le déroulement d'un transfert de donnée(s) entre la cellule 4 et la mémoire 2. Le registre d'état 11 est relié au bus de données 5 lorsque ce registre d'état 11 est adressé par le microprocesseur. Le microprocesseur 1 peut alors lire ou écrire dans ce registre d'état 11. Pour notre exemple, un bit d'état 15 contient une information d'activité suspendue propre à la cellule 4. Le séquenceur 12 gère les différents états de communication exigés par le protocole, par exemple DDC, utilisé par le réseau de communication 9. Il est de ce fait en mesure de savoir par son état si la cellule 4 fonctionne en émetteur ou en récepteur. Une particularité de certains protocoles entre autre DDC est que la cellule 4 puisse être maître ou esclave. Dans le cas ou la cellule 4 est maître, c'est le microprocesseur 1 qui va indiquer à la cellule 4 dans quel sens va s'effectuer la transmission, le microprocesseur 1 peut indiquer au circuit d'accès mémoire direct 3 dans quel sens va s'effectuer le transfert avec la mémoire 2. Le microprocesseur 1 est alors dégagé pour le reste de la transmission. Dans le cas où la cellule 4 va fonctionner en esclave, le sens de transmission va être donné par le réseau de communication 9. La cellule 4 devra, dans l'état de la technique, alors envoyer une interruption au microprocesseur 1 afin que celui-ci positionne circuit d'accès mémoire direct 3 dans le bon sens de transfert.Le microprocesseur 1 est donc dérangé par la transmission afin d'éviter la perte de données due à un conflit entre le circuit d'accès mémoire direct 3 et la cellule 4. Afin d'éliminer ce problème, il a été rajouté des moyens de forçage comportant un circuit logique 20, un bus d'état 21, et un fil de forçage 22. Le circuit logique 20 est relié au séquenceur 12 par l'intermédiaire du bus d'état 21 et au registre de contrôle 10 par l'intermédiaire du fil de forçage 22. Dans notre exemple, le séquenceur 12 a ses états codés sur quatre bits, le bus d'état 21 comprendra 4 fils afin de permettre au circuit logique 20 de décoder les états correspondant à des émissions ou des réceptions de données. Dans notre exemple, les états d'émission font produire au circuit logique 20 un "1" logique sur le fil de forçage 22. Le registre de contrôle 10 est modifié par rapport à l'état de la technique. Le premier bit de contrôle 13 est contenu dans une bascule qui va être forçable indépendamment des autres bascules du registre de contrôle 10.Une bascule D du registre est remplacée par une autre bascule D qui est muni d'une entrée asynchrone de mise à "1", dite "Set", et d'une entrée asynchrone de mise à "0", dite "Reset", ces deux entrées asynchrone seront reliée entre elles par un inverseur, l'entrée "Set"', par exemple, est considérée comme l'entrée de forçage de la bascule. Le fil de forçage 22 commande l'entrée de forçage de la bascule qui contient ce premier bit de contrôle 13. Un "1" logique fait correspondre un niveau haut pour le premier bit de contrôle 13, ce qui correspond à une lecture de la mémoire lors de l'intervention du circuit d'accès mémoire direct 3. Un zéro logique sur le fil de forçage 22 fait correspondre une écriture mémoire. L'homme de l'art remarquera que le microprocesseur n'a plus la possibilité d'écrire dans la bascule forcé car celle-ci est constamment forcée soit à "0" soit à "1". Un tel dispositif permet de forcer des bascules du registre de contrôle 10 en fonction de certaines informations contenues dans la cellule 4 et de ce fait permet donc d'effectuer des transferts de données dans la mémoire lorsque la cellule 4 fonctionne en mode esclave sans aucune intervention du microprocesseur 1. En effet lorsque transfert est sollicité par le réseau de communication, le circuit logique 20 va décoder les états du séquenceur 12 afin de reconnaître s'il s'agit d'une émission ou d'une réception de données et va automatiquement positionner le bit 13 dans un état compatible avec la transmission. Le reste du transfert s'effectuera comme dans l'art antérieur. Le deuxième bit de contrôle 14 contient une information de fonctionnement suspendu qui est également présente dans le registre d'état 11. Le microprocesseur 1 doit donc suspendre à la fois le circuit d'accès mémoire direct 3 et la cellule 4, cela fait effectuer deux opérations pour un résultat commun. Un fil de coordination 23 relie dans l'invention les registres 10 et 11. Ce fil 23, dans un exemple est relié à la sortie de la bascule contenant le bit d'état 15 et à la sortie de la bascule contenant le deuxième bit de contrôle 14, ces bascules étant court-circuité, on peut en supprimer une, par exemple la bascule contenant le deuxième bit de contrôle 14. En résumé, le fil 23 permet de faire croire que le deuxième bit de contrôle 14 est dans le registre de contrôle 10 lors d'une lecture de ce registre 10, alors que réellement, ce bit de contrôle 14 est confondu avec le bit d'état 15 qui est présent dans le registre 11. Par contre l'écriture de ce bit d'état 15 ne peut se faire que dans le registre d'état 11. Un tel procédé simplifie la tache au microprocesseur 1 qui n'a plus qu'une seule opération à faire pour suspendre le fonctionnement du dispositif. De plus dans le cas d'une erreur de transmission détectée par la cellule 4, la cellule 4, par un moyen de forçage du registre 15, suspend son fonctionnement automatiquement, et celui de l'accès mémoire 3 en même temps. Les deux procédés d'échange d'information consistant à forcer une bascule ou à substituer une bascule sont équivalents dans le résultat bien que la forme soit différente. En effet, pour le cas du premier bit de fonctionnement 13 correspondant à l'information de lecture/écriture, plutôt que de forcer une bascule du registre 10, on peut lui substituer une extrémité du fil de forçage 22. Le circuit logique 20 simulera alors une bascule du registre de contrôle 10. De même, on peut utiliser un forçage de bascule pour le deuxième bit de contrôle 14. Il suffit d'utiliser le fil de coordination 23 pour envoyer un signal qui forcera la bascule qui supporte le deuxième bit de contrôle 14 dans l'état correspondant à la suspens ion du fonctionnement de l'accès mémoire dans le cas d'une erreur détectée. Dans le cas où on a choisi de forcer les bascules, il est possible de garder une possibilité de modification du registre 10 par le microprocesseur 1. Ainsi lorsque le forçage n'apparait nécessaire que pour un état. Dans le cas de la suspension de transfert par exemple, il est fortement souhaité que la mise en suspension soit effectuée sans l'intervention du microprocesseur 1. Par contre la réactivation du dispositif nécessite de toute façon l'intervention du microprocesseur 1 et le fait d'avoir deux registres 10 et 11 à adresser peut apparaître comme une perte de temps qui est utilisée comme une redondance de sécurité. Pour pouvoir forcer une bascule à un seul niveau "0" ou "1", il suffit d'utiliser une seule entrée asynchrone de mise à "0" ou de mise à "1" . REVENDICATIONS 1 - Circuit comportant un microprocesseur (1), une mémoire (2), un circuit d'accès mémoire direct (3) et une cellule de communication (4), la cellule de communication (4) comportant un registre d'état (11) et un séquenceur (12) dans lesquels sont contenus des premières informations, le circuit d'accès mémoire direct (3) comportant un registre de contrôle (10) dans lequel sont mémorisées des deuxièmes informations, caractérisé en ce qu'il comporte des circuits d'action (20, 21, 22, 23) reliés à la cellule de communication et au circuit d'accès mémoire direct pour permettre à la cellule de communication (4) une mise à jour des bits du registre de contrôle (10) afin de rendre certaines des deuxièmes informations identiques à certaines des premières informations. 2 - Circuit selon la revendication 1 caractérisé en ce que les circuits d'action sont des moyens de forçage (20, 21, 22) qui forcent des cellules du registre de contrôle (10) en fonction de valeurs des premières informations contenues dans la cellule de communication (4). 3 - Circuit selon la revendication 1 caractérisé en ce que les circuits d'action sont des moyens de substitution (23) qui font apparaître certaines des premières informations à la place de certaines des deuxièmes informations dans le registre de contrôle (10) à l'aide d'une ou plusieurs connexions autorisant une lecture des premières informations à la place des deuxièmes informations. 4 - Circuit selon l'une des revendications 1 à 3 caractérisé en ce que le circuit d'accès mémoire direct et la cellule de communication sont intégrés sur un même substrat semi-conducteur. 5 - Procédé d'utilisation d'un circuit comportant un microprocesseur (1), une mémoire (2), un circuit d'accès mémoire direct (3), et une cellule de communication (4), la cellule de communication (4) comportant un registre dlétat (11) et un séquenceur (12) dans lesquels sont contenues des premières informations, le circuit d'accès mémoire direct (3) comportant un registre de contrôle (10) qui contient des deuxièmes informations, caractérisé en ce qu'on agit avec la cellule de communication directement sur des bits du registre de contrôle (10) afin de rendre certaines des deuxièmes informations identiques à certaines des premières informations. 6 - Procédé selon la revendication 5, caractérisé en ce que une des premières et deuxièmes informations représente un sens de transfert d'information de la mémoire (2). 7 - Procédé selon la revendication 5, caractérisé en ce que une des premières et deuxièmes informations représente une suspension d'activité dudit circuit d'accès mémoire direct (3).