FR 2927463 A1 20090814 FR 0800739 A 20080212 BULL5.FRD Dispositif de contrôle d'accès à une mémoire électronique amélioré L'invention concerne un dispositif de contrôle d'accès à une mémoire électronique. Le domaine des mémoires électroniques à accès direct a connu un développement spectaculaire lors des dernières décennies, passant de quelques kilo-octets à plusieurs giga-octets de nos jours. 10 Cela a été rendu possible grâce à la technologie DRAM, qui permet de stocker des quantités importantes de données avec un accès très rapide à moindre coût. Ce type de mémoire est néanmoins limité par la nature volatile des données 15 qu'il stocke. En effet, ces technologies font usage de micro-capacités qui stockent l'information mais se déchargent seules en quelques micro-secondes. Dès lors, des quantités considérables d'efforts logiciels et matériels sont déployées pour maintenir les données de ces mémoires. Lorsque l'on connaît la taille des mémoires actuelles et leur utilisation moyenne réelle, c'est en outre une quantité importante d'électricité qui est gâchée à maintenir des portions de mémoire qui ne contiennent aucune information. 25 L'invention vient améliorer la situation. A cet effet, l'invention propose un dispositif de contrôle d'accès à une mémoire électronique, comportant, un contrôleur d'accès pour organiser des requêtes d'accès à des banques de mémoires volatiles, et un rafraîchisseur pour 30 maintenir les données du banc de mémoires volatiles. 20 Ce dispositif comporte en outre un registre pour désigner des plages de mémoire, et le rafraîchisseur est agencé pour rafraîchir sélectivement des plages de mémoire désignées par ledit registre. Ainsi, le maintien des données est réalisé uniquement pour les plages de mémoire contenant des données d'intérêt, ce qui est économique en termes de ressources matérielles et énergétiques. D'autres caractéristiques et avantages de l'invention apparaîtront mieux à la 10 lecture de la description qui suit, tirée d'exemples donnés à titre illustratif et non limitatif à partir des dessins sur lesquels : - la figure 1 représente un motif de base d'une mémoire de type DRAM ; 15 - la figure 2 représente un schéma d'une architecture comprenant un contrôleur de mémoire selon l'invention associé à une mémoire DRAM à quatre banques de mémoire ; et - la figure 3 représente un élément du contrôleur de la figure 3. Les dessins et la description ci-après contiennent, pour l'essentiel, des éléments de caractère certain. Ils pourront donc non seulement servir à mieux faire comprendre la présente invention, mais aussi contribuer à sa définition, le cas échéant. On a représenté sur la figure 1 un motif de base 2 d'une banque de mémoire de type DRAM. Le terme matrice peut également être utilisé pour désigner la DRAM, comme celle-ci est généralement vue comme un ensemble de colonnes et de rangées de capacités auxquelles on accède. Le motif 2 comporte des lignes de sélection de rangée 4, des lignes de bits 6, et une ligne de sortie 8. 20 25 30 Les lignes de sélection de rangée 6 permettent d'accéder à un ensemble de capacités 10 au moyen de transistors d'accès 12. Les lignes de bits 6 sont en fait doublées en des lignes de bits "+" et "-" non représentées, et les transistors d'accès 12 sont organisés de façon telle que le potentiel de la capacité 10 peut être lu de façon différentielle sur les deux lignes de bits "+" et "". Les lignes 6 sont sélectionnées au moyen d'un sélectionneur de rangée 14 qui 10 active une rangée à lire sur la base d'adresses de lecture a0 et al qu'il reçoit. Les lignes de bit "~" et "-" sont préchargées et égalisées au préalable à la moitié du potentiel de l'alimentation, et l'une sert de référence à l'autre. 15 Sur activation d'une rangée, la lecture différentielle des lignes de bits "+" et "" d'une ligne de bits 6 est faite dans un amplificateur différentiel 16, également appelé Sense Amplifier. Outre la lecture des lignes de bits 6, l'amplificateur différentiel 16 a deux autres 20 rôles : - régénérer un potentiel correct sur les lignes de bits "+" et "-" et dans la capacité 10 accédée, comme le potentiel de cette dernière a été altéré pendant la lecture, un mécanisme de pompe à charge permettant d'atteindre le niveau 25 de l'alimentation derrière le transistor d'accès 12 le cas échéant ; - faire office de point mémoire tant que l'information de la rangée 4 doit être exploitée. 30 Les lignes de sortie 8 sont reliées à un sélectionneur de données 18. Le sélecteur de données 16 permet l'accès à la valeur d'un point mémoire à l'intersection de la rangée activée et d'une colonne donnée par un sélecteur de colonne 20 qui reçoit en entrée des adresses a2 et a3. La sortie du sélectionneur de données 18 est reliée au bus de données 22. L'ensemble de l'amplificateur différentiel 16 avec le sélectionneur de données 20 constitue une matrice de points mémoires classiques de type SRAM. L'accès d'une � rangée � de la DRAM initialise les valeurs de cette SRAM. L'accès � colonne � n'est que l'exploitation de ladite SRAM. Comme le temps d'accès d'une rangée est très long (plusieurs dizaines de ns) un grand nombre de bits à la fois sera lu à la fois, la taille d'une rangée pouvant atteindre 16 Kbits pour une DRAM de 1 Gbit. Le but est de trouver parmi les bits de la rangée un maximum d'accès colonne à exploiter, ces accès étant bien plus rapides que l'accès d'une rangée. Une autre particularité de cette mémoire est la dégradation de l'information au cours du temps due aux diverses fuites, d'où le nom de mémoire dynamique. Pour compenser cette dégradation un rafraîchissement périodique de la matrice est nécessaire, comme cela apparaîtra plus bas. A cet effet, la mémoire comprend également un ensemble de bascules 24 synchronisé par un signal RAS d'accès aux rangées, via un multiplexeur 26. Ces éléments permettent de réaliser les basculements nécessaires aux opérations d'écriture, de rafraîchissement et de lecture dans les lignes de bits 6. La figure 2 montre un schéma simplifié d'une architecture classique de DRAM 30 à quatre banques 32 de mémoire. Pour l'accès aux rangées, les banques 32 sont reliées à un décodeur 34 qui reçoit les adresses à lire, et réalise le démultiplexage, le décodage et les basculements pour l'accès à la banque et à l'adresse de rangée correspondante dans cette banque. Pour l'accès aux colonnes 36, les banques 32 sont reliées à un décodeur 36 qui reçoit les adresses à lire, et réalise le décodage et les basculements pour l'accès la banque et à l'adresse de colonne correspondante dans cette banque. Typiquement, le nombre de banques de mémoire dans les DRAM est actuellement limité à huit au maximum. Cette représentation est simplifiée. Les implémentations physiques impliquent en général : - un démultiplexeur de rangée, relié à un registre d'adresse rangée tampon, des décodeurs et des ensembles de bascules de rangée pour chaque banque de mémoire ; 15 - un registre d'adresse colonne tampon, des décodeurs et des ensembles de bascules de colonne pour chaque banque de mémoire. En fonction des caractéristiques recherchées pour la DRAM, les quatre banques 32 sont plus ou moins opérables de manière indépendante. Ainsi, pour 20 obtenir une DRAM la plus performante possible, les banques 32 seront totalement découplées. En revanche, comme c'est le cas ici, il est courant que les opérations sur les banques 32 soient couplées plus ou moins lâchement, pour des raisons de 25 répartition des pics de consommation. La DRAM 30 est commandée par une interface qui comprend un bus d'adresse 38, un bus de commande 39 et un bus de données 40. Les signaux émis par ces bus sont traités par un contrôleur de mémoire 42. Le contrôleur de mémoire 42 comporte un décodeur de commande 44, un registre de mode 46, et un contrôleur logique 48. 30 Le décodeur de commande 44 reçoit des signaux de commande CS#, WE#, CAS# et RAS# du bus de commande 39. La combinaison des signaux CS#, WE#, CAS# et RAS# à l'instant d'échantillonnage de l'horloge permet au décodeur 44 de déterminer la commande à effectuer. Parmi les commandes les plus courantes on trouve : le repos ; le cycle sans opération ; la pré-charge ; l'activation, c'est-à-dire l'accès rangée, également appelé "activate" ; la lecture ou l'écriture d'une colonne ; la terminaison de salve d'écriture, également appelé "burst terminate" l'auto rafraîchissement ; et le chargement du registre de mode 46. Le registre de mode 46 permet de configurer divers modes de fonctionnement. II sert par exemple à définir la longueur des salves de données, également appelée burst length, le cadrage des données, également appelé wrap mode ou encore la configuration électrique du bus de données 40. Le contrôleur de logique 48 reçoit des signaux du décodeur de commande 44 et du registre de mode 46, sur la base desquels il détermine les opérations à effectuer en termes de lecture et d'écriture dans les banques 32. 25 Le contrôleur de logique 48 intègre un ensemble de fonctions logiques de type filtre, qui désignent une adresse rangée à accéder pour rafraîchir la rangée en question, ou lire ou écrire dans une adresse de rangée spécifique. Le contrôleur de logique 48 est relié à un rafraîchisseur 50. Le rafraîchisseur 50 30 est un compteur qui rafraîchit une rangée reçue du contrôleur de logique 48 au bout d'un nombre de cycles donné.20 Dans d'autres réalisations, le rafraîchisseur 50 peut être intégré au contrôleur de mémoire 42 de sorte que celui-ci communique directement avec les banques 32. Le rafraîchisseur 50 peut alors embarquer une partie ou la totalité de la logique de rafraîchissement du contrôleur de logique 48. Dans d'autres réalisations encore, une réalisation mixte peut être envisagée, dans laquelle le contrôleur de logique 48 et le rafraîchisseur 50 partagent chacun une partie de la logique de rafraîchissement. L'interface de la DRAM est synchronisée au moyen d'une horloge rapide CLK, qui permet d'exprimer chacune des opérations en un nombre de cycles de cette horloge. Un signal CKE est également reçu pour contrôler l'activation de la DRAM. Les opérations associées à ces commandes peuvent en outre nécessiter la 15 présence d'une adresse ou d'un code spécifique sur le bus d'adresse. Les durées des opérations varient en fonction de l'enchaînement des commandes. Cela permet d'assurer le bon fonctionnement électrique aussi bien au niveau des matrices de cellules que pour la bonne utilisation du bus de 20 données. II arrive que certaines durées découlent de besoins liés à des considérations de consommation. C'est par exemple le cas avec le tRRD, qui impose la durée entre deux commandes "activate", y compris sur des banques distinctes, ou 25 bien encore avec le tFAW, qui impose une durée totale pour 4 commandes d'activation consécutives. Le résultat de ces opérations est géré au niveau du bus de données 40 par un multiplexeur/démultiplexeur 52. Le multiplexeur/démultiplexeur 52 stocke les 30 valeurs des adresses mémoire lues sur la base des rangées désignées par les décodeurs 34, et des colonnes désignées par le décodeur 36. Les échanges de données sur le bus de données 40 sont gérés par un registre d'entrée/sortie 54 pour communication avec l'extérieur. C'est sur le bus de données 40, qui est bidirectionnel, que se retrouvent les 5 données en provenance ou à destination de toutes les banques de mémoire 32. L'utilisateur doit gérer lui-même l'occupation du bus au cycle près. Avec les interfaces DRAM de type DDR, il y a deux données par cycle d'horloge, soit une pour chaque front d'horloge. L'essentiel des contraintes est 10 à la charge de l'utilisateur puisqu'il doit fournir à la DRAM, en plus des données, un signal d'échantillonnage par byte de données appelé le DQS, chaque front des DQS servant à échantillonner lesdites données dans la DRAM. Cela signifie que, en présence de données, les signaux DQS sont identiques au 15 signal d'horloge décalé d'un quart de cycle. En revanche, en sortie, quand la DRAM renvoie les DQS en même temps que les données lues, les fronts des DQS sont synchrones avec l'horloge de retour. C'est alors encore à l'utilisateur de générer les signaux d'échantillonnage à 20 partir des DQS reçus en utilisant une boucle à verrouillage de délai, également appelée DLL ou Delay Lock Loop. Lorsque la direction du bus de données 40 est retournée, quelques cycles sont alors perdus pendant lesquels le bus est maintenu en haute impédance, afin 25 d'éviter un mise en court circuit des éléments qui écrivent sur le bus, et en tenant compte des délais de transfert et de synchronisation. Il faut donc éviter de retourner le bus de données 40 trop souvent. Comme les écritures sont moins sensibles à la latence que les lectures, les 30 contrôleurs de DRAM retardent généralement les écritures afin de les regrouper pour augmenter l'efficacité de la DRAM. La figure 3 représente un mode de réalisation du contrôleur de logique 48. Le contrôleur logique 48 comporte trois éléments principaux : - un générateur de commandes d'accès 482 ; - un registre de zones allouées 484 ; et un générateur de commandes de rafraîchissement 486. Lorsque le contrôleur de logique 48 reçoit les signaux du décodeur de commande 44 et du registre de mode 46, il les dirige soit vers le générateur de commandes d'accès 482, soit vers le générateur de commandes de rafraîchissement 486. Le générateur de commandes d'accès 482 utilise les signaux reçus pour déterminer les opérations à effectuer en termes de lecture et d'écriture dans les banques 32. 20 Le registre de zones allouées 484 stocke des données qui indiquent des plages ou zones d'adresses de la mémoire qui contiennent des données utiles au système qui exploite la mémoire. Le rôle de ce registre apparaîtra mieux avec ce qui suit. 25 Le gestionnaire de rafraîchissement 486 fonctionne en coopération avec le registre de zones allouées 484 pour envoyer des commandes de rafraîchissement au rafraîchisseur 50. Dans un cadre classique, le constructeur de la DRAM impose la durée de 30 rafraîchissement pour la totalité de la mérnoire, généralement 64ms, et donne le nombre de rangées à rafraîchir, par exemple 8K, soit une rangée à rafraîchir toutes les 7.8ps environ.15 C'est ensuite à l'utilisateur de déterminer les moments d'insertion des commandes d'auto rafraîchissement les plus propices afin de ne pas trop pénaliser ses propres accès. Pour cela, il faut tenir compte du fait que cette commande va devoir fermer toutes les rangées encore ouvertes sur toutes les banques afin de rafraîchir la rangée repérée par le compteur de rafraîchissement. La durée d'une commande d'auto rafraîchissement est généralement d'environ 10 60 ns, et le rafraîchissement prend entre 1% et 2% de la bande passante totale de la mémoire. Dans le cadre de l'invention, le registre de zones allouées 484 permet au contrôleur 42 d'optimiser la gestion de la mémoire. En effet, le registre de zones allouées 484 est accessible par le système qui exploite la mémoire. Cet accès permet d'attribuer des nouvelles adresses mémoire seulement dans 20 les zones dans lesquelles des adresses mémoire ont déjà été allouées, et d'imposer que ces zones soient remplies avant "d'ouvrir" une nouvelle zone. Ainsi, le gestionnaire de rafraîchissement 486 peut ne réaliser le rafraîchissement que pour celles des zones de la mémoire qui contiennent des 25 données d'intérêt. Comme les données sont de nature évanescentes, cela revient à ne pas alimenter les zones de mémoires qui ne sont pas désignées dans le registre de zones allouées. Dès lors, d'importants gains de consommation peuvent être réalisés, notamment lors d'un mode de veille. 15 30 Typiquement, les zones du registre de zones allouées sont des plages d'adresses mémoires qui sont déterminées à l'avance. Une zone donnée contiendra ainsi un nombre choisi de lignes contiguës dans 5 les banques de mémoire, et est définie par un indice et une taille. Comme la taille des banques est connue, la taille et l'indice de chaque zone définissent sans ambiguïté la plage des adresses correspondantes. 10 Cependant, pour des raisons de coût et de performances, la taille du registre de zones allouées 484 ne doit pas être trop importante. Néanmoins, plus la taille des zones est importante, plus les gains seront faibles. Il convient donc de faire un compromis entre la granularité des zones et les 15 gains recherchés. Le registre de zones allouées peut être mis en oeuvre de plusieurs manières. Ainsi, il peut être réalisé sous la forme d'une pile qui ne contient que les indices des zones de mémoire allouées. Sous une autre forme, il peut être réalisé par une table d'indices accompagnés à chaque fois d'un indicateur, un "1" indiquant que la zone est allouée, et un "0" indiquant à l'inverse que la zone est libre. 25 II est important que le dispositif d'allocation de la mémoire du côté du système qui exploite la mémoire soit synchronisé avec le registre de zones allouées 484. Cela garantit le bon fonctionnement de l'invention. Ainsi, lorsqu'une adresse mémoire est libérée du côté du système, il doit être 30 déterminé côté système si cette adresse mémoire était la dernière activée d'une zone allouée donnée, pour permettre de refléter dans le registre d'adresses allouées 484 que cette zone n'est plus allouée. 20 Dans le cadre d'une application à un ordinateur du type PC, qui utilise comme système d'exploitation Linux (marque enregistrée), un allocateur de mémoire du système d'exploitation connu est Slab_alloc. Un allocateur de plus haut niveau, que nous nommerons Chunkalloc peut être intégré dans la structure existante. Les blocs disponibles pour Slab_alloc ne seront alors plus choisis dans la mémoire dans sa totalité, mais dans les zones de la mémoire qui sont gérées par ChunkAlloc. 10 Cet allocateur doit donc maintenir une table de correspondance des adresses qu'il a alloué et des zones de mémoire correspondantes. Pour des raisons de cohérence des données au démarrage, le système d'exploitation doit démarrer en maintenant le rafraîchissement actif sur toutes 15 les zones de la mémoire. Ensuite, une fois ChunkAlloc démarré et initialisé, il aura pour tâche d'éteindre les zones inactives et pourra à ce moment réaliser son rôle d'allocateur. La correspondance que maintient l'allocateur est ici décrite sous la forme d'une 20 table, mais elle peut être réalisée sous toute autre forme appropriée pour maintenir une vue cohérente de l'occupation mémoire du côté de l'allocateur. Dans le cadre de cette application, il a été déterminé que, pour une mémoire de 4Go, un ensemble de 4096 zones de mémoire représente un compromis 25 intéressant. Chaque zone de mémoire allouée contient alors une plage de 1 Mo. Pour une gestion plus appropriée, l'allocateur peut allouer les adresses mémoires par lot de 64ko, et la correspondance à maintenir est alors basée sur l'allocation de ces lots et non pas sur la base des adresses mémoire allouées 30 individuelles.5 Lorsqu'un accès mémoire est demandé pour une adresse mémoire dans une zone non encore allouée, l'allocateur émet deux requêtes. La première requête est adressée au générateur de commandes d'accès 482 5 pour l'accès à proprement parler. La deuxième requête est adressée au registre de zones allouées 484 pour modifier celui-ci et refléter l'allocation de la zone de mémoire concernée. Cette requête forme donc une requête d'allumage de la plage de mémoire en 10 question. Inversement, lorsque le dernier lot d'adresses mémoire d'une zone allouée donnée est libéré par le système, l'allocateur émet une requête au registre de zones allouées 484 pour modifier celui-ci et refléter la désallocation de la zone 15 de mémoire concernée. Cette requête forme donc une requête d'extinction de la plage de mémoire en question. En variante, l'allocateur peut émettre des requêtes de rafraîchissement particulières. Ces requêtes sont interprétées par le générateur de commandes 20 de rafraîchissement non pas comme des requêtes de rafraîchissement classiques, mais comme des requêtes de modification du registre de zones allouées 484. Le rafraîchissement des banques de mémoires peut ainsi être géré par 25 l'allocateur directement, ou en interne par le gestionnaire de commandes de rafraîchissement 486 en coopération avec le rafraîchisseur 50, ce dernier pouvant filtrer les zones non allouées pour ne pas les rafraîchir. D'un point de vue matériel, l'invention a été présentée en référence à des 30 registres et éléments groupés fonctionnellement. Ce regroupement a été présenté à des fins d'explication. Ces registres et éléments peuvent être mis en oeuvre de diverses manières, sans être groupés comme cela est présenté par exemple ou en étant mis en oeuvre ensemble dans un seul bloc. En outre, dans ce qui précède, il conviendra d'apprécier que toutes les variantes peuvent être combinées entre elles dans la mesure de leur compatibilité. Bien que des modes préférés aient été présentés, il va de soi que l'invention englobe l'ensemble de ces variantes et leur combinaison. Revendications 1. Dispositif de contrôle d'accès à une mémoire électronique, comportant, un contrôleur d'accès (482) pour organiser des requêtes d'accès à des banques de mémoires volatiles (32), et un rafraîchisseur (486) pour maintenir les données du banc de mémoires volatiles (32), caractérisé en ce qu'il comporte en outre un registre (484) pour désigner des plages de mémoire et en ce que le rafraîchisseur (486) est agencé pour rafraîchir sélectivement des plages de mémoire désignées par ledit registre (484). 2. Dispositif selon la revendication 1, caractérisé en ce quo le registre (484) est une table comprenant des indices de plage de mémoire associés à chaque fois à un indicateur de rafraîchissement. 3. Dispositif selon la revendication 2, caractérisé en ce que le registre (484) est agencé pour recevoir une requête d'extinction d'une plage de mémoire, et pour modifier l'indicateur de rafraîchissement associé à l'indice de la plage de mémoire concerné de sorte qu'elle ne soit pas rafraîchie. 4. Dispositif selon la revendication 2 ou 3, caractérisé en que le registre (484) est agencé pour recevoir une requête d'extinction d'une plage de mémoire, et pour modifier l'indicateur de rafraîchissement associé à l'indice de la plage de mémoire concerné de sorte qu'elle soit rafraîchie. 5. Dispositif selon l'une des revendications précédentes, caractérisé en ce que le registre (484) comporte des données désignant des plages de mémoire à rafraîchir en permanence. 15