FR2823874A1 - Procede d'adressage de memoire optimise - Google Patents

Procede d'adressage de memoire optimise Download PDF

Info

Publication number
FR2823874A1
FR2823874A1 FR0105405A FR0105405A FR2823874A1 FR 2823874 A1 FR2823874 A1 FR 2823874A1 FR 0105405 A FR0105405 A FR 0105405A FR 0105405 A FR0105405 A FR 0105405A FR 2823874 A1 FR2823874 A1 FR 2823874A1
Authority
FR
France
Prior art keywords
memory
address
addressed
addressing
module
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
Application number
FR0105405A
Other languages
English (en)
Other versions
FR2823874B1 (fr
Inventor
Jean Paul Henriques
Fabrice Devaux
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics SA
Original Assignee
STMicroelectronics SA
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by STMicroelectronics SA filed Critical STMicroelectronics SA
Priority to FR0105405A priority Critical patent/FR2823874B1/fr
Priority to PCT/FR2002/001328 priority patent/WO2002086700A1/fr
Priority to EP02727670A priority patent/EP1381940A1/fr
Priority to US10/475,485 priority patent/US7966473B2/en
Publication of FR2823874A1 publication Critical patent/FR2823874A1/fr
Application granted granted Critical
Publication of FR2823874B1 publication Critical patent/FR2823874B1/fr
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3875Pipelining a single stage, e.g. superpipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0215Addressing or allocation; Relocation with look ahead addressing means

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

L'invention concerne un procédé pour adresser en lecture un emplacement d'une parmi plusieurs mémoires à l'aide d'une adresse codée provenant d'une instruction. Le procédé comprend les étapes suivantesa) prédire (104) la mémoire correspondant à l'emplacement à adresser,b) décoder (108) l'adresse de l'emplacement à adresser et déterminer (109) la mémoire à adresser,c) gérer (105) un éventuel conflit de lecture et de réécriture en supposant que la mémoire prédite est la mémoire à adresser,d) commander (111) l'adressage de la mémoire prédite à l'issue de l'étape de gestion (105), e) à l'issue de l'étape b), déterminer (110) si la mémoire à adresser correspond à la mémoire prédite, etf) si la mémoire à adresser ne correspond pas à la mémoire prédite, gérer (115) un éventuel conflit de lecture et de réécriture dans la mémoire à adresser et adresser l'emplacement de la mémoire à adresser.

Description

