CH694190A5 - Module de contr"le comprenant une m'moire morte, en particulier une m'moire d'instructions . consommation 'lectrique r'duite. - Google Patents
Module de contr"le comprenant une m'moire morte, en particulier une m'moire d'instructions . consommation 'lectrique r'duite. Download PDFInfo
- Publication number
- CH694190A5 CH694190A5 CH00218/03A CH2182003A CH694190A5 CH 694190 A5 CH694190 A5 CH 694190A5 CH 00218/03 A CH00218/03 A CH 00218/03A CH 2182003 A CH2182003 A CH 2182003A CH 694190 A5 CH694190 A5 CH 694190A5
- Authority
- CH
- Switzerland
- Prior art keywords
- read
- memory
- control module
- reading
- module according
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1051—Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1051—Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
- G11C7/106—Data output latches
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/22—Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C17/00—Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards
- G11C17/08—Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards using semiconductor devices, e.g. bipolar elements
- G11C17/10—Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards using semiconductor devices, e.g. bipolar elements in which contents are determined during manufacturing by a predetermined arrangement of coupling elements, e.g. mask-programmable ROM
- G11C17/12—Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards using semiconductor devices, e.g. bipolar elements in which contents are determined during manufacturing by a predetermined arrangement of coupling elements, e.g. mask-programmable ROM using field-effect devices
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2207/00—Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
- G11C2207/002—Isolation gates, i.e. gates coupling bit lines to the sense amplifier
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2207/00—Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
- G11C2207/22—Control and timing of internal memory operations
- G11C2207/2245—Memory devices with an internal cache buffer
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Microcomputers (AREA)
Description
La présente invention concerne un module de contrôle comprenant une mémoire morte, en particulier une mémoire d'instruction, à consommation réduite. La présente invention s'applique en particulier aux modules de contrôle utilisés notamment dans les microprocesseurs, notamment dans les microprocesseurs "massivement" parallèles tels que les processeurs de traitement de signal (DSP, Digital Signal Processor). On connaît déjà des microprocesseurs comprenant un module de contrôle (control bloc) et un chemin de données (datapath) par lequel transitent les données traitées par le processeur. Le module de contrôle comporte fréquemment une mémoire morte dans laquelle sont mémorisées des instructions de commande pour les différents modules du datapath, par exemple pour une ou plusieurs unités arithmétiques et logiques, etc. Dans le cas d'un processeur de traitement de signal, les instructions dans la mémoire sont fréquemment lues séquentiellement ou selon une séquence prédéterminée afin d'exécuter des séquences d'opérations sur le signal, par exemple des opérations de filtrage numérique, des fonctions de transformation du type FFT, etc. La fig. 1 illustre de manière schématique un module 1' de contrôle utilisé dans des processeurs de signaux connus. Le module 1' comprend une ROM (Read-Only Memory) 2' de m lignes et de n colonnes dans laquelle sont stockées les instructions. Un démultiplexeur 5' permet de sélectionner la ligne qui doit être lue. Chacune des m X n cellules de la ROM permet de stocker un bit indiquant un état logique zéro (0) ou un (1). La fig. 2 illustre quatre cellules avoisinantes parmi les m X n cellules d'une ROM 2' de type NOR. Les cellules 201 et 202 dans cet exemple comprennent un transistor permettant de coder un "zéro" logique; des "un" sont programmés dans les cellules 200 et 203 par l'absence de transistor. Les drains de tous les transistors d'une même colonne sont reliés à une même connexion C1, C2, etc. La source de tous les transistors est reliée à un potentiel commun Vss, par exemple à la masse. La grille des transistors d'une même ligne est reliée à une connexion commune L1, L2, etc. La mémoire morte 2' utilise en outre un circuit de précharge de colonne 4', constitué dans cet exemple par une ligne supplémentaire de transistors de précharge 40' dont la grille est connectée à une ligne de précharge CK, la source à une tension d'alimentation Vdd et le drain à chacune des colonnes C1, C2, etc. Certaines mémoires mortes utilisent en outre une répartition des colonnes en groupes de colonnes adjacentes, un multiplexeur permettant de sélectionner à chaque moment, parmi chaque groupe, la colonne qui doit être activée. Le nombre de colonnes de la mémoire est dans ce cas supérieur au nombre de bits de sortie délivrés à chaque cycle de lecture. La mémoire 2' est lue en appliquant une tension basse (par exemple Vss) à la ligne de précharge CK, ce qui rend chacun des transistors de précharge 40' passant de façon à "précharger" chaque colonne avec une tension Vdd indiquant un état logique "un". Dans une seconde phase d'évaluation, une tension haute (par exemple Vdd) est appliquée sur la ligne sélectionnée par le démultiplexeur 5', par exemple sur la ligne L1, rendant ainsi passant chaque transistor sur cette ligne, dans cet exemple le transistor 201. La colonne (C2) à laquelle ce transistor (201) est connecté est ainsi "tirée" par l'intermédiaire de ce transistor au potentiel Vss du drain, indiquant un "zéro" logique. Le potentiel des colonnes (C1) qui ne sont pas reliées par un transistor à la -ligne sélectionnée (L1) reste à Vdd, indiquant un "un" logique. L'instruction mémorisée dans la ligne lue (L1) est donc disponible sur les colonnes C1, C2,... de la ROM et peut être chargée dans le registre d'instruction 6' (illustré sur la fig. 1) pour commander les modules de traitement du signal dans le datapath du processeur. La lecture de la ROM est poursuivie lors du cycle suivant en sélectionnant une autre ligne sous le contrôle du contrôleur d'adresse évoqué plus haut. La mémoire morte 2' consomme donc de l'électricité à chaque cycle de lecture pour précharger toutes les colonnes. Dans le cas d'une mémoire d'instructions utilisée dans un processeur de traitement de signal "massivement" parallèle, c'est-à-dire comprenant un grand nombre de modules de traitement de signal en parallèle dans le datapath, le nombre de colonnes dans la mémoire d'instruction 2', et de manière générale la taille de cette mémoire, devient très importante, occasionnant une consommation électrique importante. Dans les systèmes de l'art antérieur, toutes les colonnes sont préchargées à chaque cycle, indépendamment de l'utilisation qui est faite de l'instruction lue. La consommation électrique à chaque cycle reste donc importante même lorsque seule une partie de l'instruction lue dans la mémoire est réellement utilisée pour commander les modules correspondants du datapath lors de ce cycle. Lorsque le programme mémorisé dans la mémoire n'utilise pas de manière optimale les possibilités de traitement parallèle du processeur, et que de nombreux modules du datapath restent inutilisés à chaque cycle d'instruction, la consommation électrique de la mémoire -morte 2' devient critique, particulièrement si le processeur est destiné à être utilisé dans un dispositif autonome électriquement, par exemple dans une prothèse auditive, un téléphone portable, un récepteur GPS, un modem, etc. On connaît d'autres types de mémoires mortes dynamiques ou statiques qui toutes présentent cependant l'inconvénient de consommer un courant électrique pour la lecture de chaque colonne. Un but de la présente invention est donc de proposer un module de contrôle amélioré par rapport aux mémoires de l'art antérieur, en particulier une mémoire d'instruction dont la consommation élec-trique est réduite. En particulier, un but de la présente invention est de proposer un module de contrôle à consommation électrique réduite et apte à être utilisé dans un processeur massivement parallèle, notamment dans un processeur de traitement de signal. La demande de brevet EP 0 917 154 décrit une mémoire d'instructions dans laquelle la consommation électrique est réduite en optimisant le codage des instructions programmées de manière à limiter le nombre de "zéros" logiques, et donc le nombre de transistors dans la mémoire. La plupart des colonnes ne sont donc pas déchargées à chaque cycle d'évaluation, ce qui évite de devoir les recharger lors du cycle de précharge suivant. Toutefois, dans un circuit "idéal", la largeur de la ROM (c'est-à-dire le nombre de bits en sortie) correspond au nombre d'instructions à coder, y compris les opérandes pour ces instructions. Par exemple, une ROM de largeur 16 bits peut être utilisée pour coder 2<16> instructions différentes. Le degré de liberté disponible pour coder les différentes instructions dans une architecture de processeur optimisé est donc limité, en sorte que la réduction de consom-mation que permet la solution décrite dans EP 0 917 154 est limitée. Par ailleurs, le code mémorisé dans la mémoire ROM doit être complètement transcrit pour réduire le nombre de zéros logiques, en sorte que des compilateurs spéciaux doivent être utilisés pour générer ce code. Ces compilateurs ne sont pas toujours dispo-nibles selon les applications. En outre, ces mémoires ne peuvent pas être utilisées en remplacement d'une mémoire d'instruction existante dans un processeur sans devoir transcrire complètement le code des applications écrites pour ce processeur. Un but de la présente invention est donc également de proposer un module de contrôle à consommation électrique réduite, pouvant être programmé à l'aide d'instructions modifiées seulement de manière marginale par rapport aux instructions de programmation d'un module de contrôle conventionnel. D'autres circuits existent qui permettent de réduire la consommation électrique en modifiant le circuit de précharge 4. En dépit des améliorations qu'autorisent ces circuits, un besoin subsiste pour des solutions permettant de réduire davantage la consommation. Selon l'invention, les objectifs ci-dessus sont atteints au moyen d'un module de contrôle comportant les caractéristiques de la revendication indépendante. Des variantes préférentielles sont par ailleurs indiquées dans les revendications dépendantes. En particulier, ces objectifs sont atteints au moyen d'un module comprenant une mémoire morte, une mémoire temporaire dans laquelle les données de ladite mémoire morte peuvent être transférées afin d'être accessible depuis l'extérieur du module de contrôle, un contrôleur de lecture pour sélectionner à chaque cycle les portions de ladite mémoire morte transférées dans ladite mémoire temporaire, et dans lequel les portions sélectionnées par le contrôleur de lecture dépendent du contenu de la mémoire morte. Cette solution permet de ne pas effectuer de lecture de la mémoire morte lorsque les données lues se trouvent déjà dans le registre d'instruction à la sortie de la mémoire morte. La consommation électrique est donc réduite en évitant la précharge des colonnes contenant, sur la ligne sélectionnée, des données déjà disponibles hors de la mémoire morte. Le contrôleur de lecture permet de choisir, à chaque cycle de lecture, si la ligne de la mémoire sélectionnée par le contrôleur d'adresses doit être lue, ou quelles portions de cette ligne doivent être lues. Le fonctionnement du contrôleur d'adresse est déterminé par les données lues précédemment dans la mémoire morte, par exemple par un ou plusieurs bits ajoutés à l'instruction précédente. On connaît déjà l'usage de mémoires caches par lesquelles on fait transiter les données en sortie d'une mémoire principale à accès lent. Un contrôleur d'adresse vérifie à chaque accès en lecture de la mémoire si l'adresse indiquée a déjà été demandée récemment. Lorsque c'est le cas, les données recherchées sont extraites de la mémoire cache au lieu d'être lues dans la mémoire principale plus lente, ce qui permet de réduire le temps d'accès. Les mémoires caches ne permettent toutefois généralement pas de réduire la consommation électrique; au contraire, la consommation électrique de la mémoire cache rapide est souvent très importante. Par ailleurs, ces circuits nécessitent un contrôleur d'adresse complexe qui puisse vérifier si les données recherchées sont disponibles dans la mémoire cache; la consommation de ce contrôleur s'ajoute à celle des mémoires. De surcroît, ces mémoires caches ne sont pas directement reliées à la sortie de la mémoire morte, qui nécessite donc également une mémoire temporaire dans laquelle les données lues doivent être transférées à chaque cycle. L'invention ne nécessite en revanche pas de mémoire temporaire ou de mémoire cache autre que le registre utilisé directement à la sortie de la mémoire morte pour mémoriser les données lues à chaque cycle. Par ailleurs, elle permet également d'éviter la lecture de lignes ou de sections de lignes qui n'ont encore jamais été évaluées et qui ne se trouveraient donc pas dans une mémoire cache. L'invention sera mieux comprise à l'aide de la description donnée à titre d'exemple et illustrée par les figures suivantes: La fig. 1 déjà décrite illustre de manière schéma-tique la structure d'un module de contrôle selon l'art antérieur. La fig. 2 déjà décrite illustre la structure de quatre cellules extraites d'une mémoire morte de type NOR, pouvant être utilisées dans le module de l'invention. La fig. 3 illustre de manière schématique la structure d'un module de contrôle selon une variante préférentielle de l'invention. La fig. 4 illustre de manière plus détaillée la structure d'un module de contrôle selon une variante préférentielle de l'invention. La fig. 5 est un tableau qui montre la conversion de code nécessaire pour programmer la mémoire d'instruction de l'invention. Bien que la description qui suive se rapporte plus particulièrement au cas d'une mémoire morte d'instructions dans un processeur de traitement de signal, l'homme du métier comprendra que l'invention peut en fait être appliquée à tout type de mémoire comprenant des portions lues dans une séquence prédéterminée. La fig. 3 illustre de manière schématique la structure d'un module de contrôle selon l'invention, cette structure étant illustrée de manière plus détaillée sur la fig. 4. Le module de contrôle 1 comprend une ROM (Read Only Memory) 2 de m lignes et de (n + o) bits dans laquelle sont stockées les instructions. Chacune des m X (n + o) cellules de la ROM permet de stocker un bit indiquant un état logique zéro (0) ou un (1). Les cellules peuvent par exemple être constituées par des éléments de type NOR comme illustré sur la fig. 2, ou par n'importe quel autre type d'élément utilisé dans des mémoires de type ROM, EEPROM, Flash ou RAM. Le module comprend en outre un circuit de précharge de colonne 4, constitué par exemple par une ligne supplémentaire de transistors de précharge comme illustré sur la fig. 2, ou par d'autres moyens de précharge de type connu permettant d'imposer une tension de précharge, par exemple Vdd, sur les colonnes sélectionnées lors des cycles de précharge. Selon une caractéristique de l'invention, le circuit de précharge 4 permet de précharger sélectivement différentes sections ou groupes de colonnes, comme on le verra plus loin. A chaque cycle, la ligne indiquée par le contrôleur d'adresse non représenté est sélectionnée par le démultiplexeur 5 qui applique une tension de sélection (par exemple Vdd) sur cette ligne afin de rendre passant tous les transistors sur cette ligne. La tension des colonnes préchargées correspondant à ces transistors est ainsi "tirée" au potentiel Vss du drain, tandis que les autres colonnes restent préchargées. L'instruction correspondant aux colonnes préchargées de la ligne sélectionnée est donc disponible sur les colonnes et chargée dans un registre d'instruction 6 sous le contrôle d'un signal d'horloge CK. Les données chargées dans le registre d'instructions 6 sont par exemple utilisées pour déterminer le fonctionnement de différents modules dans le datapath d'un processeur de traitement de signal. Selon l'invention, une partie des bits lus à chaque cycle est chargée dans un contrôleur de lecture et de précharge 3 URC tandis que les n autres bits sont transférés dans le registre d'instructions 6 par l'intermédiaire d'un circuit de contrôle de précharge et de transfert 4. Les o bits chargés et mémorisés dans le contrôleur 3 déterminent quelles sections de la mémoire morte 2 devront être préchargées et transférées lors de cycles de lecture ultérieurs, par exemple lors du prochain cycle. Le fonctionnement du circuit de contrôle de précharge et de transfert 4 à chaque cycle dépend donc de l'état du contrôleur 3 qui est déterminé, au cours des cycles de lecture précédents, en fonction du contenu de la mémoire morte 2. Dans une variante préférentielle de l'invention, chaque ligne de la mémoire morte 2 est divisée en plusieurs sections prédéfinies comportant chacune une ou plusieurs colonnes. Les sections sélectionnées lors de chaque cycle, c'est-à-dire celles qui sont préchargées et dont le contenu est transféré dans le registre 6, sont déterminées par un ou plusieurs bits mémorisés dans le contrôleur 3 au cours d'un ou plusieurs cycles de lecture précédents. Chaque section regroupe de préférence les colonnes dans lesquelles sont mémorisés les bits de commande d'un module donné du datapath, par exemple d'une ALU, etc. Le contrôleur 3 permet ainsi de déterminer, en fonction des indications lues dans la ROM 2 au cours des cycles précédents, quels sont les modules qui reçoivent une nouvelle instruction. La largeur des différentes sections, c'est-à-dire le nombre de colonnes, peut être identique ou diffé-rente en fonction de la largeur du mot de commande de chaque module du datapath. Dans une autre variante, le contrôleur 3 permet de choisir individuellement et lors de chaque cycle les colonnes qui doivent être préchargées et transférées. Cette variante offre une souplesse maximale, puisqu'il est possible de réutiliser des parties d'instructions ou d'opérandes commandant chaque mo-dule, au prix toutefois d'un nombre o de bits de commande important et donc d'un accroissement substantiel de la largeur de la ROM et éventuellement de la consommation. Dans une autre variante simplifiée, chaque ligne de la mémoire morte 2 comprend un seul bit indiquant simplement si la ligne d'instruction suivante doit être lue ou si elle est identique au contenu du registre d'instructions 6. Cette solution nécessite un seul bit supplémentaire par ligne. Toutefois, chaque ligne doit être complètement relue même lorsqu'elle diffère très peu de la ligne précédente. Un exemple de réalisation de cette variante est décrit plus bas en relation avec les fig. 4 et 5. Le contrôleur de lecture et de précharge 3 est de préférence agencé de manière à recevoir à chaque cycle de lecture des instructions utilisées pour déterminer les sections et les colonnes qui devront être préchargées et transférées au cours du cycle suivant immédiatement le cycle en cours. Il permet ainsi d'éviter de relire plusieurs fois de suite les mêmes instructions dans la ROM 2. On comprendra toutefois qu'il est également possible dans le cadre de cette invention de réaliser le contrôleur 3 de manière à ce qu'il interprète les instructions lues dans la ROM de façon à contrôler la lecture de n'importe quelle section de cette ROM au cours de n'importe quel cycle ou groupe de cycles de lecture ultérieurs. Par exemple, il est possible de prévoir des instructions plus ou moins complexes qui seront interprétées par le contrôleur 3 pour suspendre la lecture de portions de la ROM selon différents schémas et en fonction de différentes conditions, par exemple en fonction du contenu du contrôleur d'adresse ou même en fonction du contenu d'autres portions de la ROM ou de l'état de registres dans le datapath. Il est notamment possible de suspendre la lecture de lignes ou de portions de lignes en réponse à la détection d'un événement prédéfini dans le flux de données traité par le datapath; un circuit d'amorce ("trigger") peut être spécifiquement prévu pour détecter ces conditions. Par ailleurs, il est aussi pos-sible de suspendre la lecture de sections de ligne lorsque les modules commandés par les instructions lues dans ces sections sont en mode de veille ou d'arrêt. La mémoire temporaire d'instructions 6 est de préférence constituée par une seule ligne d'éléments de mémorisation, par exemple de bascules, comme on le verra plus loin. Elle permet ainsi de stocker une ligne complète d'instruction qui sera régénérée en tout ou en partie à chaque cycle. Il est toutefois également possible d'utiliser une mémoire temporaire permettant de stocker plusieurs lignes d'instructions qui pourront être réutilisées en tout ou en partie lors de plusieurs cycles ultérieurs, en fonction de l'état du contrôleur 3. Lorsque la séquence d'instructions programmées dans la ROM 2 utilise de façon efficace les possibilités de traitement parallèle des modules du datapath, la plupart des instructions seront régénérées de façon importante à chaque cycle. Le nombre de sections qui peuvent être réutilisées est donc généralement inférieur au nombre de sections qui doivent être relues. Selon l'invention, les bits indiquant qu'une section de la ROM 2 doit être transférée dans la mémoire temporaire 6 seront donc de préférence codés avec un état logique "un" consommant moins de courant lors de la lecture que les bits indiquant qu'un nouveau transfert n'est pas nécessaire. Rien n'empêche toutefois de coder l'instruction de transfert avec des états logiques différents selon les sections, en fonction du taux de réutilisation des instructions dans chaque section. Nous allons maintenant décrire de manière plus détaillée à l'aide de la fig. 4 un exemple de réalisation du module de contrôle de l'invention. Le module comprend une mémoire morte 2 avec un démultiplexeur 5, un contrôleur de lecture 3 incluant les éléments 30 à 33, un circuit de précharge 4 illustré de manière simplifiée et incluant les éléments 41 ainsi qu'un registre d'instructions 6. La mémoire morte 2 est dans cet exemple de type NOR et comporte m lignes et n + o bits de sortie. La mémoire est programmée en disposant à chaque intersection de lignes et de colonnes un transistor pour coder un "zéro" logique, ou pas de transistor pour coder un "un" logique. Les colonnes sont réparties en groupes de colonnes adjacentes, un multiplexeur 21 permettant de sélectionner à chaque moment, parmi chaque groupe, une seule colonne qui doit être activée. Cette disposition permet de réduire le nombre de ligne et d'augmenter le nombre de colonnes de la mémoire, et ainsi d'obtenir une forme de la mémoire approximativement carrée, ou du moins adaptée à la place à disposition sur le circuit intégré. Le nombre de colonnes de la mémoire est dans ce cas supérieur au nombre n + o de bits de sortie délivrés à chaque cycle de lecture. La mémoire illustrée sur la fig. 4 comporte quatre groupes de quatre colonnes chacun; on comprendra qu'en pratique un nombre de groupes beaucoup plus important et/ou un nombre de colonnes par groupes différent peuvent être utilisés. La mémoire morte 2 est lue en préchargeant, au moyen des transistors de précharge 41, une seule colonne dans chacun des groupes. Les colonnes sélectionnées par les éléments 21, en fonction des bits correspondants du compteur d'adresse non représenté, sont donc chargées avec un potentiel Vdd tandis que les autres colonnes restent flottantes. Au cours du cycle d'évaluation, une ligne indiquée par les autres bits fournis par le compteur d'adresse est sélectionnée par le démultiplexeur 5 en appliquant une tension élevée suffisante pour rendre les transistors dont la grille est connectée à cette ligne passants. Les colonnes préchargées au cours du -cycle de précharge précédent prennent donc un état logique qui dépend de la présence ou de l'absence de transistors sur la ligne sélectionnée; cet état est ensuite transféré par l'intermédiaire des multiplexeurs 21 et des éléments logiques 31 dans le registre d'instructions 6, comme on le verra plus loin. Le contrôleur d'adresse balaye la mémoire séquentiellement ligne par ligne, en sélectionnant pour chaque ligne tout d'abord la première colonne de chaque groupe, puis la seconde, et ainsi de suite jusqu'à la dernière de chaque groupe. Dans une variante préférentielle, la mémoire est lue en balayant successivement toutes les lignes avec la première colonne de chaque groupe sélectionnée, puis en passant à la lecture des deuxièmes colonnes de chaque groupe, et ainsi de suite. Cette variante permet de limiter la décharge des colonnes par lecture de bits non significatifs entre deux cycles de précharge, et donc de réduire le courant de précharge nécessaire. On comprendra toutefois que la même mémoire peut être balayée selon ces deux modes simplement en permutant les bits de poids forts avec les bits de poids faibles du contrôleur d'adresse. Sur l'exemple représenté, le bit fourni à chaque cycle par le premier multiplexeur 21 (à gauche de la figure) est chargé au flanc montant du signal d'hor-loge CK dans un élément de mémoire 32, par exemple une bascule. Ce bit est à l'état logique "zéro" lorsque les données accédées lors du prochain cycle doivent être transférées dans le registre d'instructions 6, et à l'état logique "un" lorsque aucun transfert n'est nécessaire. Une porte logique 30 de type OU additionne le bit mémorisé dans l'élément de mémoire 32 avec le signal d'horloge CK. La sortie de la porte 30 prend donc l'état logique "zéro" uniquement lorsque le signal CK est à "zéro" ET que un "zéro" est mémorisé dans l'élément 32. Les transistors de précharge 41 préchargent les colonnes sélectionnées par les multiplexeurs 21 lorsque cette condition est satisfaite. Des portes logiques 31 de type OU additionnent le signal fourni par chaque multiplexeur 21 avec le bit de sortie de l'élément de mémoire 32. L'état de sortie des portes 31 prend donc l'état logique "zéro" uniquement lorsqu'un "zéro" est mémorisé dans l'élément de mémoire 32 (indiquant une mise à jour nécessaire) ET qu'un "zéro" est fourni par le multiplexeur 21 correspondant. Le signal à la sortie des portes 31 est chargé dans les éléments de mémoire correspondants 60 au flanc montant d'un signal délivré par la porte logique "ET" 33, c'est-à-dire lorsqu'un "zéro" est mémorisé dans l'élément de mémoire 32 ET que le signal d'horloge CK passe à "un". La valeur mémorisée dans l'élément de mémoire 32 détermine donc si les colonnes sélectionnées lors du prochain cycle doivent être préchargées par les transistors 41 et si leur contenu doit être mémorisé dans les éléments de mémoire 60. On comprendra que des adaptations minimes peuvent être apportées à ce circuit pour définir plus précisément, à l'aide de plusieurs bits ou de plusieurs phases à chaque cycle, quelles portions de la mémoire doivent être préchargées et transférées dans le registre d'instructions 6. Les portions de la mémoire choisies peuvent par exemple comprendre à un ou plusieurs groupes prédéfinis, ou à n'importe quelle section de la mémoire morte 2. La fig. 5 illustre schématiquement et à titre d'exemple le transcodage qui doit être effectué sur la séquence d'instructions de commande indiquée dans la partie gauche du tableau pour programmer la mémoire morte de l'invention. Le transcodage consiste simplement à ajouter à chaque instruction un bit de programmation de la bascule 32, qui prend la valeur logique "un" lorsque l'instruction suivante est identique et ne doit donc pas être relue dans la mémoire morte 2 (deuxième colonne de la figure). Comme déjà indiqué plus haut, on pourrait aussi, en adaptant très légèrement le circuit de la fig. 4, coder les instructions de mise à jour du registre 6 par des "un" afin de réduire la consommation électrique dans une application typique du circuit. Les portions de la mémoire morte qui ne seront pas lues en raison du codage de l'instruction précédente peuvent être programmées à n'importe quelle valeur. Une réduction supplémentaire de la consommation électrique peut être obtenue en les programmant avec "un" logique, de façon à réduire le nombre de transistors dans la mémoire. Le codage correspondant est indiqué sur la troisième colonne de la fig. 5. La présente invention concerne donc un module de contrôle 1 comportant les caractéristiques revendiquées et dont un mode de réalisation a été décrit ci-dessus. La présente invention concerne toutefois également une mémoire morte 2 programmée de la manière décrite de façon à pouvoir être utilisée dans un tel module de contrôle, ainsi qu'un support de données informatiques quelconque, par exemple de type magnétique, optique ou magnéto-optique, dans lequel est mémorisée une séquence d'instructions pouvant être chargée dans une telle mémoire pour commander un module de contrôle du type revendiqué en obtenant les avantages attendus. La présente invention concerne également des circuits intégrés complets, par exemple vendus sous la forme de composants individuels, notamment des processeurs de signaux, et des dispositifs d'assistance auditive équipés de tels circuits. Par ailleurs, l'invention peut être commercialisée sous la forme de bibliothèques de modules électroniques, par exemple sous la forme d'un fichier électronique décrivant le module de contrôle sous une forme fonctionnelle (netlist) ou structurelle (topographie), par exemple sous la forme d'un support de données informatiques contenant un tel fichier électronique décrivant la fonction et/ou la topographie circuit électronique, apte à être ouvert ou importé dans un compilateur de circuit intégré pour générer les masques de fabrication du module de contrôle revendiqué. Bien que la description ci-dessus décrive de manière plus détaillée le cas particulier d'une mémoire morte dynamique de type NOR, l'homme du métier comprendra que l'invention peut également être appliquée à d'autres types de mémoires dynamiques, ou même à des mémoires mortes de type statique. Par ailleurs, l'invention peut aussi être appliquée à des mémoires dans lesquelles la lecture se fait à l'aide d'amplificateurs de sens ("sense amplifiers"). Tout comme la précharge des colonnes non lues peut être coupée, on peut aussi interrompre l'alimentation des amplificateurs de sens lorsqu'il n'est pas nécessaire de lire les colonnes correspondantes. L'homme du métier comprendra par ailleurs que l'invention peut également être appliquée avec des composants autres que des ROMS, par exemple avec des composants de type EEPROM, FPGA, Flash ou RAM.
Claims (18)
1. Module de contrôle (1), comprenant les éléments suivants: une mémoire morte (2), une mé-moire temporaire (6), dans laquelle les données de ladite mémoire morte (2) peuvent être transférées afin d'être accessible depuis l'extérieur du module de contrôle, un contrôleur de lecture (3), pour sélectionner à chaque cycle de lecture les portions de ladite mémoire morte (2) transférées dans des portions de ladite mémoire temporaire (6), caractérisé en ce que lesdites portions sélectionnées par ledit contrôleur de lecture (3) dépendent du contenu de ladite mémoire morte.
2.
Module de contrôle selon la revendication 1, caractérisé en ce que ladite mémoire morte (2) comporte au moins un bit qui indique une portion de ladite mémoire morte (2) qui se trouve déjà dans ladite mémoire temporaire (6) lors de l'accès séquentiel au contenu de ladite mémoire morte, ce bit permettant de commander ledit contrôleur de lecture (3) en sorte que ladite portion n'est pas sélectionnée pour être transférée dans ladite mémoire temporaire (6).
3. Module de contrôle selon l'une des revendications précédentes, contenant un circuit de précharge (4) des colonnes de ladite mémoire morte (2), les colonnes préchargées à chaque cycle de lecture dépendant du contenu de ladite mémoire morte (2).
4.
Module de contrôle selon la revendication précédente, dans lequel seules les colonnes correspondant auxdites portions sélectionnées par ledit contrôleur de lecture (3) sont préchargées.
5. Module de contrôle selon l'une des revendications 1 ou 2, contenant un circuit de lecture des colonnes de ladite mémoire morte (2), ledit circuit de lecture incluant des amplificateurs de sens, les amplificateurs de sens activés à chaque cycle de lecture pour lire des colonnes dépendant du contenu de ladite mémoire morte (2).
6.
Module de contrôle selon l'une des revendications précédentes, dans lequel chaque ligne de ladite mémoire morte (2) est divisée en plusieurs sections, ledit contrôleur de lecture (3) sélectionnant en fonction du contenu de ladite mémoire morte (2) les sections de la ligne sélectionnée transférées dans ladite mémoire temporaire (6) à chaque cycle de lecture.
7. Module de contrôle selon la revendication précédente, dans lequel au moins certaines lignes de ladite mémoire morte (2) contiennent au moins un bit indiquant les sections transférées dans ladite mémoire temporaire (6) lors d'au moins un cycle de lecture ultérieur.
8.
Module de contrôle selon la revendication précédente, dans lequel chaque ligne de ladite mémoire morte (2) contient au moins un bit indiquant les sections transférées dans ladite mémoire temporaire (6) lors du prochain cycle de lecture.
9. Module de contrôle selon la revendication précédente, dans lequel ladite mémoire morte (2) consomme plus de courant pour la lecture d'un bit ayant un premier niveau logique que pour la lecture d'un bit ayant un second niveau logique, et dans lequel les bits indiquant qu'une section doit être transférée sont codés avec ledit second niveau logique.
10. Module de contrôle selon l'une des revendications précédentes, dans lequel ladite mémoire temporaire (6) est constituée par un registre d'instructions.
11.
Module de contrôle selon l'une des revendications 6 à 10, dans lequel ladite mémoire morte (2) consomme plus de courant pour la lecture d'un bit ayant un premier niveau logique que pour la lecture d'un bit ayant un second niveau logique, et dans lequel la concentration de bits ayant ledit premier niveau logique est plus élevée dans les sections qui ne doivent pas être transférées dans ladite mémoire temporaire.
12. Module de contrôle selon l'une des revendications 2 à 11, dans lequel ladite mémoire morte (2) consomme plus de courant pour la lecture d'un bit ayant un premier niveau logique que pour la lecture d'un bit ayant un second niveau logique, et dans lequel ladite portion non sélectionnée de ladite mé-moire morte (2) est codée avec des bits ayant le second niveau logique.
13.
Module de contrôle selon l'une des revendications précédentes, dans lequel les colonnes de ladite mémoire morte sont divisées en plusieurs groupes, une pluralité de multiplexeurs (21) permettant de sélectionner à chaque cycle de lecture une colonne dans chaque groupe de colonnes, seules les colonnes sélectionnées étant préchargées et lues durant ledit cycle.
14. Module de contrôle selon la revendication précédente, dans lequel ledit contrôleur de lecture (3) détermine à chaque cycle lesquels des signaux à la sortie desdits multiplexeurs (21) sont transférés dans un élément de ladite mémoire temporaire (6).
15. Processeur de traitement de signal comportant au moins un module de contrôle (1) selon l'une des revendications précédentes.
16.
Dispositif d'aide auditive comprenant au moins un processeur de traitement de signal selon la revendication précédente.
17. Mémoire morte (2) pour un module de cont-rôle selon l'une des revendications 1 à 14, pans laquelle est mémorisée une séquence d'instructions pour un chemin de données dans un microprocesseur, caractérisé en ce qu'une portion de chaque instruction indique si au moins une portion de l'instruction suivante dans ladite séquence est identique ou si elle doit être relue.
18. Support de données informatique pour la fabrication d'un module de contrôle selon l'une des revendications 1 à 14, contenant un fichier électro-nique décrivant la fonction et/ou la topographie circuit électronique, apte à être ouvert ou importé dans un compilateur de circuit intégré pour générer les masques de fabrication du module de contrôle.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CH2182000 | 2000-08-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
CH694190A5 true CH694190A5 (fr) | 2004-08-31 |
Family
ID=32778521
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CH00218/03A CH694190A5 (fr) | 2000-08-17 | 2000-08-17 | Module de contr"le comprenant une m'moire morte, en particulier une m'moire d'instructions . consommation 'lectrique r'duite. |
Country Status (1)
Country | Link |
---|---|
CH (1) | CH694190A5 (fr) |
-
2000
- 2000-08-17 CH CH00218/03A patent/CH694190A5/fr not_active IP Right Cessation
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0020983B1 (fr) | Système de mémoire comportant un dispositif d'emmagasinage sérié | |
FR2711834A1 (fr) | Circuit programmable de mémoire de codes pour mémoire flash. | |
EP1111621A1 (fr) | Mémoire flash programmable page par page | |
EP0875830B1 (fr) | Circuit testable à faible nombre de broches | |
EP1292889A1 (fr) | Memoire eeprom securisee comprenant un circuit de correction d'erreur | |
EP1172820A1 (fr) | Mémoire série programmable et effacable électriquement à lecture par anticipation | |
FR3075444A1 (fr) | Systeme comportant une memoire adaptee a mettre en oeuvre des operations de calcul | |
WO1999023552A1 (fr) | Microprocesseur, notamment pour carte a puce | |
FR2843229A1 (fr) | Cellule de memoire morte et procedes de programmation et de fabrication de celle-ci | |
FR2628237A1 (fr) | Fichier de registres de vecteurs, systeme informatique pour le traitement de vecteurs utilisant un tel fichier et procede de gestion des acces a ce fichier | |
WO2002015192A1 (fr) | Module de controle comprenant une memoire morte a consommation electrique reduite | |
CH694190A5 (fr) | Module de contr"le comprenant une m'moire morte, en particulier une m'moire d'instructions . consommation 'lectrique r'duite. | |
EP0833346B1 (fr) | Mémoire à accès série avec sécurisation de l'écriture | |
WO2003015282A2 (fr) | Ensemble de circuits electroniques comportant des moyens de decontamination de parties contaminees par des erreurs | |
FR2828758A1 (fr) | Procede d'ecriture dans une memoire ram comportant un systeme d'effacement de colonnes | |
FR2538928A1 (fr) | Unite de traitement de donnees pourvue d'une section de commande qui comporte un generateur d'adresses destine a produire des adresses composees de parties d'adresses caracteristiques | |
FR2673316A1 (fr) | Dispositif d'adressage sequentiel d'une memoire, notamment pour carte a memoire. | |
FR2700056A1 (fr) | Procédé de programmation en champ uniforme d'une mémoire électriquement programmable et mémoire mettant en Óoeuvre le procédé. | |
EP1085520B1 (fr) | Procédé d'écriture en mode page d'une mémoire non volatile électriquement programmable/effaçable et architecture correspondante | |
FR3107127A1 (fr) | Procédé et dispositif de conception d’un circuit mémoire calculatoire | |
EP1542234A2 (fr) | Procédé de réalisation d'un plan mémoire étendu au moyen d'une pluralité de mémoires série | |
FR2864320A1 (fr) | Nouvelle architecture de memoire fifo et procede de gestion d'une telle memoire. | |
FR2831315A1 (fr) | Memoire eeprom comprenant des moyens de lecture simultanee de bits speciaux d'un premier et d'un second type | |
EP0059125B1 (fr) | Mémoire morte à adressage modifié | |
EP0595707B1 (fr) | Séquenceur linéaire avec signaux de sortie binaires |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PCAR | Change of the address of the representative |
Free format text: XEMICS SA; RUE DE LA MALADIERE 71; 2007 NEUCHATEL (CH) -TRANSFER TO- XEMICS SA#RUE DE LA MALADIERE 71; 2007 NEUCHATEL (CH) Representative=s name: XEMICS SA#RUE DE LA MALADIERE 71; 2007 NEUCHATEL (CH) |
|
PFA | Name/firm changed |
Owner name: SEMTECH NEUCHATEL SA Free format text: XEMICS SA#RUE DE LA MALADIERE 71#2007 NEUCHATEL (CH) -TRANSFER TO- SEMTECH NEUCHATEL SA#RUE DE MONRUZ 2#2000 NEUCHATEL (CH) |
|
PL | Patent ceased |