Brevet FR2773234A1 — publié le 19990702

% àMOIRE À DOUBLE ACCÈS POUR PROCESSEUR DE SIGNAL NUMRIQUE La présente invention concerne un processeur de signal numérique, plus couranmmnent appelé DSP, et plus particulièrement une organisation de mémoire particulièrement bien adaptée à un DSP. La figure 1 représente schématiquement et partiellement une architecture de DSP classique. Le DSP comprend quatre modules ou unités de traitement fonctionnant en parallèle. Deux de ces modules sont des modules d'accès mémoire 10. Il est par ailleurs prévu un module arithmétique 12 et un module de gestion de bran- chement 14. Chacun des modules d'accès mémoire 10 est associé à un bus mémoire indépendant X ou Y. Une mémoire de programme 16 contient des instructions composites INST, chaque instruction composite étant en fait composée de quatre instructions simples (INSTi-INST4) fournies en même temps aux modules respectifs 10, 12 et 14. Bien entendu, les quatre modules ne sont souvent pas utilisés tous en même temps. Alors, l'instruction complexe four- nie par la mémoire 16 comporte des instructions vides (NOP) correspondant aux modules non-utilisés. Un DSP du type de la figure 1 est optimisé pour effec- tuer des opérations vectorielles du type x[i] OP y[j], o i et j varient, généralement dans une boucle, et o OP désigne une opération quelconque à effectuer par le module arithmétique 12. En effet, les opérandes x[i] et y[i] peuvent être cherchés en même temps par l'intermédiaire, respectivement, du bus X et du bus Y et traités dans le même cycle par le module arithmétique 12. Pour ce type d'opération, les valeurs x[i] et les valeurs y[i] peuvent être stockées dans deux mémoires indépendantes connectées respectivement aux bus X et Y. Toutefois, un DSP peut également être amené à exécuter des opérations du type z[i] OP z[j], les valeurs z étant toutes stockées dans une même mémoire. Dans ce cas, une valeur z, selon le module 10 qui reçoit l'instruction de lecture correspondante, peut être cherchée tantôt par le bus X, tantôt par le bus Y, voire par les deux bus en même temps. Ainsi, on doit pouvoir accéder à une même valeur z par les deux bus X et Y. Théoriquement on peut utiliser pour cela une mémoire à double accès connectée aux bus X et Y. Toutefois, les mémoires à double accès sont particulièrement coûteuses en surface. La figure 2 illustre une organisation de mémoire que l'on préfère utiliser compte tenu du fait que le nombre de valeurs que l'on soumet à des opérations du type z[i] OP z[j] est relativement faible. Cette organisation comprend une mémoire à double accès 18 dont la taille est suffisante pour contenir les valeurs de type "z", c'est-à-dire les valeurs qui doivent être accessibles par les deux bus X et Y. Deux mémoires à simple accès 20 et 22 sont respectivement associées aux valeurs de type "x" et aux valeurs de type "y", les valeurs de type "x" étant celles qui ne sont accessibles que par le bus X et les valeurs de type "y" étant celles qui ne sont accessibles que par le bus Y. Le premier bus d'adresses de la mémoire à double accès 18 et le bus d'adresses de la mémoire à simple accès 20 sont reliés au bus d'adresses XA du bus mémoire X. De façon similaire, le deuxième bus d'adresses de la mémoire à double accès 18 et le bus d'adresses de la mémoire à simple accès 22 sont reliés au bus d'adresses YA du bus mémoire Y. Le premier bus de données de la mémoire 18 et le bus de données de la mémoire 20 sont aiguillés vers le bus de données XD du bus mémoire X par l'intermédiaire d'un multiplexeur/démultiplexeur 24. De façon similaire, le deuxième bus de données de la mémoire 18 et le bus de données de la mémoire 22 sont aiguillés vers le bus de données YD du bus mémoire Y par un multiplexeur/démultiplexeur 26. Un décodeur 28 commande les multiplexeurs/démultiplexeurs 24 et 26 en fonction des adresses présentées sur les bus XA et YA. En particulier, lorsque l'adresse présente sur le bus XA est dans une plage spécifique, le décodeur 28 ccnande le multiplexeur/ démultiplexeur 24 pour aiguiller le bus XD vers la mémoire 18. En dehors de la plage spécifique, le décodeur 28 aiguille le bus XD vers la mémoire 20. Le même mécanisme est utilisé pour commander le multiplexeur/démultiplexeur 26 en fonction de l'adresse pré- sente sur le bus YA. Malgré la complexité que représentent les multiplexeurs/ démultiplexeurs 24 et 26, la surface occupée par cette organisa- tion mémoire est généralement plus faible que celle occupée par une mémoire à double accès unique regroupant les mémoires 18, 20 et 22, ceci compte tenu du fait que la capacité de la mémoire à double accès 18 est relativement faible. Les multiplexeurs/démultiplexeurs 24 et 26 accroissent notablement les temps de latence des opérations de lecture et d'écriture dans les mémoires. Un objet de la présente invention est de prévoir une organisation de mémoire adaptée à un processeur de signal numé- rique permettant un accès à une même donnée par deux voies distinctes tout en occupant une surface particulièrement faible et n'affectant pas les temps de latence d'accès aux données. Ces objets sont atteints grâce à un système de traite- ment de données comprenant un processeur muni de deux modules d'accès mémoire fonctionnant en parallèle; deux mémoires sépa- rées associées respectivement aux deux modules d'accès; et des moyens pour, lorsque l'adresse d'une donnée à écrire dans une mémoire est dans une plage prédéterminée, écrire la donnée dans les deux mémoires en même temps à la même adresse. Selon un mode de réalisation de la présente invention, lesdits moyens comprennent deux instructions d'écriture iden- tiques fournies en même temps aux deux modules d'accès. Selon un mode de réalisation de la présente invention, lesdits moyens comprennent un premier multiplexeur connecté pour recopier dans un premier module d'accès une instruction d'écri- ture fournie au deuxième module d'accès lorsque l'adresse d'écriture est dans la plage prédéterminée. Selon un mode de réalisation de la présente invention, lesdits moyens comprennent un deuxième multiplexeur connecté pour recopier dans le deuxième module d'accès une instruction d'écri- ture fournie au premier module d'accès lorsque l'adresse d'écriture est dans la plage prédéterminée. Ces objets, caractéristiques et avantages, ainsi que d'autres de la présente invention seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non-limitatif en relation avec les figures jointes parmi lesquelles: la figure 1, précédemment décrite, représente schémati- quement et partiellement une architecture mémoire de DSP classique; la figure 2 représente schématiquement une organisation mémoire adaptée à un DSP du type de la figure 1; la figure 3 représente schématiquement une organisation mémoire selon la présente invention; la figure 4 illustre une solution permettant d'utiliser l'organisation mémoire de la figure 3, dans un cas particulier o on ne souhaite pas modifier le programme d'un DSP classique; et la figure 5 illustre une variante de la solution de la figure 4. A la figure 3, une organisation mémoire pour un proces- seur de signal numérique (DSP) du type de la figure 2 comprend seulement deux mémoires à accès simple 30 et 32. Les mémoires 30 et 32 sont connectées respectivement aux bus X et Y du DSP de la figure 1. La mémoire 30 comporte une zone X destinée à stocker les valeurs de type "x", tandis que la mémoire 32 comporte une zone Y destinée à stocker les valeurs de type "y". Ces deux zones correspondent aux mémoires 20 et 22 de l'organisation classique de la figure 2. On rappelle que les valeurs de type "x" ou "y" sont celles auxquelles on accède toujours par le même bus X ou Y. Selon l'invention, chacune des mémoires 30 et 32 est augmentée d'une zone respective Z de même taille, destinée à contenir les valeurs de type "z", c'est-à-dire les valeurs aux- quelles on doit pouvoir accéder tantôt par le bus X, tantôt par le bus Y. Les zones Z des mémoires 30 et 32 sont des recopies exactes l'une de l'autre et sont accessibles par une même plage d'adresses, par exemple les adresses utilisées pour accéder à la mémoire 18 de la figure 2. En d'autres termes, si on accède par le bus X à une valeur dans la zone Z de la mémoire 30, on peut accéder à cette même valeur à la même adresse dans la mémoire 32 par le bus Y. Bien entendu, pour qu'une telle organisation mémoire fonctionne correctement, il est nécessaire d'assurer que chaque valeur écrite dans la zone Z de la mémoire 30 est également écrite à la même adresse dans la mémoire 32. Dans une organisation mémoire classique du type de la figure 2, pour écrire une valeur z dans la mémoire 18, il suf- fisait de fournir une instruction d'écriture à l'un quelconque des modules d'accès 10 du DSP de la figure 1. Si on procède ainsi avec une organisation mémoire du type de la figure 3, la valeur z est écrite dans une seule des mémoires 30 et 32, ce qui n'est pas souhaitable. Pour éviter cela, une solution avantageuse consiste à modifier les instructions du programme du DSP de manière à tou- jours fournir aux deux modules d'accès 10 une même instruction d'écriture d'une valeur de type "z". Cette solution ne nécessite aucune modification matérielle du DSP ou de l'organisation mémoire. La surface occupée par les deux zones Z redondantes est comparable à la surface occupée par la mémoire à double accès 18 de la figure 2. Par contre, on omet les multiplexeurs/ démultiplexeurs 24 et 26 et le décodeur 28, ce qui permet une économie de surface notable et une diminution du temps de latence d'accès aux mémoires 30 et 32. La figure 4 illustre une solution pour écrire une valeur de type "z" dans les deux mémoires 30 et 32 sans modifier le programmne du DSP. L'entrée d'instruction du deuxième module d'accès mémoire 10 est précédée d'un multiplexeur 34 permettant de sélectionner l'instruction INST2 fournie à ce module, ou bien l'instruction INST1 fournie au premier module 10. La position du multiplexeur 34 est déterminée par un décodeur 36 en fonction de l'adresse véhiculée en écriture par l'instruction INST1. Si cette adresse correspond à une valeur z, le multiplexeur 34 est posi- tionné pour sélectionner l'instruction INST1. Sinon, il est positionné pour sélectionner l'instruction INST2. Cette solution nécessite bien entendu une modification du DSP de la figure 1. La surface occupée par le multiplexeur 34 et le décodeur 36 est toutefois relativement faible. Par ailleurs, cette solution suppose que les instructions d'écriture des valeurs z arrivent toujours sur le bus INST1. La figure 5 illustre une variante de la solution de la figure 4, grâce à laquelle le progranmmneur ne doit plus se soucier de la position d'une instruction d'écriture d'une valeur de type "z". Un multiplexeur supplémentaire 38, conmmandé également par le décodeur 36, précède l'entrée d'instruction du premier module d'accès mémoire 10 pour sélectionner l'une ou l'autre des deux instructions INST1 et INST2. Lorsque l'une ou l'autre des ins- tructions INST1 et INST2 est une instruction d'écriture d'une valeur z, le décodeur 36 le détecte et positionne les multi- plexeurs 34 et 38 pour dupliquer cette instruction sur les deux modules d'accès mémoire 10. Un problème se pose lorsqu'arrivent en même temps une instruction d'écriture d'une valeur de type "z" et une autre instruction d'accès mémoire. Il n'est pas possible de les exécu- ter en même temps par les deux modules 10. Le progranmmeur du DSP ou le compilateur pourrait veiller à ce que les deux accès soient effectués à des cycles distincts. Le mode de réalisation de la figure 5 permet toutefois de soulager le programmeur ou le compilateur de cette contrainte. Pour cela, le décodeur 36 est prévu pour détecter la présence sur les bus INST1 et INST2 de deux accès mémoire simultanés dont l'un est une écriture d'une valeur z. Le décodeur 36 active alors un signal ST indiquant une latence d'un cycle, et procède à deux positionnements successifs des multiplexeurs 34 et 38. A la première position, par exemple, les multiplexeurs transmettent aux modules 10 deux copies de l'instruction d'écriture de la valeur z. A la position suivante, les multiplexeurs transmettent l'autre instruction d'accès au module 10 correspondant. De préfé- rence, l'autre module 10 reçoit alors une instruction vide (NOP), mais ceci est difficile à réaliser sans prévoir des circuits supplémentaires. En fait, cet autre module peut recevoir de nouveau l'instruction d'écriture de la valeur z, ce qui entraîne l'écriture deux fois de suite de la même valeur au même emplace- ment mémoire, c'est-à-dire que l'état de la mémoire reste inchangé. REVENDICATIONS 1. Système de traitement de données comprenant: - un processeur muni de deux modules d'accès mémoire (10) fonctionnant en parallèle; - deux mémoires séparées (30, 32) associées respecti- vement aux deux modules d'accès; caractérisé en ce qu'il comprend des moyens pour, lors- que l'adresse d'une donnée à écrire dans une mémoire est dans une plage prédéterminée, écrire la donnée dans les deux mémoires en même temps à la même adresse. 2. Système selon la revendication 1, caractérisé en ce que lesdits moyens comprennent deux instructions d'écriture identiques fournies en même temps aux deux modules d'accès. 3. Système selon la revendication 2, caractérisé en ce que lesdits moyens comprennent un premier multiplexeur (34) connecté pour recopier dans un premier module d'accès (10) une instruction d'écriture (INST1) fournie au deuxième module d'accès (10) lorsque l'adresse d'écriture est dans la plage prédéter- minée. 4. Système selon la revendication 3, caractérisé en ce que lesdits moyens comprennent un deuxième multiplexeur (38) connecté pour recopier dans le deuxième module d'accès (10) une instruction d'écriture (INST2) fournie au premier module d'accès (10) lorsque l'adresse d'écriture est dans la plage prédéter- minée.