code de sécurité.
PRO _ DÉ D'ADRESSAGE DE MÉMOIRE OPTIMISÉ
La présente invention concerne l'adressage de mémoire et plus particulièrement la recherche en mémoire de données par
un dispositif informatique tel qu'un microcontrôleur.
La figure 1 représente schématiquement la structure d'un microcontrôleur classique. Le microcontrôleur 1 comprend un contrôleur de programme FPC ("Fetch and Pipeline Controller" ou "contrôleur de capLure et de séquencement"), un module d'adresse ADU (''ADdress Unit" ou,imodule d'adresse") et un module FXU
('FiXed point Unit" ou ''module de calcul").
Le contrôleur de programme FPC est relié à une mémoire de programme 3 externe au microcontrôleur par l'intermédiaire d'un contrôleur de mémoire de programme 5, lui aussi externe au microcontrôleur. Le contrôleur de programme FPC comprend un module de précapLure 7 qui, au cours d'un cycle d'horloge, stocke
l' instruction courante et assure le séquencement du microcontrôleur.
Le contrôleur de programme FPC comprend aussi un module de capLure et de décodage 9. A chaque nouveau cycle d'horloge, le contenu du module 7 est transféré dans le module 9. Ainsi, au cours d'un cycle n, le module 9 contient l' instruction du cycle précédent, n-1, et la décode. Le décodage de l' instruction du cycle n-1 permet de connaître la nature de l'opération à effectuer, l'adresse sous forme codée du ou des opérandes à utiliser dans l'opération et l'adresse sous forme codée de l' emplacement mémoire o le résultat de l'opération doit être placé. Le module d'adresse ADU comprend d'abord un module 11 de décodage d'adresse. A chaque nouveau cycle, le module de capture et de décodage 9 transfère son contenu au module de décodage d'adresse 11. Le module 11 décode les adresses codées qu'il reçoit, c'est-à-dire qu'il détermine, à partir de ces adresses, l'adresse physique ou adresse réclle des opérandes à récupérer en mémoire, ainsi que l'adresse physique de lempla
cement o doit être stocké le résultat de l'opération.
Le module d'adresse ADU comprend ensuite un module 13 qui permet d'accéder en lecture au support mémoire contenant les opérandes. De façon classique, le microcontrôleur 1 comporte deux mémoires internes de donnces, une mémoire vive 15 accessible par l'intermédiaire d'un contrôleur mémoire 17 et un banc de registres 19 accessibles directement. Une partie de la mémoire 15 est affectée à une pile adressoe par un pointeur de pile. Dès que le module 11 a fini de décoder les adresses à utiliser (et de 2 0réaliser divers traitements qui seront vus par la suite), il transfère son contenu au module d'accès en lecture 13. Le module 13 adresse alors en lecture, au début d'un cycle, la mémoire appropriée et récupère les opérandes à utiliser. Cette opération, qui dure un cycle, est symbolisée par les flèches 21 et 22 allant 2 5respectivement du contrôleur 17 et du banc de registres 19 au
module 13.
Au cycle suivant, le module 13 transfère son contenu à un module d'exécution 23 qui constitue 1' unique module du module EU. Le module 23 réalise la ou les opérations arithmétiques ou 3 0logiques requises par l' instruction et fournit le résultat de l'opération. Le module 23 transfère ensuite le résultat de l'opération et l'adresse physique à laquelle le résultat doit être stocké à un module de rcécriture 25. Le module 23 peut accéder directement à un registre du banc de registres 19 en écriture, ce qui est sy olisé par la flèche 24. Par exemple, le module 23 peut modifier, si cela est requis, le contenu d'un
registre du banc utilisé comme pointeur diadresse.
Le module de réccriture 25 fait aussi partie du module d'adresse ADU. I1 adresse la mémoire 15 en écriture, ce qui est symbolisé par la flèche 26, afin d'y stocker le résultat de l'opération. Le module 25 peut aussi adresser un registre du banc de registres 19, comme cela est symbolisé par la flèche 27, pour y stocker le résultat si cela est requis. Le module 25 réalise sa
tâche en un cycle d'horloge.
Les modules 7, 9, 11, 13, 23 et 25 du microcontrôleur (on pourrait nommer ces modules "étages") réalisent une structure dite "pipeline", cest-àdire une structure dans laquelle le contenu d'un module est transféré séquentiellement au module suivant. Le microcontrôleur contient ainsi six instructions en même temps, à divers stades de traitement. Si chaque module ntutilisait qu'un cycle d'horloge pour accomplir sa tâche, le traitement d'une instruction ne prendrait que six cycles et le
microcontrôleur fonctionnerait de facon optimale.
En pratique cependant, une limitation vient du module dadresses ADU, et en particulier du module de décodage d'adresse 11. En effet, comme on le verra par la suite, certaines adresses nécessitent un temps de décodage élevé et le module 11 a besoin de deux cycles dhorloge pour fournir les adresses physiques correspondantes. I1 en résulte la perte d'un cycle et le fonc
tionnement du microcontrôleur n'est pas optimal.
Un objet de la présente invention est de prévoir un
procédé d'adressage de mémoire moins long que dans l'art anté-
rieur. Pour atteindre cet objet, la présente invention prévoit un procédé pour adresser en lecture un emplacement d'une parmi plusieurs mémoires à l' aide dune adresse codée provenant dune instruction. Le procédé comprend les étapes suivantes: a) prédire, parmi les plusieurs mémoires, la mémoire correspondant à l' emplacement à adresser, b) décoder l'adresse de l' emplacement à adresser et déterminer la mémoire à adresser, c) à l' issue de l'étape a), gérer un éventuel conflit de lecture et de rcécriture en supposant que la mémoire prédite est la mémoire à adresser, d) commander ladressage de la mémoire prédite à lissue de l'étape de gestion c), e) à l'issue de l'étape b), déterminer si la mémoire à adresser correspond à la mémoire prédite, et f) si la mémoire à adresser ne correspond pas à la mémoire prédite, gérer un éventuel conflit de lecture et de réécriture dans la mémoire à adresser et adresser l' emplacement
de la mémoire à adresser.
Selon un mode de réalisation de la présente invention, l'étape a) utilise une table contenant une historique des
mémoires adressées lors des instructions précédentes.
Selon un mode de réalisation de la présente invention, la table renferme un nombre de registres égal au nombre de pointeurs utilisés pour déterminer une adresse, chacun desdits registres étant affecté à un pointeur particulier, et dans lequel chacun desdits registres contient une information permettant de déterminer laquelle des mémoires a été adressée par ledit
pointeur lors de sa dernière utilisation.
Selon un mode de réalisation de la présente invention, l'étape de décodage et de détermination b) débute en même temps
que l'étape de prédiction a).
Selon un mode de réalisation de la présente invention, en cas de conflit de lecture et rcécriture dans une même mémoire,
la priorité est donnée à la réécriture.
Selon un mode de réalisation de la présente invention, une étape d'examen de contraintes temporelles est réalisce après la gestion de conflit de lecture et de réécriture des étapes c) ou f), afin d' examiner si la lecture de la mémoire à lire peut
être effectuée au cours du cycle dhorloge suivant.
Selon un mode de réalisation de la présente invention, les adresses codées appartiennent à un des types suivants:
adresse courte, adresse longue ou adresse indirecte.
Selon un mode de réalisation de la présente invention, le procédé comprend une étape de détermination de type d'adresse et les étapes de prédiction a), de gestion c), d'adressage d) et de comparaison e) ne sont réalisoes que si ladresse codée de
l' emplacement à adresser est une adresse indirecte.
Selon un mode de réalisation de la présente invention, la table est invalidée si l'adresse codée de lemplacement à
adresser n'est pas une adresse indirecte.
Selon un mode de réalisation de la présente invention, le procédé est réalisé par un dispositif de type microcontrôleur ou microprocesseur, et les mémoires pouvant être adressoes sont une mémoire de type SRAM interne audit dispositif, une mémoire de type DPRAM interne audit dispositif et une mémoire externe audit dispositif. 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, déjà décrite, représente schématiquement la structure dun microcontrôleur classique; les figures 2A, 2B, 2C1 et 2C2 représentent des types d'adresse utilisés dans la présente invention; la figure 3 représente un diagramme temporel illustrant le fonctionnement du module diadresse dans l'art antérieur; les figures 4A et 4B représentent chacune un diagramme temporel illustrant le fonctionnement du module d'adresse selon la présente invention; et la figure 5 représente schématiquement un organigramme
résumant la mise en oeuvre de la présente invention.
Le microcontrôleur utilisé dans la présente invention a une structure globalement semblable à celle du microcontrôleur de la figure 1 et de mêmes références correspondent à des éléments
identiques ou réalisant, du moins en partie, la même fonction.
Les part icularités du microcontrôleur de la présente invent ion par rapport à celui de la figure 1 apparaîtront au cours de la
description, notamment lors de la description de la figure 5.
Les adresses physiques utilisées dans la présente invention sont des adresses de 24 bits. Comme cela a été mentionné, les instructions reçues par le microcontrôleur ne comportent pas d'adresses physiques, mais des adresses codées plus courtes permettant de déterminer les adresses physiques correspondantes. De manière classique, dans la présente invention, les
adresses codées sont de trois types.
En figure 2A, est représentée une adresse physique de type "court". Cette adresse, dite courte, comporte 8 bits, bO à b7. Les bits bO à b7 correspondent à l'adresse d'un registre particulier comportant 24 bits déterminés. Les 24 bits du registre déterminé par l'adresse courte forment une base fixe qui doit être ajoutée à l'adresse courte pour obtenir l'adresse
physique correspondante.
En figure 2B, est représentée une adresse codée de type
"long''. Cette adresse, dite longue, comporte 16 bits, bO à bl5.
Les 16 bits de l'adresse longue forment les 16 bits de poids faible de l'adresse physique correspondante. Les 8 bits de poids fort de l'adresse physique sont déterminés à partir de bits
particuliers de l'adresse longue. A titre dexemple non limi-
tatif, dans une mise en oeuvre de la présente invention, les deux bits de poids fort bl5, bl4 de l'adresse longue sont utilisés pour adresser un parmi quatre registres programmables de 8 bits représentant les 8 bits de poids fort de 1'adresse physique correspondante. En figure 2C1, est représentée une adresse codée de type "indirecti'. Cette adresse, dite ''indirecte", comporte un nombre de bits réduit qui représentent l'adresse d'un registre particulier R. Le registre R sert de pointeur d'adresse. Son contenu, non fixe, sert à déterminer l'adresse physique souhaitée. A titre d'exemple non limitatif, dans une mise en oeuvre de la présente invention, les adresses indirectes comportent quatre bits, bO à b3. Ces quatre bits permettent d'adresser un de seize pointeurs d'adresse. Comme cela est illustré en figure 2C2, chaque pointeur d'adresse est un registre de 16 bits, bO à bl5. A partir des 16 bits du pointeur d'adresse, l'adresse physique est détermince de la même manière que pour les adresses longues. Du fait de sa grande souplesse et du faible nombre de bits qu'il requiert, ce mode d'adressage, dit indirect,
est très généralement utilisé.
L'étape de décodage de l'adresse codée est réalisée par le module 11. Les adresses indirectes sont les plus longues à décoder et nocessitent une durée égale à environ un quart de
cycle d'horloge.
Après avoir déterminé l'adresse physique de 24 bits, le module 11 détermine quel est le support mémoire à adresser. Dans la présente invention, en plus des mémoires internes au microcontrôleur, le module d'adresse ADU peut accéder à une ou plusieurs mémoires externes au microcontrôleur. Par ailleurs, ce qui, dans la présente invention, correspond à la mémoire vive 15 de 1'art antérieur comprend une mémoire de type SRAM (' Synchronous Random Access Memory'' - ',mémoire vive synchrone"), une mémoire de type DPRAM ('Dual Port Random Access Memoryi' "mémoire vive à double accès"), une pile pouvant faire partie d'une des deux mémoires précédentes et des registres, comme les registres permettant de déterminer les adresses physiques à
l' aide des adresses codées.
Pour déterminer la mémoire à adresser, le module 11 examine les bits de l'adresse physique, par exemple en commencant
par les bits de poids fort. En effet, les adresses des empla-
cements de chaque mémoire particulière se suivent en général et
vont d'une adresse inférieure ou minimale à une adresse supé-
rieure ou maximale. Par exemple, les adresses (en notation héxadécimale) allant de 008000 à OOFBFF correspondent à des emplacements dans la mémoire SRAM, les adresses de OOFCOO à OOFDFF correspondent à des emplacements dans la mémoire DPRAM, etc. Si l'adresse ne correspond à aucun emplacement d'une mémoire interne au microcontrôleur, on en déduit que la mémoire à adresser est une mémoire externe. S'il y a plusieurs mémoires externes, on procède comme précédemment pour déterminer de quelle mémoire il s'agit. Cette étape de détermination de la mémoire à adresser est longue. Il peut être nécessaire d' examiner un grand nombre de bits de l'adresse physique, 12 par exemple, avant de connaître la mémoire à adresser. La durée de cette étape est de
l'ordre dun quart de cycle d'horloge.
Ensuite, le module 11 procède à la gestion d'un éventuel conflit entre la lecture et la réécriture dans un même support mémoire. Au cours de cette étape, aussi nommoe étape de gestion de conflit de bande passante, le module 11 détermine si l' instruction présente dans le module 25 nécessite une réécriture dans la même mémoire que celle qui doit être adressoe en lecture par l' instruction qu'il contient. Si c'est le cas, la priorité est en général donnce à la réécriture dans la mémoire, car l' instruction correspondante est plus ancienne que l' instruction demandant la lecture. Cette étape de gestion est en général moins longue que les précédentes, et a une durce égale à environ 15
d'un cycle d'horloge.
Après l'étape de gestion, le module 11 réalise une quatrième étape consistant à déterminer si les contraintes temporelles liées à l'accès de la mémoire à adresser sont respectées. En effet, les mémoires, les mémoires synchrones en particulier, doivent recevoir les commandes d'adresses à lire en un temps déterminé avant le début (front montant de l'horloge, par exemple) du cycle au cours duquel a lieu la lecture. Ce temps déterminé permet en particulier à la mémoire de décoder les commandes fournies (si cela n'est pas respecté, la mémoire a un comportement non prévisible et la valeur lue ne peut être utilisée). Cette quatrième étape dure environ 10 d'un cycle d'horloge. Si les contraintes temporelles sont respectées, le module 11 transfère son contenu dans le module 13 qui prépare
l'adressage et réalise la lecture de la mémoire au cycle suivant.
Si les contraintes temporelles ne sont pas respectées, le module
11 transfère son contenu au module 13 au début du cycle suivant.
Le module 13 dispose alors dun cycle pour préparer l'adressage
et la lecture n'est faite qu'au cycle daprès.
Selon le type d'adresse codée utilisé par l'instruc-
tion, la durée des étapes réalisces par le module 11 est plus ou moins longue. Dans le cas d'adresses courtes ou longues, dans l'art antérieur comme dans l'invention, les contraintes temporelles sont généralement respectées et la lecture de la mémoire à adresser peut être faite au cycle suivant. Par contre, dans le cas des adresses indirectes, les contraintes temporelles ne sont jamais respectées dans lart antérieur et deux cycles
dhorloge sont requis avant la lecture de la mémoire.
La figure 3 représente trois cycles consécutifs d'horloge, et les diverse étapes réalisées par le module d'adresse dans l'art antérieur, dans le cas d'une adresse indirecte. Au cours du premier cycle, allant de O à 100, le module 11 de l'art antérieur réalise les étapes de décodage d'adresse, de détermination de la mémoire à adresser, de gestion de conflit et d'examen des contraintes temporelles. Ces quatre étapes successives, notées A, s, C, D, durent respectivement 25 \, 25 %, 15 et 10 du temps du premier cycle. Le module 11 a terminé son traitement au temps noté 75, correspondant à 75 du premier cycle. l ne reste que 25 de la durée d'un cycle pour terminer le premier cycle, et cette durce est insuffisante pour permettre la préparation de l'adressage mémoire par le module 13. En consé quence, le module 11 ne transfère son contenu dans le module 13 quau début du deuxTème cycle d'horloge, allant de 100 à 200. La lecture dans la mémoire ne débute alors qu'au début du troisième cycle, allant de 200 à 300, et l'opérande recherché est dispo
nible au temps 300.
On voit que, dans l'art ant6rieur, la lecture ncessite trois cycles d'horloge dans le cas d'une adresse indirecte, et
que le deuxtAme cycle est trAs sous-utilis6. Dans certains micro-
contraleurs de 1'art antArieur, d'ailleurs, les tapes C et O sont ralises directement au ^ L du deuxime cycle dans le cas
des adresses indirectes.
' invention va Atre maintenant dcrite en relation avec les figures 4A et 4B qui illustrent le traiLement, selon la prAsente invention, du mme cas que celui envisag dans la figure 3. Comme cela est reprAsent en figure 4A, le module 11 de la prAsente invention rdalise les Atapes de dAcodage d'adresse A et de dtermination de mmoire adresser B. Comme en [igure 3, ces tapes ont une dure totale Agale 50 de la dure du premier
cycle, allant de O 100.
En mme temps que 1'6Lape A, le module 11 ralise une ALape de prAdicLion A'. CeLLe ALape de prAdicLion consisLe prdire la mmoire qui doiL tre adresse. ['6tape A', repr6 sente en figure 4B, commence au dbut du premier cycle et a une durde approximaLtve gale 20 du premier cycle. La mmoire prAdiLe esL suppose tre la ^ ire adresser. Pour dAterminer la mmoire prAdiLe, on peuL utiliser diverses Lables plus ou
moins complexes contenant 1'hisLorique des insLructions prc6-
dentes, ou du moins l'bistorique des mmoires prAcAdemment adresses, afin de faire des pronostics sur la mmoire qui doit Atre adresse lors de 1' instruction courante. On peut aussi simpl _ nt utiliser comme mmoire prAdite la ^ ire qui a Atd adresse lors de l' instruction prAcAdente. A la premiAre instrUc tion d'un programme, on peut choisir uDe ^ ire quelconque comme
mmoire prAdite.
A la suite de 1'6tape A', le module 11 ralise une Atape de gestion de conflit C' (figure 45). Au cours de cette Atape, il est examinA si la mmoire prAdite correspond la mmoire en attente de r66criture par le module 25. Supposons dans un premier temps que ce ne soit pas le cas. Aprs 1'6tape de gestion C', le module 11 ralise uDe Atape C' (toujours en figure 4B) diexamen pour savoir si les contraintes temporelles sont respectées. Les étapes C' et D' durent respectivement 15 et de la durée d'un cycle et l 'ensemble des étapes A', C' et D' a une durée égale à environ 45 du premier cycle. On notera que, dans ce contexte, l'étape D' conduit touj ours à un respect des contraintes temporelles et que cette étape pourrait être supprimée. A la fin de ltétape s, la mémoire à adresser est connue. Le module 11 réalise alors une étape E (figure 4A) pour déterminer si la mémoire prédite correspond à la mémoire à
adresser. Cette étape dure environ 10 du temps d'un cycle.
Si la prédiction est bonne, c'est-à-dire si la mémoire prédite correspond effectivement à la mémoire à adresser, l' ensemble du traitement réalisé par le module 11 dans la présente invention a une durée totale égale à 60 du premier cycle. La durée restante du premier cycle (40 du cycle) est alors suffisante pour que le module 11 présente la demande d'adressage au module 13 au cours du premier cycle. Le module 13 prépare ladressage de la mémoire à adresser au cours du premier cycle et la lecture a lieu au cours du deuxième cycle d'horloge, allant de 100 à 200. Par rapport à l'art antérieur, la présente invention permet le gain dun cycle d'horloge. Il ny a pas de "temps mort,' dans le traitement des instructions et le fonction
nement du microcontrôleur est optimisé.
Si la mémoire prédite ne correspond pas à la mémoire à adresser, ce qui est connu à la fin de l'étape E, le module 11 réalise, à la suite de l'étape E ou au début du deuxième cycle, une nouvelle étape de gestion de conflit. Au cours de cette étape, le module 11 examine si la mémoire à adresser correspond à la mémoire en attente de réécriture dans le module 25. Si ce ntest pas le cas, le module 11 réalise une nouvelle étape, optionnelle, d'examen des contraintes temporelles, dans ce cas touj ours respectées. Il fait ensuite préparer l'adressage de la mémoire à adresser par le module 13. Ces étapes ont lieu au cours du deuxième cycle et la lecture de la mémoire intervient au cours du troisième cycle. La durée requise pour traiter linstruction
dans ce cas est identique à celle de lart antérieur.
Dans les programmes utilisés par les microcontrôleurs, un grand nombre d' instructions consécutives concernent souvent l'adressage dun même support mémoire. Aussi, dans un programme, un même pointeur d'adresse est souvent alloué à un même support mémoire. La prédiction de la mémoire à adresser en fonction d'une historique des mémoires adressces précédemment a de grandes chances de succès et le gain de temps permis par la présente
invention est considérable.
Dans la présente invention comme dans l'art antérieur, en cas de conflit entre une lecture et une réécriture dans la mémoire à adresser, la priorité est en général donnée à la réécriture. La figure 5 représente un organigramme résumant la mise en oeuvre de la présente invention et permettant un exposé plus
détaillé de la manière dont peut être réalisée la prédiction.
Tout d'abord, au niveau du contrôleur de programme FPC, on examine (étape 101) si l' instruction 100 concerne au moins une adresse indirecte. Si ce n'est pas le cas (pas d'adresse requise ou que des adresses courtes ou longues), le traitement de
linstruction est réalisé de façon classique (étape 102), c'est-
à-dire que le décodage des adresses, la détermination de la mémoire à adresser, la gestion d'éventuels conflits, l'examen des contraintes temporelles et la transmission au module 13 sont
normalement effectués par le module 11 au cours dun seul cycle.
Si l'adresse est une adresse indirecte, le module 11 commence, à linstant O (début du premier cycle o le module d'adresse ADU commence à traiter l' instruction), deux traitements simultanés. D'une part, il détermine la mémoire prédite (étape
104), à l' aide dune information qu'il recoit d'une table 30.
Ensuite, le module 11 réalise la gestion dun éventuel conflit de priorité concernant la mémoire prédite (étape 105). Comme cela a été dit, s'il y a conflit, la réécriture sera réalisée priori tairement à la lecture (bloc 106). S'il ny a pas de conflit, le module 11 examine en 107, de manière optionnelle on l'a vu, si les contraintes temporelles sont respectées, puis il commande (étape 111) la lecture de la mémoire prédite à laide de l'adresse caleulée, comme on le verra par la suite, au cours d'une étape 108 de décodage de l'adresse codée. La lecture de la mémoire prédite est réalisée au cours du deuxième cycle (bloc 112). D'autre part, à l' instant 0, le module 11 commence le décodage (calcul) de l'adresse indirecte (étape 108). Ensuite, il détermine la mémoire à adresser effectivement (étape 109). Après cela, il détermine en 110 si la mémoire prédite correspond effectivement à la mémoire à adresser. Si c'est le cas, aucune
action n'est prise.
Si la mémoire prédite ne correspond pas à la mémoire à adresser, la donnée lue dans la mémoire prédite ne sera pas prise en compte. Le module 11 met dune part à j our la table 30 (étape 114) et d'autre part réalise une nouvelle étape de gestion de conflit de réccriture-lecture, cette fois en ce qui concerne la mémoire à adresser (étape 115). Cette gestion de conflit est de préférence réalisée par les mêmes éléments matériels que ceux qui sont utilisés pour gérer les conflits de la mémoire prédite. La mise à j our de la table et la gestion des conflits concernant la mémoire à adresser peuvent être faits dès que l'on sait que la mémoire prédite n'est pas la mémoire à adresser, ou au début du deuxième cycle, comme cela est représenté. En cas de conflit, la priorité est donnée à la réécriture. S' il ny a pas de conflit, il est procédé (étape 115) à l'examen des contraintes temporelles, optionnel car ces contraintes sont toujours respectées dans ce cas. La commande en lecture de la mémoire à adresser a lieu à l'étape 111' et la lecture de la mémoire à
adresser a lieu au cours du troisième cycle (étape 112').
On va maintenant décrire plus précisément le contenu de la table 30 et la manière dont elle est utilisoe. On a vu que, dans la présente invention, il y a seize pointeurs d'adresse et un pointeur de pile. a table 30 contient dix-sept registres 31, correspondant à chacun des dix-sept pointeurs utilisés. Chacun des registres 31 renferme une information indiquant la mémoire qui a été adressce par le pointeur concerné la dernière fois o ce pointeur a été utilisé dans une instruction. Les registres 31 peuvent être des registres de trois bits, ce qui suffit pour permettre la discrimination de huit mémoires. Si les seules mémoires adressoes par les pointeurs sont les mémoires SRAM, DPRAM et une seule mémoire externe, on pourra utiliser deux bits seulement pour les registres 31 ou utiliser trois bits avec un codage simple, par exemple les bits "001" correspondant à la mémoire SRAM, les bits ''010' correspondant à la mémoire DPRAM, et
les bits 'i100t correspondant à la mémoire externe.
Lorsqu'une adresse indirecte est détectée au niveau du contrôleur FPC, cette adresse est examinée au niveau d'un bloc 121 pour déterminer le pointeur à utiliser pour le décodage de l'adresse codée. Cette information est utilisée pour commander un multiplexcur 32 associé à la table 30. Le multiplexeur 32 a dix sept entrces, dont chacune est reliée à un des registres 31. La commande du multiplexeur 32 consiste à sélectionner le registre correspondant au pointeur utilisé dans l' instruction. Le multi plexeur 32 fournit alors, sur sa sortie 34, une information correspondant à la mémoire qui a été adressce par ce pointeur lors de sa dernière utilisation. Cette information est fournie au module 11. Le module 11 décode cette information au cours de l'étape 104 et choisit comme mémoire prédite la mémoire adressse
précédemment par le pointeur utilisé. En cas d'insuccès de la prédiction, une mise à jour de la table 30 est
nécessaire et est réalisée de la manière suivante. Le code correspondant à la mémoire à adresser est déterminé (par exemple, ''001'' pour la mémoire SRAM dans l'exemple donné ci-dessus) et il est stocké dans le registre 31 correspon
dant au pointeur concerné, à la place de l'ancien code.
Au début de chaque nouveau programme, on peut remplir tous les registres de la table 30 avec un même code, par exemple
celui correspondant à la mémoire SRAM.
Dans une variante de la présente invention, la table 30 est invalidée (bloc 122) lorsque ltinstruction courante n'utilise pas d'adresse indirecte. L' invalidation de la table 30 peut être réalisoe au niveau de la table 30 elle-même ou au niveau du multiplexeur 32. Lorsque la table 30 est invalidée, la sortie 34 du multiplexcur ne délivre aucune information et l'étape de prédiction A' n'a pas lieu. On peut aussi, lorsque la table 30 est invalidée, prévoir par exemple que la sortie du multiplexcur
32 délivre un code ne correspondant à aucun support mémoire.
La présente invention est susceptible de diverses
variantes et modifications qui apparaîtront à l'homme de l' art.
En particulier, le dispositif mettant en oeuvre la présente invention pourra être un microcontrôleur, un microprocesseur, ou
tout autre dispositif approprié.
La structure des adresses physiques, la manière dont est codée, dans une adresse physique, la mémoire à adresser, le nombre de pointeurs utilisés, le nombre des registres ainsi que le nombre des mémoires adressables ne sont donnés qu'à titre d'exemple, et l'homme du métier est à même de modifier ces
éléments dans le cadre de la présente invention.
La table 30 pourra contenir une historique différente que celle qui a été décrite à titre d'exemple. Par exemple, pour prédire la mémoire à adresser, on pourra considérer les mémoires adressées par les trois dernières utilisations du pointeur concerné par linstruction courante et choisir la mémoire qui a été adressée le plus souvent par ce pointeur. On pourra aussi,
pour prédire la mémoire à adresser, prendre en compte non seule-
ment la ou les mémoires adressoes par le pointeur concerné, mais aussi la mémoire adressoe lors de l' instruction précédente, même
si cette instruction ne concerne pas le même pointeur.
La présente invention peut être mise en oeuvre par tout moyen matériel approprié, les moyens matériels décrits ne l'ayant
été qu'à titre d'exemple.

Claims (9)

REVENDICATIONS
1. Procédé pour adresser en lecture un emplacement d'une parmi plusieurs mémoires à l' aide d'une adresse codée provenant d'une instruction, comprenant les étapes suivantes: a) prédire (104), parmi les plusieurs mémoires, la mémoire correspondant à l' emplacement à adresser, b) décoder (108) l'adresse de l' emplacement à adresser et déterminer (109) la mémoire à adresser, c) à l' issue de l'étape a), gérer (105) un éventuel conflit de lecture et de réccriture en supposant que la mémoire prédite est la mémoire à adresser, d) commander (111) 1'adressage de la mémoire prédite à l' issue de l'étape de gestion c), e) à l'issue de l'étape b), déterminer (110) si la mémoire à adresser correspond à la mémoire prédite, et f) si la mémoire à adresser ne correspond pas à la mémoire prédite, gérer (115) un éventuel conflit de lecture et de rcécriture dans la mémoire à adresser et adresser lemplacement
de la mémoire à adresser.
2. Procédé selon la revendication 1, dans lequel l'étape a) utilise une table (30) contenant une historique des
mémoires adressoes lors des instructions précédentes.
3. Procédé selon la revendication 2, dans lequel la table (30) renferme un nombre de registres (31) égal au nombre de pointeurs utilisés pour déterminer une adresse, chacun desdits registres étant affecté à un pointeur particulier, et dans lequel chacun desdits registres contient une information permettant de déterminer laquelle des mémoires a été adressoe par ledit
pointeur lors de sa dernière utilisation.
4. Procédé selon l'une quelconque des revendications 1
à 3, dans lequel l'étape de décodage et de détermination b)
débute en même temps que l'étape de prédiction a).
5. Procédé selon l'une quelconque des revendications 1
à 4, dans lequel, en cas de conflit de lecture et rcécriture dans
une même mémoire, la priorité est donnée à la réccriture (106).
6. Procédé selon l'une quelconque des revendications 1
à 5, dans lequel une étape (107) d'examen de contraintes tempo-
relles est réalisce après la gestion de conflit de lecture et de réécriture des étapes c) ou f), afin dexaminer si la lecture de la mémoire à lire peut être effectuée au cours du cycle dhorloge suivant.
7. Procédé selon l'une quelcouque des revendications 1
à 6, dans lequel les adresses codées appartiennent à un des types
suivants: adresse courte, adresse longue ou adresse indirecte.
S. Procédé selon la revendication 7, comprenant une étape (101) de détermination de type d'adresse et dans lequel les étapes de prédiction a) , de gestion c), d'adressage d) et de comparaison e) ne sont réalisces que si l'adresse codée de
l' emplacement à adresser est une adresse indirecte.
9. Procédé selon les revendications 2 et 8, dans lequel
la table (30) est invalidée (122) si l'adresse codée de l'empla
cement à adresser n'est pas une adresse indirecte.
10. Procédé selon l'une quelconque des revendications 1
à 9, réalisé par un dispositif de type microcontrôleur ou micro processeur, et dans lequel les mémoires pouvant être adresséss sont une mémoire de type SRAM interne audit dispositif, une mémoire de type DPRAM interne audit dispositif et une mémoire
FR0105405A 2001-04-20 2001-04-20 Procede d'adressage de memoire optimise Expired - Fee Related FR2823874B1 (fr)

