FR 2964211 A1 20120302 FR 1056876 A 20100831 B10371 - 10-GR3-114 1 DISPOSITIF DE CONTRÔLE D'ACCÈS À DES MÉMOIRES SIMPLE PORT Domaine de l'invention La présente invention concerne de façon générale les dispositifs et procédés de traitement des accès à des mémoires, que celles-ci soient autonomes ou embarquées dans des circuits électroniques comportant d'autres fonctions tels que, par exemple, des circuits de contrôle de réseaux de transmission de données numériques ou des circuits de traitement d'images. Exposé de l'art antérieur Généralement, les circuits électroniques nécessitent une capacité importante de stockage d'information. Cette capacité est atteinte avec des mémoires de grande taille composées de plusieurs blocs mémoire pour des raisons physiques ou logiques. Par exemple, ces mémoires sont uniquement de type SRAM (Static Random-Access Memory) ou de type DRAM (Dynamic Access Memory). Un contrôleur de la mémoire permet aux autres fonctions du circuit électronique de voir l'ensemble des blocs mémoire comme une seule mémoire, en terme d'adresse. En général les blocs mémoire sont à architecture simple port. En d'autres termes, vu des autres fonctions du circuit électronique, un bloc simple port ne peut réaliser qu'une opération de lecture ou une opération d'écriture au même B10371 - 10-GR3-114 2 instant. Cette architecture de bloc mémoire permet de s'affranchir d'architectures mémoire trop complexes ou trop couteuses en surface de circuit. Néanmoins, il est parfois souhaitable que certaines fonctions du circuit électronique effectuent une opération de lecture et une opération d'écriture simultanément et sans contrainte d'adresses. Une solution connue à ce problème est d'utiliser des mémoires double port capables d'effectuer deux opérations au même instant. Les inconvénients des mémoires double port sont leurs faibles densités et des temps d'accès élevés. Ces mémoires sont donc peu adaptées au stockage de mots d'information de grande taille. Une autre solution connue à ce problème est d'utiliser des blocs mémoire réalisant des opérations à une fréquence d'horloge au moins double de celle du circuit externe. Un inconvénient de cette solution est qu'il faut disposer de blocs mémoire supportant une fréquence élevée et que la surface occupée par de tels blocs est importante. Un autre inconvénient d'une telle solution est que le circuit doit être conçu pour pouvoir fonctionner avec plusieurs fréquences d'horloge. Une autre solution connue à ce problème est de retarder les opérations conflictuelles, telles une lecture et une écriture simultanée dans le même bloc mémoire. Un inconvénient de cette solution est qu'il faut disposer d'un espace mémoire supplémentaire, pour stocker temporairement les données en écriture à l'origine du conflit. Pour se protéger du pire cas, pour lequel chaque adresse d'un bloc mémoire sera successivement lue puis écrite, cet espace mémoire supplémentaire doit avoir la même taille que la mémoire initiale. Un autre inconvénient de cette solution est que le traitement (écriture) des données stockées dans l'espace mémoire supplémentaire peut bloquer l'accès à la mémoire pendant un temps donné. B10371 - 10-GR3-114 Résumé Un objet d'un mode de réalisation de la présente invention est de proposer une mémoire composée d'un contrôleur et plusieurs blocs mémoire palliant tout ou partie des inconvénients des dispositifs connus. Un autre objet d'un mode de réalisation est de permettre d'effectuer des opérations simultanées dans des blocs mémoire simple port. Pour atteindre tout ou partie de ces objets ainsi que 10 d'autres, un mode de réalisation de la présente invention prévoit une mémoire comportant : - un ensemble de premiers blocs mémoire de taille identique entre eux, destinés à contenir des premiers mots, - un ensemble de deuxièmes blocs mémoire de taille 15 identique entre eux, destinés à contenir des deuxièmes mots, le nombre de deuxièmes mots étant identique au nombre de premiers mots, - un troisième bloc mémoire identique aux premiers blocs, et 20 - un quatrième bloc mémoire identique aux deuxièmes blocs, chaque adresse de la mémoire comportant une première partie identifiant un premier bloc et une deuxième partie identifiant une même ligne dans tous les blocs, et chaque 25 premier mot du troisième bloc identifiant un mot libre parmi les deuxièmes mots partageant une même deuxième partie d'adresse. On prévoit également un procédé de commande d'une mémoire comportant, en cas de lecture et écriture simultanées, une étape de comparaison de premiers mots. 30 On prévoit également un procédé de commande comportant en outre une étape de lecture du troisième bloc identifiant un bloc comportant un mot libre, parmi les deuxièmes et quatrième blocs. 3 B10371 - 10-GR3-114 4 On prévoit également un procédé de commande comportant en outre une étape de mise à jour des mots contenus dans les premiers et troisième blocs mémoire. On prévoit également un procédé de commande d'une 5 mémoire dans lequel ladite étape de comparaison est effectuée avant ladite étape de lecture. On prévoit également un procédé de commande d'une mémoire dans lequel, si les premiers mots de ladite étape de comparaison sont égaux, un mot est écrit à une adresse libre 10 d'un des deuxièmes et quatrième blocs. Brève description des dessins Ces objets, caractéristiques et avantages, ainsi que d'autres seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non-limitatif 15 en relation avec les figures jointes parmi lesquelles : la figure 1 représente, de façon très schématique et sous forme de blocs, un exemple de dispositif de gestion des accès à des blocs mémoire simple port ; la figure 2 illustre, à l'aide de blocs, une 20 architecture d'adressage dans la mémoire de la figure 1 ; la figure 3, 3A et 3B illustrent, sous formes de blocs, des exemples d'opérations de lecture et d'écriture dans une mémoire du type de celle de la figure 2 ; et la figure 4 représente un exemple d'organigramme 25 décrivant un mode de réalisation d'enchaînement des séquences exécutées par la mémoire selon un mode de mise en oeuvre de la présente invention. Description détaillée De même éléments ont été désignés par des mêmes 30 références aux différentes figures qui ont été tracées sans respect d'échelle. Pour des raisons de clarté, seuls les étapes et les éléments utiles à la compréhension de l'invention ont été représentés et seront décrits. La figure 1 représente sous forme de blocs une mémoire 35 5 comprenant : B10371 - 10-GR3-114 - un contrôleur 7 (CONTROLLER) ; - un ensemble 10 de tables de correspondance d'adresse (premiers blocs mémoire) 10i (i étant compris entre 1 et N), de taille identique entre elles, chaque 5 table contenant des mots d'adresse ; - un ensemble 14 de bancs (deuxièmes blocs mémoire à simple port) 14i (i variant entre 1 et N), de taille identique entre eux, chaque banc contenant des mots de données en nombre identique au nombre de mots d'adresse d'une table ; - une table de correspondance d'adresse supplémentaire 12 (troisième bloc mémoire) identique aux tables 10i ; et - un banc supplémentaire 16 (quatrième bloc mémoire) identique aux bancs 14i. Le contrôleur 7 est, par exemple, relié aux circuits réalisant les autres fonctions par des bus d'adresse 3 et de données 4, auxquels s'ajoutent un ou plusieurs bus de commande. Le contrôleur 7 peut aussi réaliser les opérations de codage et décodage d'adresse pour accéder aux bancs et aux tables. Le nombre de mots de données d'un banc et le nombre de mots d'adresse d'une table sont identiques. Une ligne identifie des mots d'adresse et de données de même rang dans les bancs et les tables. Les tables 10 et 12 sont constituées de premiers et troisième blocs mémoire, par exemple, des blocs de mémoire simple port, des mémoires cache, etc. Les bancs 14 et 16 sont constitués de deuxièmes et quatrième blocs mémoire simple port. La figure 2 est une représentation plus détaillée d'une architecture d'adressage dans la mémoire 5 selon un mode de mise en oeuvre de la présente invention. L'adresse d'un mot de données stocké dans la mémoire 5 et manipulé par d'autres fonctions du circuit électronique est composée de deux parties 18 et 19. Cette adresse sera désignée par la suite comme l'adresse externe (adresse de la mémoire). B10371 - 10-GR3-114 6 Une première partie 18 identifie une des tables de correspondance d'adresse 10i. Une deuxième partie 19 identifie une même ligne parmi les tables 10i, 12 et les bancs 14i et 16. En d'autres termes, l'information issue de la partie 18 désigne une table de correspondance d'adresse et l'information issue de la partie 19 désigne une ligne commune aux tables de correspondance d'adresse et aux bancs. Le mot d'adresse complet définit donc la position d'un mot de données dans un banc 14i ou 16. On cherche à réaliser un espace de stockage de grande taille accessible par l'extérieur comme une mémoire unique, mais en réalité composé de plusieurs blocs pour des raisons techniques. Vu de l'extérieur, on cherche à ce que la mémoire supporte des opérations de lecture et d'écriture simultanées, avec uniquement des blocs simple port. Selon un mode de mise en oeuvre de la présente invention, l'ajout d'un bloc mémoire supplémentaire 16 permet de disposer d'une capacité de stockage supplémentaire de la taille d'un banc. L'ajout de la table de correspondance d'adresse supplémentaire 12 permet d'identifier le numéro du banc parmi les bancs 14i et 16 contenant un emplacement libre (mot libre) pour une ligne donnée. Les figures 3, 3A et 3B illustrent un exemple de mise en oeuvre de l'invention avec une mémoire composée de : - quatre bancs 14x, avec x compris entre 1 et 4 et 25 identifiant arbitrairement un banc (141 à 144 ou B1 à B4) ; - quatre tables d'adresse 10y, avec y compris entre 1 et 4 et identifiant arbitrairement une table (101 à 104 ou T1 à T4) ; 30 - un banc supplémentaire 16 (BSUpp) ; et - une table de correspondance d'adresse supplémentaire 12 (TLIBRE)- Chacun des bancs et des tables comportent cinq lignes, identifiées respectivement par des adresses ADp, avec p compris 35 entre 1 et 5 (AD1 à AD5). B10371 - 10-GR3-114 7 Les figures 3 et 3A décrivent un exemple d'opérations simultanées de lecture et d'écriture, sans collision de banc, selon un mode de mise oeuvre de la présente invention. La figure 3 illustre les opérations affectant les bancs. La figure 3A illustre les opérations affectant les tables. Par exemple, on réalise les deux opérations suivantes simultanément : - lire la donnée située à l'adresse externe T2, AD3, à laquelle a été précédemment stockée une 10 donnée DATA-1 ; et - écrire une donnée DATA-2 à l'adresse externe T4, AD1. Dans un premier cycle dit d'acquisition : - on lit la table T2 à l'adresse AD3 (étape 100) 15 pour préparer l'opération de lecture, et on obtient B2 ; - on lit ensuite la table T4, à l'adresse AD1 (étape 102) pour préparer l'opération d'écriture, et on obtient B3 ; et 20 - on lit enfin la table 'LIBRE, à l'adresse AD1 (étape 104) pour disposer du numéro du banc contenant un emplacement libre sur la ligne AD1, et on obtient BSUPP- Comme le banc B2 issu de l'étape 100 est distinct du 25 banc B3 issu de l'étape 102, les opérations ne génèrent pas de collision. Dans un second cycle dit d'exécution : - on lit le banc B2 à l'adresse AD3 (étape 106), on obtient la donnée DATA-1 ; et 30 - on écrit la donnée DATA-2 dans le banc B3 à l'adresse AD1 (étape 108). La figure 3B illustre, en relation avec la figure 3, un exemple d'opérations simultanées de lecture et d'écriture, avec collision de banc. La figure 3B représente les opérations 35 affectant les tables. B10371 - 10-GR3-114 8 Par exemple, on réalise les deux opérations suivantes simultanément : - lire une donnée située à l'adresse externe T4, AD1, à laquelle a été précédemment stockée la donnée DATA-2 ; et - écrire une donnée DATA-4 à l'adresse externe T3, AD5. Dans le cycle d'acquisition : - on lit la table T4 à l'adresse AD1 (étape 120) pour préparer l'opération de lecture, et on obtient B3 ; - on lit ensuite la table T3 à l'adresse AD5 (étape 122) pour préparer l'opération d'écriture, et on obtient B3 ; et - on lit enfin la table 'LIBRE à l'adresse AD5 (étape 124) pour disposer du numéro du banc contenant un emplacement libre sur la ligne AD5, et on obtient B1. Comme les numéros des bancs issus des étapes 120 et 122 sont identiques on détecte une collision. Dans le cycle d'exécution : - on lit le banc B3 à l'adresse AD1 (étape 126), on obtient la donnée DATA-2 ; - on écrit la donnée DATA-4 dans le banc B1 à l'adresse AD5 (étape 128) ; Dans un troisième cycle, dit de mise à jour des tables de correspondance d'adresse : - on écrit le numéro du banc B1 dans la table T3 à l'adresse AD5 (étape 130) ; - on écrit le numéro du banc B3 dans la table 'LIBRE à l'adresse AD5 (étape 132). Les opérations de codage et décodage d'adresse, de lecture et d'écriture sont réalisées par le contrôleur 7. B10371 - 10-GR3-114 9 En variante, on peut effectuer systématiquement le troisième cycle, au prix d'une écriture supplémentaire parfois inutile de mise à jour des tables de correspondance d'adresse. En autre variante, et pour éviter une lecture parfois inutile, on peut lire la table 'LIBRE uniquement si on détecte une collision dans le premier cycle. La figure 4 représente un organigramme décrivant un exemple de séquence d'étapes exécutées par la mémoire 5 pour réaliser des opérations simultanées. Le type d'opération (lecture, écriture) à réaliser dans la mémoire 5 et les adresses externes correspondantes lui sont communiquées au cours d'étapes 210 et 212. Dans les étapes 210 (OPRD(Tx, ADx)) et 212 (OPWR(Ty, ADy)), la mémoire 5 reçoit l'ordre d'exécuter simultanément une opération de lecture OPRD dans la table Tx à l'adresse ADx et une opération d'écriture OPWR dans la table Ty à l'adresse ADy. Ces opérations et adresses sont décodées par le contrôleur 7 pour accéder aux tables 10i, 12 et aux bancs 14i et 16. Le cycle d'acquisition se déroule dans des étapes 214 (OPRD(Tx, ADx) ->Bx ; OPRD (Ty, ADy) ->By) et 218 (OPRD ('LIBRE, ADy)->Bz) pour identifier les numéros des bancs correspondants. Dans l'étape 214, on lit la table Tx à l'adresse ADx et on obtient Bx. Puis, on lit la table Ty à l'adresse ADy et on obtient By. L'étape de lecture 218 de la table 'LIBRE à l'adresse ADy permet de disposer du numéro du banc libre BZ (avec Z compris entre 1 et 5) contenant l'emplacement d'un mot de données libre (mot libre) pour cette adresse (adresse libre). Dans une étape de comparaison 220 (Bx = By ?), on compare les rangs des bancs obtenus dans l'étape 214. Si ce rang est différent (sortie N de l'étape 220), chaque opération est réalisée simultanément dans des bancs distincts, sans risque de collision. Dans ce cas, le cycle d'exécution comporte une étape 222 (OPRD(Bx, ADx)) de lecture d'un mot de données dans le banc Bx à l'adresse ADx, et une étape 224 (OPWR(By, ADy)) d'écriture B10371 - 10-GR3-114 10 d'un mot de données dans le banc By à l'adresse ADy. Le processus peut ensuite retourner dans l'étape 210. Si les numéros des bancs comparés dans l'étape 220 sont identiques (sortie Y), une collision est détectée. Les deux opérations devraient se dérouler dans le même banc, ce qui n'est pas réalisable avec des blocs mémoire simple port. La séquence se poursuit alors par un cycle d'exécution. Le cycle d'exécution comporte une étape 232 (OPRD(Bx, ADx)) de lecture d'un mot de données, identique à l'étape 222. Une étape 234 (OPWR(BZ, ADy)) d'écriture d'un mot de données est effectuée dans le banc libre BZ (obtenu dans l'étape 218) à l'adresse ADy. Le cycle de mise à jour des tables de correspondance d'adresse permet, dans une étape 238 (BZ->OPWR(Ty, ADy)), de conserver le nouveau numéro de banc dans lequel est stocké le mot de données précédemment écrit dans l'étape 234. Le numéro du banc BZ est donc écrit dans la table Ty à l'adresse ADy. Dans une étape 240 (By->OPWR(TLIBRE, ADy)), on écrit le nouveau numéro de banc libre pour l'adresse ADy (By dans cet exemple) dans la table Ty. Le processus peut ensuite retourner dans l'étape 210. Dans certains cas, les accès aux tables peuvent conduire à des collisions. Par exemple, des accès simultanés à une même table en lecture et en écriture seront impossibles. Une solution est de réaliser une opération d'écriture, puis de réaliser des opérations de lecture sur les autres tables à l'adresse de ladite opération de lecture. On obtiendra une liste incomplète des numéros des bancs. L'ensemble des numéros des bancs est fini et connu, on déduit alors aisément le numéro de banc manquant. Ce numéro de banc manquant est le résultat de ladite opération de lecture. La mémoire décrite dans le mode de réalisation ci-dessus présente l'avantage d'être vue comme une mémoire double port alors qu'elle conserve l'avantage de la surface des blocs mémoire simple port. B10371 - 10-GR3-114 11 Un autre avantage du mode de réalisation décrit est qu'il permet deux opérations d'écriture simultanées si les bancs et les lignes désignés sont différents. Un autre avantage du mode de réalisation décrit est 5 l'absence d'opérations conflictuelles retardées devant être traités ultérieurement. Des modes de réalisation particuliers de la présente invention ont été décrits. Diverses variantes et modifications apparaîtront à l'homme de l'art. En particulier, divers modes de 10 réalisation avec diverses variantes ont été décrits ci-dessus. On notera que l'homme de l'art pourra combiner divers éléments de ces divers modes de réalisation et variantes sans faire preuve d'activité inventive. REVENDICATIONS1. Mémoire comportant : - un ensemble de premiers blocs mémoire (10i) de taille identique entre eux, destinés à contenir des premiers mots, - un ensemble de deuxièmes blocs mémoire (14i) de taille identique entre eux, destinés à contenir des deuxièmes mots, le nombre de deuxièmes mots étant identique au nombre de premiers mots, - un troisième bloc mémoire (12) identique aux 10 premiers blocs (10i), et - un quatrième bloc mémoire (16) identique aux deuxièmes blocs (14i), chaque adresse de la mémoire comportant une première partie {18) identifiant un premier bloc (loi) et une deuxième 15 partie (19) identifiant une même ligne dans tous les blocs, et chaque premier mot du troisième bloc (12) identifiant un mot libre parmi les deuxièmes mots partageant une même deuxième partie d'adresse (19). 2. Procédé de commande d'une mémoire selon la 20 revendication 1, comportant, en cas de lecture et écriture simultanées, une étape de comparaison (220) de premiers mots (214). 3. Procédé de commande selon la revendication 2 comportant en outre une étape de lecture (218) du troisième bloc 25 identifiant un bloc (BZ) comportant un mot libre, parmi les deuxièmes et quatrième blocs. 4. Procédé de commande selon la revendication 3, comportant en outre une étape (238, 240) de mise à jour des môts contenus dans les premiers et troisième blocs mémoire. 30 5. Procédé de commande d'une mémoire selon la revendication 4, dans lequel ladite étape de comparaison (220) est effectuée avant ladite étape de lecture (218). 6. Procédé de commande d'une mémoire conforme à l'une quelconque des revendications 2 à 5, dans lequel si les premiersB10371 - 10-GR3-114 13 mots (214) de ladite étape de comparaison (220) sont égaux, un mot est écrit à une adresse libre d'un des deuxièmes et quatrième blocs.