FR2884002A1 - Procede d'adressage d'un symbole dans une memoire, et dispositif de traitement de symboles - Google Patents
Procede d'adressage d'un symbole dans une memoire, et dispositif de traitement de symboles Download PDFInfo
- Publication number
- FR2884002A1 FR2884002A1 FR0503242A FR0503242A FR2884002A1 FR 2884002 A1 FR2884002 A1 FR 2884002A1 FR 0503242 A FR0503242 A FR 0503242A FR 0503242 A FR0503242 A FR 0503242A FR 2884002 A1 FR2884002 A1 FR 2884002A1
- Authority
- FR
- France
- Prior art keywords
- bit
- word
- symbol
- bits
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
Un mode d'adressage par bits est proposé pour inclure la mise en forme de symboles de longueur variable lors d'une opération de lecture ou d'écriture d'un symbole dans une banque de mémoires. L'adressage se fait alors à l'aide d'une adresse de mot (@mot) et d'un pointeur de bit (@bit) désignant le début du symbole dans le mot correspondant à l'adresse de mots (@mot). Une opération de décalage est réalisée lors d'une opération de lecture ou d'écriture.
Description
PROCÉDÉ D'ADRESSAGE D'UN SYMBOLE DANS UNE MÉMOIRE, ET
DISPOSITIF DE TRAITEMENT DE SYMBOLES.
L'invention concerne la mémorisation de données dans des mémoires en circuit intégré et, plus particulièrement, les dispositifs de traitement effectuant dans de telles mémoires des opérations de lecture et d'écriture de symboles qui correspondent à des mots binaires de longueur variable.
Dans le domaine de la compression de données, il existe des techniques mettant en oeuvre des codes de compression à longueur variable, tels que, par exemple, les codes de Huffman. Ces codes de longueur variable sont bien connus de l'homme du métier et largement utilisés dans le domaine du stockage et de la transmission de données. A titre d'exemple, de tels codes sont utilisés en combinaison avec d'autres dans des standards de compression comme MPEG2 ou MPEG4, pour la diffusion vidéo numérique.
Le principe d'un code de compression à longueur variable consiste à remplacer des mots binaires de longueur fixe par des symboles binaires de longueur variable. Pour un paquet de données à comprimer, une étude statistique permet de connaître pour chaque mot de longueur fixe sa probabilité d'apparition dans le paquet. Une table de correspondance est ensuite créée pour faire correspondre à chaque mot de longueur fixe un symbole de longueur variable. Un mot ayant une forte probabilité d'apparition est codé sur un symbole de petite taille alors qu'un mot ayant une faible probabilité d'apparition est codé sur un symbole de taille plus importante.
Un encodage de données comprimées à l'aide d'un code de longueur variable se fait classiquement avec un dispositif de traitement utilisant un processeur. La figure 1 représente un exemple connu de dispositif de traitement comprenant un processeur 100 de type RISC couplé à une mémoire de programme 200 et à une mémoire de données 300. Le processeur 100 comporte principalement un circuit de décodage d'instruction 110, une banque de registres 120, des registres tampons 130, un circuit de calcul d'adresse 140, une unité arithmétique et logique (ALU) et une interface mémoire de données 160. Ce microprocesseur 100 est de type pipeline , c'est-à-dire qu'une instruction est traitée en plusieurs cycles d'horloge. Dans l'exemple décrit, un premier cycle d'horloge sert à décoder l'instruction et à charger les registres tampons 130, et un deuxième cycle sert à réaliser l'opération correspondant à l'instruction. Par exception, toutefois, une écriture de donnée peut être réalisée en un seul cycle d'horloge.
Comme il est connu de l'homme du métier, les processeurs utilisent des mots de taille fixe pour réaliser des opérations, par exemple des mots de m bits où m est un entier positif déterminé. Lorsque des données sont comprimées sous forme de symboles de taille variable, les symboles sont concaténés en mots de m bits pour être stocké dans la mémoire de données 300.
La figure 2 montre un exemple de plan mémoire d'une mémoire de données organisée en mots de m bits, pour le stockage de symboles. A titre d'exemple, cinq symboles So à S5 sont mémorisés sur (2x m)+1 bits appartenant à trois mots mémoires d'adresses consécutives respectivement (i+1) à (i+3).
Pour pouvoir retranscrire les bits d'un symbiote lus dans la mémoire en un unique mot de m bits, le processeur doit lire le ou les mots de m bits contenant les bits du symbole puis doit effectuer une opération de masquage de bits pour ne conserver que les bits du symbole, et ensuite une opération de décalage de bits pour positionner les bits du symbole soit en bits de poids faible, soit en bits de poids fort dans un mot de m bits. Si le symbole est écrit à cheval sur deux mots de la mémoire, comme c'est le cas par exemple pour le symbole S3, deux opérations de lecture, deux opérations de masquage et deux opérations de décalage sont nécessaire ainsi qu'une opération logique de type OU pour obtenir le symbole sans la forme d'un seul mot. Ce n'est qu'ensuite que le symbole peut être décodé pour obtenir le mot décodé correspondant.
Le stockage (écriture) d'un symbole dans la mémoire nécessite également un certain nombre d'opérations, un symbole devant être décalé pour arriver à la suite du symbole précédent avant d'être additionné par une opération de type OU. C'est alors seulement que l'écriture peut avoir lieu. Si le symbole décalé se trouve réparti sur deux mots, des opérations de masquage supplémentaires sont nécessaires.
Ainsi la lecture ou l'écriture d'un symbole peuvent nécessiter trois à sept opérations élémentaires. Dans le cas d'un processeur pipeline utilisant deux cycles d'horloge par opération, quatre à huit cycles d'horloge sont nécessaires avec des opérations entrelacées.
La lecture ou l'écriture d'un symbole nécessitent donc un temps de traitement non négligeable pour un processeur dédié au codage/décodage de compression à longueur variable. Or, dans une chaîne de diffusion d'un flux vidéo, le nombre de symboles transmis par seconde est très élevé (plusieurs millions de symboles par seconde). C'est pourquoi on cherche des solutions pour réduire le temps de traitement lié à la lecture ou à l'écriture d'un symbole de taille variable dans une mémoire.
Une solution est proposée dans le document EP-A-O 849 709. Cette solution consiste à ajouter dans l'unité arithmétique et logique d'un processeur des moyens pour supporter des opérations dédiées à la mise en forme des symboles. Il est proposé trois opérations spécifiques permettant de réduire la lecture ou l'écriture d'un symbole à un nombre d'opérations élémentaires compris entre trois et six. Dans le cas d'un processeur pipeline utilisant deux cycles d'horloge par opération, seulement quatre à sept cycles d'horloge sont alors nécessaires avec des opérations entrelacées.
Le but de l'invention est de proposer une autre solution pour réduire le nombre de cycles d'horloge nécessaires à la réalisation d'opérations de lecture ou d'écriture de symboles de taille variable.
Ce but est atteint grâce à un mode d'adressage par bits qui inclut la mise en forme des symboles dans le traitement des opérations de lecture ou d'écriture de symbole. L'adressage se fait alors à l'aide d'une adresse de mot et d'un pointeur de bit désignant le début du symbole dans le mot correspondant à l'adresse. Par ailleurs, une opération de décalage est réalisée lors d'une opération de lecture ou d'écriture.
Selon un premier aspect, l'invention propose un procédé d'adressage pour réaliser une opération de lecture ou d'écriture d'un symbole de k bits dans une banque de mémoires reliée à un processeur par un bus de données de p bits. La banque de mémoires est organisée en mots de p bits et dispose d'un adressage par mot, p étant un entier positif supérieur à 4, et k étant un entier compris entre 1 et p. L'adressage d'un symbole se fait à l'aide d'une adresse de mot désignant un mot de p bits déterminé qui contient un premier bit du symbole, en combinaison avec un pointeur de bit désignant le premier bit du symbole dans le mot de p bit désigné par l'adresse de mot. Un décalage de bits est en outre réalisé pendant une opération de lecture ou d'écriture, en fonction de la valeur du pointeur de bit, sur le mot de p bits lu ou écrit.
Selon un mode de réalisation, la banque de mémoires comporte n mémoires organisées en mots de m bits chacune, m et n étant deux entiers supérieurs ou égaux à deux et tels que n x m = p, en sorte que la juxtaposition de n mots de m bits provenant de chacune des mémoires forme un mot de p bits. La valeur k étant inférieure ou égale à ((n -1) X m)+ 1, au moins l'une des mémoires de ladite banque est sélectionnée par l'adresse de mot et au moins une autre mémoire de ladite banque est simultanément sélectionnée par l'adresse de mot incrémentée d'une unité d'adresse.
Dans le cas d'une opération d'écriture, et lorsqu'il est prévu une validation d'écriture bit par bit pour le mot de p bits à écrire dans la banque de mémoires, seuls les k bits correspondant au symbole à écrire après décalage sont validés pour l'écriture. D'une manière préférée, le décalage de bits est un décalage amenant le symbole dans une position contiguë, par rapport à une position d'un autre symbole dans ladite banque de mémoires.
Dans le cas d'une opération de lecture, le décalage de bits amène le symbole en butée de poids faible ou en butée de poids fort dans le mot de p bits, et un masquage met ensuite à zéro les bits du mot de p bits n'appartenant pas au symbole.
L'ajout d'un nombre réduit d'éléments est nécessaire pour réaliser les différentes opérations.
Selon un deuxième aspect, l'invention propose un dispositif de traitement pour des symboles de k bits comportant une banque de mémoires et un processeur reliés ensemble par au moins un bus de données de p bits, p étant un entier supérieur ou égal à 4, et k étant un entier compris entre 1 et p. Ladite banque de mémoires est organisée en mots de p bits et dispose d'un adressage par mot. Le processeur comporte des moyens de mémorisation et des moyens de décalage de bits. Les moyens de mémorisation sont aptes à mémoriser une adresse de mot et un pointeur de bit. Cette adresse de mot désigne un mot de p bits contenant un premier bit d'un symbole à lire ou à écrire. Le pointeur de bit désigne le premier bit du symbole dans le mot de p bits désigné par l'adresse de mot. Les moyens de décalage sont aptes à effectuer, pendant une opération de lecture ou d'écriture, un décalage de bits sur le mot de p bits lu ou écrit, en fonction de la valeur du pointeur de bit.
Préférentiellement, les moyens de mémorisation comportent un premier registre apte à mémoriser l'adresse de mot en tant que bits de poids fort et le pointeur de bit en tant que bits de poids faible.
Dans un mode de réalisation, le processeur comporte au moins un deuxième registre pour mémoriser la valeur de k.
Dans un mode de réalisation, la banque de mémoires comporte n mémoires (Memo à Memn_I) de m bits chacune, n et m étant deux entiers supérieurs à deux et tels que p = n x m, chaque mémoire étant adressable individuellement. Le processeur comporte des moyens d'incrémentation d'adresse et des moyens de sélection. Les moyens d'incrémentation d'adresse sont adaptés pour produire une adresse incrémentée correspondant à l'adresse de mot incrémentée d'une unité d'adresse. Les moyens de sélection sont adoptés pour sélectionner l'adresse de mot ou l'adresse incrémentée à fournir en entrée de la banque de mémoires.
Pour les opérations de lecture, le processeur peut comporter des moyens de masquage pour mettre à zéro p k bits d'un mot de p bits lu dans la banque de mémoires qui ne correspondent pas au symbole de k bits.
Dans un mode de réalisation, le processeur comporte des entrées de données destinées à être couplées au bus de données, au moins un registre de données, et une unité arithmétique et logique. Le registre de données est apte à recevoir un symbole lu dans la banque de mémoires. L'unité arithmétique et logique est apte à effectuer diverses opérations sur des données présentes sur les entrées de données en réponse à un code d'opération. L'unité arithmétique et logique inclut les moyens de décalage et les moyens de masquage précités, et est placée sur un chemin de données entre les entrées de données et le registre de données.
Pour les opérations d'écriture, et lorsque la banque de mémoires dispose d'une fonctionnalité de validation d'écriture s'effectuant bit par bit à l'aide d'un mot de validation de p bits, le processeur comporte des moyens de génération d'un mot de validation d'écriture pour fournir un mot de validation adapté pour valider l'écriture uniquement des bits correspondant au symbole à écrire dans la banque de mémoires.
L'invention sera mieux comprise et d'autres particularités et avantages apparaîtront à la lecture de la description qui va suivre, la description faisant référence aux figures annexées parmi lesquelles: la figure 1 représente un exemple de dispositif de traitement selon l'état de la technique, la figure 2 montre un exemple de plan mémoire pour des symboles stockés dans une mémoire selon l'état de la technique, les figures 3 et 4 montrent deux exemples d'organisation d'une banque de mémoires selon l'invention, la figure 5 représente un exemple de réalisation d'un dispositif de traitement selon l'invention, la figure 6 représente un exemple de configuration d'un processeur pour une opération de lecture selon l'invention, et la figure 7 représente un exemple de configuration d'un processeur pour une opération d'écriture selon l'invention.
L'invention propose un nouveau mode d'adressage dans lequel l'adresse d'un symbole comprend une adresse de mot de p bits et un pointeur de bit indiquant la position du premier bit du symbole dans le mot mémoire désigné par cette adresse. Le symbole est décalé lors d'une opération de lecture ou d'écriture pour réduire le nombre d'opération à exécuter par un processeur traitant le symbole. L'utilisation d'une mémoire conventionnelle avec un tel mode d'adressage permet de récupérer directement un symbole de k bits avec k p et de le décaler en même temps si tout le symbole est contenu dans un seul mot de p bits. Une telle mise en oeuvre permet de réduire le nombre d'instructions nécessaires au transfert d'un symbole entre le processeur et la mémoire mais uniquement lorsque le symbole est contenu dans un unique mot mémoire.
Le mode de réalisation qui va à présent être décrit, permet d'appliquer le mode d'adressage de l'invention indépendamment de la répartition du symbole dans un ou plusieurs mots mémoire de p bits successifs (en considérant un ordre lié au plan d'adressage des mots mémoires). L'exemple décrit met en oeuvre une mémoire organisée en banque de mémoires à adressage par mot afin de pouvoir être utilisé aussii bien lorsqu'un symbole est stocké dans un mot de p bits à une adresse donnée ou lorsqu'un symbole est stocké dans deux mots de p bits successifs.
La figure 3 représente une banque de mémoires 300b comportant deux mémoires Memo et Mem, organisées en mots de rn bits. Les deux mots de m bits constitue ici un mot de p bits avec p = 2x m. Pour un fonctionnement selon un mode d'adressage conventionnel (adressage direct, indirect ou indexé) les deux mémoires reçoivent la même adresse et les deux mots de m bits sont juxtaposés pour former un mot de p bits. Selon le mode d'adressage de l'invention, chaque mémoire reçoit une adresse, respectivement @Mo et @M,, qui lui est propre. Ainsi, même si un symbole est réparti entre deux mots de p bits, par exemple le symbole S4, il est possible d'accéder en une seule opération d'adressage à tous les bits du symbole en adressant le mot de m bit de la mémoire Men', situé à l'adresse @i et le mot de m bits de la mémoire Memo situé à l'adresse suivante @i+1. Un circuit de décalage et de masquage Dec placé dans le processeur réalise le décalage des bits du symbole et met à 0 les autres bits du mot de p bits lu. Ainsi une seule opération est nécessaire pour la lecture du symbole S4.
Un tel mode d'adressage est avantageux mais est toutefois limité. Les 3o symboles doivent être contenus dans deux mots de m bits contenus respectivement dans chacune des deux mémoires. Lorsque les symboles sont de taille supérieure à m+1 bits, les symboles peuvent être répartis sur trois mots de m bits et il est alors nécessaire d'effectuer deux lectures et des opérations de concaténation.
Dans le cas où le processeur a une architecture de p bits, les symboles sont généralement de taille inférieure à p bits. Il est possible de modifier le processus pour localement incorporer un bus et un décaleur de 2p bits pour relier les bus de données de deux mémoires de p bits. Toutefois une telle solution est coûteuse en terme de place et en terme de consommation. Pour ces raisons, on préfère avoir des mémoires dont la réunion des bus est de p bits.
La figure 4 montre une généralisation de banque 300b de mémoires qui comporte n mémoires Memo à Mem _1 organisées en mots de m bits, et formant ensembles un mot de p bits avec p = n x rn. Le principe est le même que celui décrit ci-dessus en référence à la figure 3. Ici, les symboles qui peuvent poser un problème de lecture sont uniquement les symboles de taille supérieure à ((n-1)xm)+1 bits. Ainsi, on peut considérer que tout symbole d'au plus ((n -1)x m)+1 bits est lu et mis en forme en une seule opération. Une seule opération suffit également pour mettre en forme et écrire un symbole d'au plus ((n -1)x m)+1 bits. Pour les symboles de taille supérieure, une opération peut suffire mais uniquement si le symbole est stocké dans n mots de m bits.
Dans le cas d'un processeur destiné à mettre en oeuvre un codage de longueur variable, par exemple dans le cadre de MPEG2 ou MPEG4, le nombre de bits maximum d'un symbole est inférieur ou égal à 24 bits. Ainsi avec n = 4, m = 8 et p = 32, toutes les opérations de lecture et d'écriture de symbole peuvent être réalisées en une seule opération élémentaire.
La figure 5 représente un exemple système de traitement selon l'invention, qui comporte un processeur 100b de type RISC couplé à une mémoire de programme 200 et à une mémoire de données 300b. Le processeur 100b comporte principalement un circuit de décodage d'instruction 110b, une banque de registres 120, des registres tampons 130, un circuit de calcul d'adresse 140b, une unité arithmétique et logique (ALU) 150b et une interface de mémoire de données 160b. Les références finissant par la lettre b indiquent que les éléments sont légèrement modifiés par rapport à l'état de la technique, pour permettre la mise en oeuvre de l'invention.
Le processeur 100b diffère de ceux connus dans l'état de la technique par un chemin de données allant de l'interface 160b à la banque de registres 120 en traversant l'ALU 150b. Pour une opération de lecture de donnée selon un mode d'adressage conventionnel, l'ALU est configurée pour aiguiller la donnée provenant de l'interface 160b vers sa sortie sans la modifier.
Le circuit de décodage d'instruction 110b correspond à un circuit de décodage d'instruction de l'état de la technique qui permet en plus de décoder des instructions de lecture et d'écriture de symboles de taille variable. Lorsqu'une instruction est décodée, des registres de sortie sont positionnés en fonction de l'instruction. Des registres Id1 à Id3 fournissent des adresses de registres à la banque de registres 120 afin de mettre le contenu des registres adressés sur des bus de données 121 à 123. La banque de registres 120 comprend par exemple seize registres adressables à l'aide de multiplexeurs, chaque adresse de registre comportant ainsi quatre bits, chaque registre étant un registre de p bits pouvant recevoir aussi bien des données que des adresses. Un registre OpCode permet d'indiquer la configuration de fonctionnement de l'ALU 150b lors du cycle d'horloge suivant. Ce registre contient le code d'opération de l'instruction à exécuter. Un registre Imm sert pour un mode dit immédiat qui spécifie dans l'instruction une valeur d'adresse ou une constante. Ce registre n'est pas utilisé dans la mise en oeuvre des opérations de lecture et d'écriture objet de l'invention. Un registre AccesType indique un mode de fonctionnement au circuit de calcul d'adresse 140b. Le registre AccesType indique qu'un accès à la mémoire est demandé, s'il s'agit d'une lecture ou d'une écriture, et le mode d'adressage utilisé. En fonction du contenu du registre AccesType, le circuit de calcul d'adresse adopte une configuration de circuit adéquate. Les différentes configurations du circuit de calcul d'adresse 140b et de l'ALU 150b sont obtenues par des techniques de multiplexage connues de l'homme du métier.
Pour montrer les modifications à apporter aux différents circuits, il convient de détailler la configuration adoptée par le microprocesseur lors des -10-opérations de lecture et d'écriture d'un symbole.
La figure 6 montre un exemple de configuration du processeur 100b lors d'une opération de lecture d'un symbole.
Lorsqu'une instruction de lecture de symbole est décodée, le circuit de décodage 110b positionne le registre ldl sur l'adresse d'un registre de la banque de registres 120 correspondant à l'adresse de lecture du symbole. Le contenu de ce registre de la banque 120, noté RegId1, apparaît alors sur le bus 121 et peut être fourni aux registres tampons 130 et au circuit de calcul d'adresse 140b. Le circuit de décodage 110b positionne le registre Id2 sur l'adresse d'un registre de la banque de registres correspondant à une longueur du symbole à lire. Le contenu de ce registre de la banque 120, noté Regld2, apparaît alors sur le bus 122 et peut être fourni aux registres tampons 130 et au circuit de calcul d'adresse 140b. Le circuit de décodage 110b positionne le registre OpCode afin d'indiquer la configuration de II'ALU 150b pour le prochain cycle d'horloge. Le contenu du registre OpCode transite par les registres tampons 130 avant d'être fourni à l'ALU 150b pour le cycle d'horloge suivant. Le circuit de décodage 110b positionne le registre AccesType pour indiquer au circuit de calcul 140b qu'il doit effectuer une opération de lecture d'un symbole.
La banque de mémoires 300b comporte n mémoires, notées ici Memo à Mem3, organisées chacune en mots de m bits. Le bus de données de la mémoire, ainsi que les bus et registres de données du processeur 100b ont une capacité de p bits. A titre d'exemple et pour la suite de la description, on considère que n = 4, m = 8 et p = 32. La banque de mémoires 300b dispose donc de quatre entrées d'adresse pour recevoir les adresses @MO à @M3.
L'adresse du symbole, fournie par le registre Regld1 comprend deux parties. Une première partie, comprenant les p - q bits de poids fort du registre Reg Id1, correspond à l'adresse d'un mot de p bits qui contient le premier bit du symbole à lire. Le premier bit du symbole correspond par exemple au bit de poids le plus fort dudit symbole. Une deuxième partie, comprenant les q bits de poids faible du registre Reg ldl, correspond à un pointeur de bit @bit qui indique la position du premier bit du symbole dans le mot de p bits. A titre d'exemple, un pointeur de valeur zéro indique que le premier bit du symbole est le bit de poids le plus fort du mot de p bits, et un pointeur de valeur i indique que le premier bit du symbole est le (i + 1)1ème bit de poids le plus fort du mot de m bits. La valeur de q est choisie de sorte que 24 p > 24-' . Par exemple q = 5.
Dans la configuration de lecture de syrnbole, le circuit de calcul d'adresse traite séparément le contenu du registre Regld1. Les p -q bits de poids fort, correspondant à l'adresse de mot @mot, sont fournis à un circuit d'incrémentation d'adresse 141, typiquement un additionneur rapide qui ajoute la valeur 1 pour générer une adresse incrémentée. L'adresse de mot @mot et l'adresse incrémentée sont fournies toutes les deux à l'interface 160b. Les deux bits de poids fort du pointeur de bit @bit sont fournis à un décodeur 142. Le décodeur 142 fournit trois signaux de sélection SelO à Sel2 à destination de l'interface 160b.
L'interface 160b dispose de quatre bus d'adresse pour fournir les adresses @MO à @M3 à chacune des mémoires Memo à Mem3. Or comme indiqué précédemment, ces adresses peuvent correspondre à deux adresses successives de mots de p bits respectifs. Ainsi l'interface 160b dispose de 3 multiplexeurs 161 à 163 pour fournir une adresse aux mémoires Memo à Mem2 respectivement. Chaque multiplexeur 161 à 163 reçoit les deux adresses fournies par le circuit de calcul d'adresse ainsi que l'un des signaux de sélection, respectivement Sel0 à Sel2. L'adresse fournie à la mémoire Mem3 correspond toujours à l'adresse du mot contenant le premier bit du symbole à lire.
Dans un exemple, les deux bits de poids fort du pointeur de bit @bit indiquent dans laquelle des mémoires Memo à Mem3 se situe le premier bit du symbole à lire. Le couple 00 en bits de poids fort indique ainsi que ce premier bit est dans la mémoire Memo et que toutes les mémoires reçoivent l'adresse du mot contenant le premier bit du symbole. Si le couple est 01 alors le premier bit est dans la mémoire Mem1 et la mémoire Memo doit recevoir l'adresse incrémentée. Si le couple est 10 alors le premier bit est dans la mémoire Mem2 et les mémoires Memo et Mem1 doivent recevoir l'adresse incrémentée. Si le couple est 11 alors le premier bit est dans la mémoire Mem3 et les mémoires Memo à Mem2 doivent recevoir l'adresse -12-incrémentée.
L'interface de commande dispose en outre de moyens pour produire des signaux de contrôle pilotant les mémoires Merno à Mem3. Ces moyens ne sont pas représentés car ils sont identiques à ceux utilisés pour l'adressage conventionnel d'une mémoire.
Lors d'un deuxième cycle d'horloge du traitement de l'instruction de lecture, le contenu du registre OpCode du circuit de décodage 110b et les contenus des registres Regld1 et Regld2 sont transférés dans les registres tampons 130, respectivement les registres OpCode, DT1 et DT2. Lors de ce deuxième cycle d'horloge, la donnée lue est fournie par la banque de mémoires 300b et l'interface 160b la fournit à l'ALU 150b. L'ALU 150b est configurée spécifiquement par le contenu du registre OpCode pour la lecture du symbole.
Le registre DT1 contient l'adresse du mot de p bits et le pointeur de bit @bit. Cependant, la configuration de l'ALU 150b ne prend en compte que les q bits de poids faible correspondant au pointeur de bit @bit. Le registre DT2 contient une valeur binaire k représentative de la longueur du symbole lu. L'ALU 150b effectue un calcul d'une valeur de décalage égale à p k @bit à l'aide de circuits de soustraction 151 et 152. La valeur de décalage ainsi calculée est positive ou négative et elle permet de caler le symbole en butée de poids faible dans un mot de p bits. Un décaleur à barillet 153, déjà présent dans l'ALU 150b pour une autre fonction, reçoit d'une part le mot de p bits fourni par banque de mémoires 300b et d'autre part la valeur de décalage pour réaliser le décalage de bits tel que calculé, sur le mot lu en bouclant le bit de poids le plus fort sur le bit de poids le plus faible, le décalage étant à droite si la valeur de décalage est positive, ou à gauche si la valeur de décalage est négative. Le mot décalé est ensuite fourni à un circuit de masquage 154 qui reçoit en outre la valeur k. Le circuit de masquage est transparent pour les k bits de poids faible et positionne à zéro les p k bits de poids fort. La sortie du circuit de masquage fournit ainsi le symbole lu qui peut être stocké dans la banque de registres 120.
Ainsi une opération de lecture d'un symbole de k bits, avec k n 1) x m)+ 1, est réalisée en deux cycles d'horloge. En outre, l'opération de lecture inclus l'opération de décalage et de rnasquage, de sorte que le symbole lu est positionné pour le traitement à effectuer.
La figure 7 montre un exemple de configuration du processeur 100b lors d'une opération d'écriture d'un symbole.
Lorsqu'une instruction d'écriture de symbole est décodée, le circuit de décodage 110b positionne le registre Id1 sur l'adresse d'un registre de la banque de registres 120 contenant l'adresse d'écriture du symbole. Le contenu de ce registre, noté RegId1, apparaît alors sur le bus 121 et peut être fourni au circuit de calcul d'adresse 140b. Le circuit de décodage 110b positionne le registre Id2 sur l'adresse d'un registre de la banquede registres 120 contenant une longueur du symbole à écrire. Le contenu de ce registres noté Regld2, apparaît alors sur le bus 122 et peut être fourni au circuit de calcul d'adresse 140b. Le circuit de décodage 110b positionne le registre Id3 sur l'adresse d'un registre de la banque de registres contenant le symbole à écrire dans la mémoire. Le contenu de ce registre noté Regld3, apparaît alors sur le bus 123 et peut être fourni au circuit de calcul d'adresse 140b. Le circuit de décodage 110b positionne le registre AccesType pour indiquer au circuit de calcul 140b qu'il doit effectuer une opération d'écriture d'un symbole.
Les n mémoires Memo à Mem3 de la banque de mémoires 300b comprennent en outre une fonctionnalité de validation d'écriture bit par bit. De telles mémoires sont connues de l'homme du métier. Elles comportent un bus de validation en écriture de la même largeur que le bus de données. Lors d'une écriture, seuls les bits du bus de données correspondant à des bits validés sur le bus de validation sont effectivement écrits dans la mémoire, les autres bits du mot adressé restant inchangés. L'adresse du symbole, fournie par le registre Regld1 est constituée de deux parties comme pour l'opération de lecture décrite précédemment.
Dans la configuration d'écriture d'un syrnbole, le circuit de calcul d'adresse 140b fournit les p q bits de poids fort du registre Regid1, correspondant à l'adresse de mot @mot, au circuit d'incrémentation d'adresse 141. L'adresse de mot @mot et l'adresse incrémentée sont fournies toutes les deux à l'interface 160b. Les deux bits de poids fort du pointeur de bit @bit sont fournis au décodeur 142. Le décodeur 142 fournit trois signaux de sélection SelO à Sel2 à destination de l'interface 160b.
L'interface 160b fournit les adresses @MO à @M3 à chacune des mémoires Memo à Mem3. Les trois multiplexeurs 161 à 163 fournissent une adresse aux mémoires Memo à Mem2 respectivement parmi les deux adresses fournies par le circuit de calcul d'adresse 140b en fonction de l'un des signaux de sélection, respectivement SelO à Sel2. La fourniture d'adresse se passe comme pour l'opération de lecture.
Le circuit de calcul d'adresse 140b comporte en outre deux circuits de soustraction 143 et 144 reliés aux q bits de poids faible du bus 121 et au bus 122 pour recevoir respectivement le pointeur de bit @bit et la valeur k représentative de la longueur du symbole à écrire. Les circuits de soustraction 143 et 144 reçoivent également la valeur p indiquant la taille de mot afin de calculer une valeur de décalage égale à p k @bit. La valeur de décalage ainsi calculée est positive ou négative et elle permet de caler le symbole à la suite du symbole précédemment écrit dans la banque de mémoires 300b.
Le circuit de calcul d'adresse 140b comporte également un décaleur à barillet 145 qui reçoit, d'une part, le mot de p bits fourni par le bus 123 et, d'autre part, la valeur de décalage calculée par les circuits de soustraction 143 et 144. Le décaleur à barillet 145 réalise le décalage calculé sur le mot à écrire en bouclant le poids fort sur le poids faible, le décalage étant à gauche si la valeur de décalage est positive, ou à droite si la valeur de décalage est négative. Le mot décalé est ensuite fourni à la banque de mémoires 300b par l'intermédiaire de l'interface 160b.
Le circuit de calcul d'adresse 140b comporte un circuit de sélection de bits 146 qui reçoit le pointeur de bit @bit et la valeur k et qui fournit un mot de validation de p bits EN0 à ENp_1 représentatif des bits à écrire dans la banque de mémoires 300b qui correspond au symbole à écrire après décalage. EN; représente le i1ème bit de poids le plus faible du mot de validation, dont l'état indique la validation ou non de l'écriture du bit de donnée correspondant. Les bits EN; vérifient les conditions suivantes: Si @bit + k p, alors EN; valide l'écriture du bit correspondant si i<p - @bit ET sip-@bit-k>i.
Si @bit + k > p, alors EN; valide l'écriture du bit correspondant si i<p - @bit OUsi(2*p)-@bit-k>i.
Préférentiellement, ces conditions sont implémentées dans un circuit câblé de logique combinatoire afin de pouvoir positionner le mot de validation pendant le premier cycle d'horloge.
Ainsi une opération d'écriture d'un symbole de k bits, avec k <-((n -1) x m)+ 1, est réalisée en un cycle d'horloge. En outre, l'opération d'écriture inclus l'opération de décalage, de sorte que le symbole écrit est positionné à la suite du précédent symbole écrit. L'utilisation d'une sélection d'écriture par bit évite en outre d'avoir à reconstituer un mot de p bits avant de procéder à une écriture.
De nombreuses variantes de l'invention sont possibles sans sortir du cadre de l'invention. Dans l'exemple préféré décrit, le symbole après lecture ou avant écriture est positionné en bits de poids faible du mot de p bits. Il est tout à fait possible de réaliser un adressage conforme à l'invention en positionnant le symbole en bits de poids fort dans le processeur. Il suffit d'effectuer un décalage de bit dans un sens opposé à celui qui est décrit.
Egalement, dans l'exemple décrit, le pointeur de bit @bit est numéroté du poids fort vers le poids faible du mot de p bits. Il est possible d'adopter une numérotation inversée mais cela impose de repérer le bit de poids faible du symbole au lieu du bit de poids fort.
Plus généralement, la position des bits de poids faible et de poids fort est déterminée de manière arbitraire, l'important étant que tous les circuits identifient correctement où se situe le bit de poids le plus fort et le bit de poids le plus faible.
Dans l'exemple préféré, l'adresse de mot @mot et le pointeur de bit @bit sont placés dans un même registre. Les choix de position du symbole et de désignation du premier bit du symbole permettent d'avoir une incrémentation continue du pointeur de bit @bit et de l'adresse de mot @mot.
Avec de tel choix, l'incrémentation de l'adresse de mot et du pointeur de bit @bit se fait en additionnant la valeur k au registre contenant l'adresse de mot et le pointeur de bit @bit. En outre l'utilisation d'un seul registre permet d'économiser un registre dans la banque de registres 120.
Dans l'exemple préféré, différents moyens peuvent être modifiés en fonction des choix évoqués précédemment. C'est notamment le cas de toutes les opérations de calcul réalisées par les circuits de soustraction 143, 144, 153 et 154 ainsi que du circuit de sélection de bits 146.
Egalement, pour effectuer les décalages de bits, le mode de réalisation o préféré utilise des décaleurs à barillet. Tout autre circuit permettant de réaliser des décalages de bits peut être utilisé. Il est également possible de prévoir des moyens spécifiques pour pouvoir réaliser de manière simultanée le décalage et le masquage de bit sans avoir une structure telle que celle décrite.
Claims (12)
1. Procédé d'adressage pour réaliser une opération de lecture ou d'écriture d'un symbole de k bits dans une banque de mémoires (300b) reliée à un processeur (100b) par un bus de données de p bits, ladite banque de mémoires (300b) étant organisée en mots de p bits et disposant d'un adressage par mot, p étant un entier positif supérieur à 4, et k étant un entier compris entre 1 et p, caractérisé en ce que l'adressage d'un symbole se fait à l'aide d'une adresse de mot (@mot) désignant un 'mot de p bits déterminé qui contient un premier bit du symbole, en combinaison avec un pointeur de bit (@bit) désignant le premier bit du symbole dans ledit mot de p bits désigné par ladite adresse de mot (@mot), un décalage de bits étant en outre réalisé, pendant l'opération de lecture ou d'écriture, en fonction de la valeur du pointeur de bit (@bit), sur le mot de p bits lu ou écrit.
2. Procédé selon la revendication 1, la banque de mémoires (300b) comportant n mémoires (Memo à Memn_1) organisées en mots de m bits chacune, m et n étant deux entiers supérieurs ou égaux à deux et tels que n x m = p en sorte que la juxtaposition de n mots de m bits provenant de chacune des mémoires forme un mot de p bits, dans lequel, k étant inférieur ou égal à ((n-1)xm)+1, au moins l'une des mémoires de ladite banque est sélectionnée par l'adresse de mot (@mot) et au moins une autre mémoire de ladite banque est simultanément sélectionnée par l'adresse de mot (@mot) incrémentée d'une unité d'adresse.
3. Procédé selon la revendication 1 ou 2 s"appliquant à une opération d'écriture, dans lequel une validation d'écriture bit par bit étant prévue pour le mot de p bits à écrire dans la banque de mémoires (300b), seuls les k bits correspondant au symbole à écrire après décalage sont validés pour l'écriture.
4. Procédé selon la revendication 3, dans lequel le décalage de bits est un décalage amenant le symbole dans une position contiguë à une position d'un autre symbole dans ladite banque de mémoires.
5. Procédé selon la revendication 1 ou 2 s'appliquant à une opération de lecture, dans lequel le décalage de bits amène le symbole en butée de poids faible ou en butée de poids fort dans le mot de p bits et dans lequel un masquage met à zéro ensuite les bits du mot de p bits n'appartenant pas au symbole.
6. Dispositif de traitement pour des symboles de k bits comportant une banque de mémoires (300b) et un processeur (100b) reliés ensemble par au moins un bus de données de p bits, p étant un entier supérieur ou égal à 4, k étant un entier compris entre 1 et p, ladite banque de mémoires (300b) étant organisée en mots de p bits et disposant d'un adressage par mot, caractérisé en ce que le processeur comporte: -des moyens de mémorisation (120, Regld1 à Regld3) aptes à mémoriser une adresse de mot (@mot) et un pointeur de bit (@bit), ladite adresse de mot (@mot) désignant un mot de p bits contenant un premier bit d'un symbole à lire ou à écrire, le pointeur de bit (@bit) désignant le premier bit du symbole dans ledit mot de p bits désigné par ladite adresse de mot (@mot), et des moyens de décalage de bits (145, 153) aptes à effectuer, pendant une opération de lecture ou d'écriture, un décalage de bits sur le mot de p bits lu ou écrit, en fonction de la valeur du pointeur de bit (@bit).
7. Dispositif selon la revendication 6, dans lequel les moyens de mémorisation comportent un premier registre (RegId1) apte à mémoriser l'adresse de mot (@mot) en tant que bits de poids fort et le pointeur de bit (@bit) en tant que bits de poids faible.
8. Dispositif selon l'une des revendications 6 ou 7, dans lequel le processeur comporte au moins un deuxième registre (RegId2) pour mémoriser la valeur de k.
9. Dispositif selon l'une des revendications 6 à 8, dans lequel la banque de mémoires comporte n mémoires (Memo à Mem _1) de m bits chacune, n et m étant deux entiers supérieurs à deux et tels que p = n x m, chaque mémoire étant adressable individuellement, et dans lequel le processeur comporte: - des moyens d'incrémentation d'adresse (141) pour produire une adresse incrémentée correspondant à l'adresse de mot (@mot) incrémentée d'une unité d'adresse, et - des moyens de sélection (142, 161-163) pour sélectionner l'adresse de mot (@mot) ou l'adresse incrémentée à fournir en entrée de la banque de mémoires.
10. Dispositif selon l'une des revendications 6 à 9, dans lequel le processeur comporte des moyens de masquage (154) pour mettre à zéro p -k bits d'un mot de p bits lu dans la banque de mémoires qui ne correspondent pas au symbole de k bits.
11. Dispositif selon la revendication 10, dans lequel le processeur comporte: - des entrées de données destinées à être couplées au bus de données; - au moins un registre de données (120) apte à recevoir un symbole lu dans la banque de mémoires (300b), - une unité arithmétique et logique (150b) apte à effectuer diverses opérations sur des données présentes sur des entrées de données les entrées de données en réponse à un code d'opération, ladite unité arithmétique et logique incluant les moyens de décalage (153) et les moyens de masquage (154), et étant placée sur un chemin de données entre lesdites entrées de données et ledit registre de données.
12. Dispositif selon l'une des revendications 6 à 11, dans lequel ladite banque de mémoires dispose d'une fonctionnalité de validation d'écriture s'effectuant bit par bit à l'aide d'un mot de validation de p bits, et dans lequel le processeur comporte des moyens de génération (146) d'un mot de validation d'écriture pour fournir un mot de validation pour valider l'écriture uniquement des bits correspondant au symbole à écrire dans la banque de mémoires.
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| FR0503242A FR2884002B1 (fr) | 2005-04-01 | 2005-04-01 | Procede d'adressage d'un symbole dans une memoire, et dispositif de traitement de symboles |
| US11/392,466 US7472255B2 (en) | 2005-04-01 | 2006-03-29 | Method for addressing a symbol in a memory and device for processing symbols |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| FR0503242A FR2884002B1 (fr) | 2005-04-01 | 2005-04-01 | Procede d'adressage d'un symbole dans une memoire, et dispositif de traitement de symboles |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| FR2884002A1 true FR2884002A1 (fr) | 2006-10-06 |
| FR2884002B1 FR2884002B1 (fr) | 2008-03-07 |
Family
ID=35134861
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| FR0503242A Expired - Fee Related FR2884002B1 (fr) | 2005-04-01 | 2005-04-01 | Procede d'adressage d'un symbole dans une memoire, et dispositif de traitement de symboles |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US7472255B2 (fr) |
| FR (1) | FR2884002B1 (fr) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9478312B1 (en) * | 2014-12-23 | 2016-10-25 | Amazon Technologies, Inc. | Address circuit |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP0322880A2 (fr) * | 1987-12-29 | 1989-07-05 | Oki Electric Industry Company, Limited | Microprocesseur à mémoire de données par mot |
| EP1324202A2 (fr) * | 2001-12-28 | 2003-07-02 | Fujitsu Limited | Dispositif et procédé de traitement d'information |
| US20030126399A1 (en) * | 2001-04-30 | 2003-07-03 | Troutman Bruce L. | Architecture to relax memory performance requirements |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS62103893A (ja) * | 1985-10-30 | 1987-05-14 | Toshiba Corp | 半導体メモリ及び半導体メモリシステム |
| FR2757287B1 (fr) | 1996-12-17 | 1999-02-26 | Sgs Thomson Microelectronics | Microprocesseur dedie au traitement de flux de bits dans un systeme de compression/decompression d'images animees |
-
2005
- 2005-04-01 FR FR0503242A patent/FR2884002B1/fr not_active Expired - Fee Related
-
2006
- 2006-03-29 US US11/392,466 patent/US7472255B2/en not_active Expired - Fee Related
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP0322880A2 (fr) * | 1987-12-29 | 1989-07-05 | Oki Electric Industry Company, Limited | Microprocesseur à mémoire de données par mot |
| US20030126399A1 (en) * | 2001-04-30 | 2003-07-03 | Troutman Bruce L. | Architecture to relax memory performance requirements |
| EP1324202A2 (fr) * | 2001-12-28 | 2003-07-02 | Fujitsu Limited | Dispositif et procédé de traitement d'information |
Non-Patent Citations (1)
| Title |
|---|
| "METHOD FOR HANDLING UNALIGNED OPERANDS THAT EXTEND ACROSS MEMORY PROTECTION BOUNDARIES IN A MICROPROCESSOR", IBM TECHNICAL DISCLOSURE BULLETIN, IBM CORP. NEW YORK, US, vol. 37, no. 4B, 1 April 1994 (1994-04-01), pages 597 - 598, XP000451366, ISSN: 0018-8689 * |
Also Published As
| Publication number | Publication date |
|---|---|
| US20060236021A1 (en) | 2006-10-19 |
| US7472255B2 (en) | 2008-12-30 |
| FR2884002B1 (fr) | 2008-03-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| FR2752630A1 (fr) | Traitement de donnees multiples a une seule instruction dans un processeur de signaux multisupport | |
| CA2758366C (fr) | Systeme, dispositif et methode pour les permutations a la volee des memoires vectorielles pour executer des operations intra- vectorielles | |
| JPH03502260A (ja) | 二重モード加算回路 | |
| EP0267836B1 (fr) | Codeur-décodeur algébrique de codes en blocs Reed Solomon et BCH, applicable aux télécommunications numériques | |
| FR2726668A1 (fr) | Procede de mise en oeuvre de reduction modulaire selon la methode de montgomery | |
| FR2724074A1 (fr) | Enregistreur numerique de sons compresses. | |
| US6844834B2 (en) | Processor, encoder, decoder, and electronic apparatus | |
| EP0485921B1 (fr) | Dispositif prévu pour le traitement de l'algorithme de Viterbi comprenant un processeur et un opérateur spécialisé | |
| JPH11504744A (ja) | 単精度または倍精度で算術演算を行なうためのシステム | |
| FR2588981A1 (fr) | Processeur de traitement de signal numerique | |
| FR2831971A1 (fr) | Procede de memorisation de donnees avec correction d'erreur | |
| FR2678400A1 (fr) | Processeur de protocole destine a l'execution d'un ensemble d'instructions en un nombre reduit d'operation. | |
| FR2738366A1 (fr) | Processeur informatique presentant une architecture pipeline et procede d'utilisation de celui-ci | |
| FR2884002A1 (fr) | Procede d'adressage d'un symbole dans une memoire, et dispositif de traitement de symboles | |
| FR2871976A1 (fr) | Decodeur ldpc | |
| FR3101980A1 (fr) | Processeur | |
| US7668897B2 (en) | Result partitioning within SIMD data processing systems | |
| JP3723115B2 (ja) | 単一命令多重データ処理 | |
| EP0632388B1 (fr) | Système à processeur, notamment de traitement d'image comprenant un bus mémoire de taille variable | |
| EP0778518B1 (fr) | Procédé de production d'un paramètre J0 associé à la mise en oeuvre d'opérations modulaires selon la méthode de Montgomery | |
| FR3136571A1 (fr) | Procédé et dispositif pour arrondir dans un calcul à précision variable | |
| EP1027643B1 (fr) | Microprocesseur pipeline a saut conditionnel en un cycle d'horloge | |
| FR2864320A1 (fr) | Nouvelle architecture de memoire fifo et procede de gestion d'une telle memoire. | |
| EP0254628B1 (fr) | Circuit de traitement numérique de signal réalisant une transformation cosinus | |
| FR3134206A1 (fr) | Système de gestion d'un groupe de registres tournants défini de façon arbitraire dans des registres de processeur |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| ST | Notification of lapse |
Effective date: 20131231 |