Priority Applications (4)

Application Number Priority Date Filing Date Title
FR0105405A FR2823874B1 (fr) 2001-04-20 2001-04-20 Procede d'adressage de memoire optimise
PCT/FR2002/001328 WO2002086700A1 (fr) 2001-04-20 2002-04-17 Procede d'adressage de memoire optimise
EP02727670A EP1381940A1 (fr) 2001-04-20 2002-04-17 Procede d'adressage de memoire optimise
US10/475,485 US7966473B2 (en) 2001-04-20 2002-04-17 Optimised storage addressing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0105405A FR2823874B1 (fr) 2001-04-20 2001-04-20 Procede d'adressage de memoire optimise

Publications (2)

Publication Number Publication Date
FR2823874A1 true FR2823874A1 (fr) 2002-10-25
FR2823874B1 FR2823874B1 (fr) 2003-10-31

Family

ID=8862553

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0105405A Expired - Fee Related FR2823874B1 (fr) 2001-04-20 2001-04-20 Procede d'adressage de memoire optimise

Country Status (4)

Country Link
US (1) US7966473B2 (fr)
EP (1) EP1381940A1 (fr)
FR (1) FR2823874B1 (fr)
WO (1) WO2002086700A1 (fr)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9116824B2 (en) * 2013-03-15 2015-08-25 Sandisk Technologies Inc. System and method to reduce read latency of a data storage device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0332910A2 (fr) * 1988-03-15 1989-09-20 BULL HN INFORMATION SYSTEMS ITALIA S.p.A. Système de mémoire à prédiction de la sélection de module
US5710914A (en) * 1995-12-29 1998-01-20 Atmel Corporation Digital signal processing method and system implementing pipelined read and write operations

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4236205A (en) * 1978-10-23 1980-11-25 International Business Machines Corporation Access-time reduction control circuit and process for digital storage devices
US5611065A (en) * 1994-09-14 1997-03-11 Unisys Corporation Address prediction for relative-to-absolute addressing
US5987561A (en) * 1995-08-31 1999-11-16 Advanced Micro Devices, Inc. Superscalar microprocessor employing a data cache capable of performing store accesses in a single clock cycle
US6101577A (en) * 1997-09-15 2000-08-08 Advanced Micro Devices, Inc. Pipelined instruction cache and branch prediction mechanism therefor
US6253276B1 (en) * 1998-06-30 2001-06-26 Micron Technology, Inc. Apparatus for adaptive decoding of memory addresses
US6647490B2 (en) * 1999-10-14 2003-11-11 Advanced Micro Devices, Inc. Training line predictor for branch targets
US6651162B1 (en) * 1999-11-04 2003-11-18 International Business Machines Corporation Recursively accessing a branch target address cache using a target address previously accessed from the branch target address cache
US6694421B2 (en) * 1999-12-29 2004-02-17 Intel Corporation Cache memory bank access prediction
US7139903B2 (en) * 2000-12-19 2006-11-21 Hewlett-Packard Development Company, L.P. Conflict free parallel read access to a bank interleaved branch predictor in a processor
US7062638B2 (en) * 2000-12-29 2006-06-13 Intel Corporation Prediction of issued silent store operations for allowing subsequently issued loads to bypass unexecuted silent stores and confirming the bypass upon execution of the stores
US7181598B2 (en) * 2002-05-17 2007-02-20 Intel Corporation Prediction of load-store dependencies in a processing agent

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0332910A2 (fr) * 1988-03-15 1989-09-20 BULL HN INFORMATION SYSTEMS ITALIA S.p.A. Système de mémoire à prédiction de la sélection de module
US5710914A (en) * 1995-12-29 1998-01-20 Atmel Corporation Digital signal processing method and system implementing pipelined read and write operations

Also Published As

Publication number Publication date
US20040199738A1 (en) 2004-10-07
WO2002086700A1 (fr) 2002-10-31
US7966473B2 (en) 2011-06-21
EP1381940A1 (fr) 2004-01-21
FR2823874B1 (fr) 2003-10-31

Similar Documents

Publication Publication Date Title
FR2682507A1 (fr) Memoire cache pour processeur numerique a traduction d'adresses virtuelles en adresses reelles.
EP0006478B1 (fr) Dispositif programmable de verrouillage de signaux de commande dans un système de traitement de données
FR2828294A1 (fr) Procede pour generer une image en memoire morte
EP1619590A1 (fr) Procédé de programmation d'un controleur de DMA dans un système sur puce et système sur puce associé
EP2366147A1 (fr) Gestionnaire physique de barriere de synchronisation entre processus multiples
FR2697663A1 (fr) Circuit de test de mémoire.
WO2018046850A1 (fr) Methodes et dispositifs pour contourner le cache interne d'un controleur memoire dram evolue
EP1830264A1 (fr) Procédé et dispositif de sauvegarde et de restauration d'une manière interruptible d'un ensemble de registres d'un microprocesseur
FR2645986A1 (fr) Procede pour accelerer les acces memoire d'un systeme informatique et systeme pour la mise en oeuvre du procede
EP1607878A1 (fr) Procédé et programme d'ordinateur de traitement d'une adresse virtuelle pour la programmation d'un contrôleur de DMA et système sur puce associé
EP0684551A1 (fr) Circuit électronique d'utilisation d'un coprocesseur
FR2707774A1 (fr) Procédé de gestion cohérente des échanges entre des niveaux d'une hiérarchie de mémoires à au moins trois niveaux.
FR2823874A1 (fr) Procede d'adressage de memoire optimise
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
EP1081597B1 (fr) Dispositif à plusieurs processeurs ayant une interface pour une mémoire collective
EP0251861A1 (fr) Unité de gestion de mémoire
FR2686989A1 (fr) Procede de comptage de securite pour un compteur electronique binaire.
FR2553540A1 (fr) Dispositif de test aleatoire pour circuits logiques, notamment microprocesseurs
FR2645987A1 (fr) Dispositif d'acceleration des acces memoire dans un systeme informatique
FR2674044A1 (fr) Agencement pour predire une adresse d'instruction resultant d'un branchement dans un systeme de traitement numerique des donnees.
EP0849709B1 (fr) Processeur d'image digitale pour la compression/décompression d'images animées
FR2821449A1 (fr) Procede de gestion d'instructions au sein d'un processeur a architecture decouplee, en particulier un processeur de traitement numerique du signal, et processeur correspondant
FR2544524A1 (fr) Processeur de signaux numeriques et multicalculateur
FR2797970A1 (fr) Adressage d'une memoire
FR2458844A1 (fr) Procede et dispositif de traitement des signaux d'interruption pour un systeme de traitement de donnees a microprogramme

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20091231