EP1381940A1 - Procede d'adressage de memoire optimise - Google Patents
Procede d'adressage de memoire optimiseInfo
- Publication number
- EP1381940A1 EP1381940A1 EP02727670A EP02727670A EP1381940A1 EP 1381940 A1 EP1381940 A1 EP 1381940A1 EP 02727670 A EP02727670 A EP 02727670A EP 02727670 A EP02727670 A EP 02727670A EP 1381940 A1 EP1381940 A1 EP 1381940A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- memory
- addressed
- address
- module
- predicted
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3875—Pipelining a single stage, e.g. superpipelining
-
- 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/0215—Addressing or allocation; Relocation with look ahead addressing means
Definitions
- the present invention relates to memory addressing and more particularly to research in data memory by a computer device such as a microcontroller.
- FIG. 1 schematically shows the structure of a conventional microcontroller.
- the microcontroller 1 comprises a program controller FPC ("Fetch and Pipeline Controller" or
- ADU Address Unit
- FX ⁇ module FX ⁇ module
- the FPC program controller is connected to a program memory 3 external to the microcontroller by means of a program memory controller 5, which is also external to the microcontroller.
- the FPC program controller comprises a precapture module 7 which, during a clock cycle, stores the current instruction and ensures the sequencing of the microcontroller.
- the FPC program controller also includes a capture and decoding module 9. At each new clock cycle, the content of module 7 is transferred to module 9.
- module 9 contains the instruction of the previous cycle, n-1, and decodes it.
- the decoding of the instruction of cycle n-1 makes it possible to know the nature of the operation to be performed, the address in coded form of the operands to be used in the operation and the address in coded form of the memory location where the result of the operation must be placed.
- the address module ADU first comprises an address decoding module 11. At each new cycle, the capture and decoding module 9 transfers its content to the address decoding module 11. The module 11 decodes the coded addresses which it receives, that is to say it determines, at from these addresses, the physical address or real address of the operands to be retrieved from memory, as well as the physical address of the location where the result of the operation must be stored.
- the address module ADU then comprises a module 13 which gives read access to the memory medium containing the operands.
- the microcontroller 1 comprises two internal data memories, a random access memory 15 accessible via a memory controller 17 and a bank of registers 19 accessible directly. A part of the memory 15 is allocated to a stack addressed by a stack pointer.
- the module 11 addresses in read, at the start of a cycle, the appropriate memory and recovers the operands to be used. This operation, which lasts a cycle, is symbolized by the arrows 21 and 22 going respectively from the controller 17 and from the register bank 19 to the module 13.
- the module 13 transfers its content to an execution module 23 which constitutes the single module of the FXU module.
- the module 23 performs the arithmetic or logical operation (s) required by the instruction and provides the result of the operation.
- the module 23 then transfers the result of the operation and the physical address at which the result is to be stored to a rewriting module 25.
- the module 23 can directly access a register in the bank of registers 19 for writing, which is symbolized by arrow 24.
- the module 23 can modify, if required, the content of a bank register used as an address pointer.
- the rewriting module 25 is also part of the address module ADU. It addresses the memory 15 for writing, which is symbolized by the arrow 26, in order to store the result of the operation there.
- the module 25 can also address a register of the bank of registers 19, as symbolized by the arrow 27, in order to store the result there if this is required.
- the module 25 performs its task in one clock cycle. Modules 7, 9, 11, 13, 23 and 25 of the microcontroller
- microcontroller thus contains six instructions at the same time, at various stages of processing. If each module used only one clock cycle to accomplish its task, the processing of an instruction would take only six cycles and the microcontroller would operate optimally.
- An object of the present invention is to provide a memory addressing method which is shorter than in the prior art.
- the present invention provides a method for reading a location of one of several memories using a coded address from an instruction.
- the method comprises the following steps: a) predicting, among the several memories, the memory corresponding to the location to be addressed, b) decode the address of the location to be addressed and determine the memory to be addressed, c) at the end of step 1 a), manage a possible conflict of reading and rewriting assuming that the predicted memory is the memory to be addressed, d) controlling the addressing of the memory predicted at the end of the management step c), e) at the end of step b), determining whether the memory to be addressed corresponds to the predicted memory , and f) if the memory to be addressed does not correspond to the predicted memory, manage a possible read and rewrite conflict in the memory to be addressed and address the location of the memory to be addressed.
- step a) uses a table containing a history of the memories addressed during the previous instructions.
- the table contains a number of registers equal to the number of pointers used to determine an address, each of said registers being assigned to a particular pointer, and each of said registers contains information making it possible to determine which of the memories was addressed by said pointer when it was last used.
- the decoding and determination step b) begins at the same time as the prediction step a).
- a step of examining time constraints is carried out after the management of read conflict and rewriting of steps c) or f), in order to examine whether the reading of the memory to be read can be performed during the next clock cycle.
- the coded addresses belong to one of the following types: short address, long address or indirect address.
- the method comprises a step of determining the type of address and the steps of prediction a), of management c), of addressing d) and of comparison e) are only carried out if the coded address of
- the location to be addressed is an indirect address.
- the table is invalidated if the coded address of the location to be addressed is not an indirect address.
- the method is carried out by a device of the microcontroller or microprocessor type, and the memories which can be addressed are a memory of SRAM type internal to said device, a memory of DPRAM type internal to said device and a memory external to said device.
- FIG. 1 already described, atically shows the structure of a conventional microcontroller;
- Figures 2A, 2B, 2C1 and 2C2 show types of addresses used in the present invention;
- FIG. 3 represents a time diagram illustrating the operation of the address module in the prior art;
- FIGS. 4A and 4B each represent a time diagram illustrating the operation of the address module according to the present invention;
- Figure 5 schematically shows a flowchart summarizing the implementation of the present invention.
- the microcontroller used in the present invention has a structure generally similar to that of the microcontroller of FIG. 1 and the same references correspond to identical elements or performing, at least in part, the same function.
- the particular features of the microcontroller of the present invention with respect to that of FIG. 1 will appear during the description, in particular during the description of FIG. 5.
- the physical addresses used in the present invention are 24-bit addresses.
- the instructions received by the microcontroller do not include physical addresses, but shorter coded addresses making it possible to determine the corresponding physical addresses.
- the coded addresses are of three types.
- FIG. 2A a physical address of “short” type is shown.
- This address, called short has 8 bits, bo to b7.
- Bits b0 to b7 correspond to the address of a particular register comprising 24 determined bits.
- the 24 bits of the register determined by the short address form a fixed base which must be added to the short address to obtain the corresponding physical address.
- a coded address of “long” type is shown.
- This address, called long comprises 16 bits, bo to bl5.
- the 16 bits of the long address form the 16 least significant bits of the corresponding physical address.
- the 8 most significant bits of the physical address are determined from particular bits of the long address.
- the two most significant bits bl5, bl4 of the long address are used to address one of four programmable 8-bit registers representing the 8 weight bits with the corresponding physical address.
- FIG. 2C1 a coded address of the "indirect” type is shown.
- This address, called "indirect” comprises a reduced number of bits which represent the address of a particular register R.
- the register R serves as an address pointer.
- the indirect addresses comprise four bits, b0 to b3. These four bits are used to address one of sixteen address pointers. As illustrated in FIG. 2C2, each address pointer is a 16-bit register, b0 to bl5. From the 16 bits of the address pointer, the physical address is determined in the same way as for long addresses. Because of its great flexibility and the low number of bits it requires, this so-called indirect addressing mode is very generally used.
- the step of decoding the coded address is carried out by the module 11.
- the indirect addresses take the longest to decode and require a duration equal to approximately a quarter of the clock cycle.
- the module 11 determines which memory medium to address.
- the address module ADU can access one or more memories external to the microcontroller.
- random access memory 15 of the prior art comprises a memory of the SRAM type ("Synchronous Random Access Memory” - “synchronous random access memory”), a memory of the DPRAM type (" Dual Port Random Access Memory "), a stack which can be part of one of the two preceding memories and registers, like the registers making it possible to determine the physical addresses with the idea of coded addresses.
- SRAM Serial Random Access Memory
- DPRAM Dual Port Random Access Memory
- the module 11 examines the bits of the physical address, for example starting with the most significant bits. Indeed, the addresses locations of each particular memory generally follow each other and range from a lower or minimum address to a higher or maximum address. For example, the addresses (in hexadecimal notation) ranging from 008000 to 00FBFF correspond to locations in the SRAM memory, the addresses from 00FC00 to 00FDFF correspond to locations in the DPRAM memory, etc. If the address does not correspond to any location of a memory internal to the microcontroller, it is deduced therefrom that the memory to be addressed is an external memory. If there are several external memories, we proceed as before to determine which memory it is. This step of determining the memory to be addressed is long. It may be necessary to examine a large number of bits of the physical address, 12 for example, before knowing the memory to be addressed. The duration of this step is of the order of a quarter clock cycle.
- the module 11 manages a possible conflict between reading and rewriting in the same memory medium.
- this step also called bandwidth conflict management step, the module 11 determines whether the instruction present in the module 25 requires a rewriting in the same memory as that which must be addressed in reading by the instruction qu 'it contains. If this is the case, priority is generally given to rewriting in memory, since the corresponding instruction is older than the instruction requesting the read.
- This management step is generally shorter than the previous ones, and has a duration equal to approximately 15% of a clock cycle.
- the module 11 After the management step, the module 11 performs a fourth step consisting in determining whether the time constraints linked to the access of the memory to be addressed are respected. In fact, the memories, the synchronous memories in particular, must receive the address commands to be read in a determined time before the start (rising edge of the clock, for example) of the cycle during which the reading takes place. This determined time allows in particular the memory to decode the commands provided (if this is not respected, the memory has an unpredictable behavior and the value read cannot be used). This fourth step takes about 10% of a clock cycle. If the time constraints are respected, the module 11 transfers its content to the module 13 which prepares the addressing and reads the memory in the next cycle. If the time constraints are not respected, the module 11 transfers its content to the module 13 at the start of the next cycle. The module 13 then has a cycle to prepare the addressing and the reading is only made on the following cycle.
- the duration of the steps performed by the module 11 is more or less long.
- the time constraints are generally respected and the memory to be addressed can be read in the next cycle.
- the time constraints are never respected in the prior art and two clock cycles are required before reading from the memory.
- FIG. 3 represents three consecutive clock cycles, and the various steps carried out by the address module in the prior art, in the case of an indirect address.
- the module 11 of the prior art carries out the steps of address decoding, determination of the memory to be addressed, conflict management and examination of the time constraints. These four successive stages, noted A, B, C, D, last respectively 25%, 25%, 15% and 10% of the time of the first cycle.
- the module 11 finished its processing at the time noted 75, corresponding to 75% of the first cycle. There remains only 25% of the duration of a cycle to complete the first cycle, and this duration is insufficient to allow the preparation of the memory addressing by the module 13.
- the module 11 does not transfer its content in module 13 only at the start of the second clock cycle, going from 100 to 200. Reading in the memory does not start then at the start of the third cycle, going from 200 to 300, and the desired operand is available at time 300. It can be seen that, in the prior art, reading requires three clock cycles in the case of an indirect address, and that the second cycle is very underused. In some microcontrollers of the prior art, moreover, steps C and D are carried out directly at the start of the second cycle in the case of indirect addresses.
- FIGS. 4A and 4B illustrate the treatment, according to the present invention, of the same case as that envisaged in FIG. 3.
- the module 11 of the present The invention performs the steps of decoding address A and determining the memory to be addressed B. As in FIG. 3, these steps have a total duration equal to 50% of the duration of the first cycle, going from 0 to 100.
- Step A consists in predicting the memory to be addressed.
- Step A ′ represented in FIG. 4B, begins at the start of the first cycle and has an approximate duration equal to 20% of the first cycle.
- the predicted memory is assumed to be the memory to be addressed.
- To determine the predicted memory it is possible to use various more or less complex tables containing the history of the previous instructions, or at least the history of the memories previously addressed, in order to make predictions on the memory which must be addressed during the current instruction.
- One can also simply use as memory predicted the memory which was addressed during the preceding instruction.
- any memory can be chosen as predicted memory.
- step A ' the module 11 performs a conflict management step C (FIG. 4B). During this step, it is examined whether the predicted memory corresponds to the memory awaiting rewriting by the module 25. Let us first assume that this is not the case.
- the module 11 performs a step D ′ (still in FIG. 4B) for examining whether the time constraints are met. Steps C and D 'last respectively 15% and 10% of the duration of a cycle and all of steps A', C and D 'have a duration equal to approximately 45% of the first cycle. It will be noted that, in this context, step D 'always leads to compliance with the time constraints and that this step could be omitted.
- step B the memory to be addressed is known.
- the module 11 then performs a step E (FIG. 4A) to determine whether the predicted memory corresponds to the memory to be addressed. This stage lasts approximately 10% of the time of a cycle.
- the processing carried out by the module 11 in the present invention has a total duration equal to 60% of the first cycle .
- the remaining duration of the first cycle (40% of the cycle) is then sufficient for the module 11 to present the request for addressing to the module 13 during the first cycle.
- the module 13 prepares the addressing of the memory to be addressed during the first cycle and the reading takes place during the second clock cycle, ranging from 100 to 200.
- the present invention allows the gain of one clock cycle. There is no "dead time" in the processing of the instructions and the operation of the microcontroller is optimized.
- the module 11 performs, following step E or at the start of the second cycle, a new step of conflict management. During this step, the module 11 examines whether the memory to be addressed corresponds to the memory awaiting rewriting in the module 25. If this is not the case, the module 11 performs a new step, optional, examination of time constraints, in this case always respected. It then prepares the addressing of the memory to be addressed by the module 13. These steps take place during the second cycle and the reading of the memory takes place during the third cycle. The time required to process the instruction in this case is identical to that of the prior art.
- FIG. 5 represents a flowchart summarizing the implementation of the present invention and allowing a more detailed description of how the prediction can be carried out.
- step 101 it is examined (step 101) if the instruction 100 relates to at least one indirect address. If this is not the case (no address required or only short or long addresses), the processing of the instruction is carried out in a conventional manner
- step 102 that is to say that the decoding of the addresses, the determination of the memory to be addressed, the management of possible conflicts, the examination of the time constraints and the transmission to the module 13 are normally carried out by the module 11 in a single cycle.
- the module 11 begins, at time 0 (start of the first cycle where the module ADU address starts processing instruction), two simultaneous processing. On the one hand, it determines the predicted memory (step 104), using information it receives from a table 30. Then, the module 11 manages a possible priority conflict concerning the predicted memory (step 105). As has been said, if there is a conflict, the rewriting will be carried out as a priority on reading (block 106). If there is no conflict, the module 11 examines at 107, optionally as we have seen, if the time constraints are respected, then it commands (step 111) the reading of the memory predicted at using the calculated address, as will be seen later, during a step 108 of decoding the coded address.
- the module 11 begins the decoding (calculation) of the indirect address (step 108). Then, it determines the memory to be effectively addressed (step 109). After that, it determines at 110 whether the predicted memory actually corresponds to the memory to be addressed. If so, no action is taken.
- the module 11 updates the table 30 on the one hand (step 114) and on the other hand performs a new step of managing rewriting-reading conflict, this time as regards the memory to be addressed (step 115).
- This conflict management is preferably carried out by the same hardware elements as those which are used to manage the conflicts of the predicted memory. Updating the table and managing conflicts concerning the memory to be addressed can be done as soon as it is known that the predicted memory is not the memory to be addressed, or at the start of the second cycle, as shown. . In case of conflict, priority is given to rewriting.
- step 115 If there is no conflict, it is proceeded (step 115) to the examination of the time constraints, optional because these constraints are always met in this case.
- the command to read the memory to be addressed takes place in step 111 'and the reading of the memory to be addressed takes place during the third cycle (step 112').
- Table 30 contains seventeen registers 31, corresponding to each of the seventeen pointers used.
- Each of the registers 31 contains information indicating the memory which was addressed by the pointer concerned the last time this pointer was used in an instruction.
- the registers 31 can be three-bit registers, which is sufficient to allow the discrimination of eight memories.
- the only memories addressed by the pointers are the memories SRAM, DPRAM and a single external memory
- this address is examined at block 121 to determine the pointer to be used for decoding the coded address.
- This information is used to control a multiplexer 32 associated with the table 30.
- the multiplexer 32 has seventeen inputs, each of which is connected to one of the registers 31.
- the command of the multiplexer 32 consists in selecting the register corresponding to the pointer used in the 'instruction.
- the multiplexer 32 then provides, on its output 34, information corresponding to the memory which was addressed by this pointer during its last use. This information is supplied to the module 11.
- the module 11 decodes this information during the step 104 and chooses as memory predicted the memory previously addressed by the pointer used.
- the device implementing the present invention may be a microcontroller, a microprocessor, or any other suitable device.
- Table 30 may contain a different history than that which has been described by way of example. For example, to predict the memory to be addressed, we can consider the memories addressed by the last three uses of the pointer concerned by the current instruction and choose the memory which has was addressed most often by this pointer. We can also, to predict the memory to be addressed, take into account not only the memory or memories addressed by the pointer concerned, but also the memory addressed during the previous instruction, even if this instruction does not concern the same pointer.
- the present invention can be implemented by any suitable material means, the material means described having been done by way of example only.
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 suivantes: a) 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, 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 réécriture dans la mémoire à adresser et adresser l'emplacement de la mémoire à adresser.
Description
PROCEDE D'ADRESSAGE DE MEMOIRE OPTIMISE
La présente invention concerne 1 ' 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 capture et de sequencement"), un module d'adresse
ADU ("ADdress Unit" ou "module d'adresse") et un module FXϋ
("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 1 ' 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écapture 7 qui, au cours d'un cycle d'horloge, stocke l'instruction courante et assure le sequencement du microcontrôleur. Le contrôleur de programme FPC comprend aussi un module de capture 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éelle des opérandes à récupérer en mémoire, ainsi que l'adresse physique de l'emplacement 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 données, 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 adressée par un pointeur de pile. Dès que le module 11 a fini de décoder les adresses à utiliser (et de ré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 respectivement 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 l'unique module du module FXU. Le module 23 réalise la ou les opérations arithmétiques ou logiques requises par l'instruction et fournit le résultat de l'opération. Le module 23 transfère ensuite le résultat de 1 'opération et 1 ' adresse physique à laquelle le résultat doit être stocké à un module de réécriture 25. Le module 23 peut accéder directement à un registre du banc de registres 19 en écriture, ce qui est symbolisé 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 d'adresse.
Le module de rêécriture 25 fait aussi partie du module d'adresse ADU. Il 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", c'est-à-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 n'utilisait 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 façon optimale.
En pratique cependant, une limitation vient du module d'adresses 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 d'horloge pour fournir les adresses physiques correspondantes. Il en résulte la perte d'un cycle et le fonctionnement 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 d'une adresse codée provenant d'une 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) à 1 ' issue de 1 ' étape a) , gérer un éventuel conflit de lecture et de réécriture en supposant que la mémoire prédite est la mémoire à adresser, d) commander l'adressage de la mémoire prédite à l'issue 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 un 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 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 réé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éalisée 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 d'horloge 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éalisées que si l'adresse codée de
1 '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 l'emplacement à 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 adressées 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é atiquement la structure d'un 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 d'adresse 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 particularités du microcontrôleur de la présente invention 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 1 ' adresse courte forment une base fixe qui doit être ajoutée à 1 'adresse courte pour obtenir 1 ' 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 d'exemple non limitatif, 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 "indirect". 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éterminée 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 nécessitent 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 Memory" - "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 à 1 ' ide des adresses codées .
Pour déterminer la mémoire à adresser, le module 11 examine les bits de l'adresse physique, par exemple en commençant par les bits de poids fort. En effet, les adresses
des emplacements 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 hexadécimale) allant de 008000 à 00FBFF correspondent à des emplacements dans la mémoire SRAM, les adresses de 00FC00 à 00FDFF correspondent à des emplacements dans la mémoire DPRAM, etc . Si 1 ' 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 d'un 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 nommée é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 adressée en lecture par l'instruction qu'il contient. Si c'est le cas, la priorité est en général donnée à la rëécriture dans la mémoire, car l'instruction correspondante est plus ancienne que 1 ' instruction demandant la lecture. Cette étape de gestion est en général moins longue que les précédentes, et a une durée é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 1 ' 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 d'un cycle pour préparer l'adressage et la lecture n'est faite qu'au cycle d' après .
Selon le type d'adresse codée utilisé par l'instruction, la durée des étapes réalisées 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 l'art antérieur et deux cycles d'horloge 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 0 à 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, B, 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. Il ne reste que 25 % de la durée d'un cycle pour terminer le premier cycle, et cette durée 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 qu'au début du deuxiè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 disponible au temps 300. On voit que, dans l'art antérieur, la lecture nécessite trois cycles d'horloge dans le cas d'une adresse indirecte, et que le deuxième cycle est très sous-utilisé. Dans certains microcontrôleurs de l'art antérieur, d'ailleurs, les étapes C et D sont réalisées directement au début du deuxième cycle dans le cas des adresses indirectes.
L'invention va être maintenant décrite en relation avec les figures 4A et 4B qui illustrent le traitement, selon la présente invention, du même cas que celui envisagé dans la figure 3. Comme cela est représenté en figure 4A, le module 11 de la présente invention réalise les étapes de décodage d'adresse A et de détermination de mémoire à adresser B. Comme en figure 3, ces étapes ont une durée totale égale à 50 % de la durée du premier cycle, allant de 0 à 100.
En même temps que l'étape A, le module 11 réalise une étape de prédiction A' . Cette étape de prédiction consiste à prédire la mémoire qui doit être adressée. L'étape A', représentée en figure 4B, commence au début du premier cycle et a une durée approximative égale à 20 % du premier cycle. La mémoire prédite est supposée être la mémoire à adresser. Pour déterminer la mémoire prédite, on peut utiliser diverses tables plus ou moins complexes contenant l'historique des instructions précédentes, ou du moins l'historique des mémoires précédemment adressées, afin de faire des pronostics sur la mémoire qui doit être adressée lors de l'instruction courante. On peut aussi simplement utiliser comme mémoire prédite la mémoire qui a été adressée lors de l'instruction précédente. A la première instruction d'un programme, on peut choisir une mémoire quelconque comme mémoire prédite.
A la suite de l'étape A', le module 11 réalise une étape de gestion de conflit C (figure 4B) . Au cours de cette
étape, il est examiné si la mémoire prédite correspond à la mémoire en attente de réécriture par le module 25. Supposons dans un premier temps que ce ne soit pas le cas. Après l'étape de gestion C, le module 11 réalise une étape D' (toujours en figure 4B) d'examen pour savoir si les contraintes temporelles sont respectées. Les étapes C et D' durent respectivement 15 % et 10 % 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 toujours à un respect des contraintes temporelles et que cette étape pourrait être supprimée.
A la fin de l'étape B, 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 1 ' adressage 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 d'un cycle d'horloge. Il n'y a pas de "temps mort" dans le traitement des instructions et le fonctionnement 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 n'est pas le cas, le module 11 réalise une nouvelle étape,
optionnelle, d'examen des contraintes temporelles, dans ce cas toujours 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 l'instruction dans ce cas est identique à celle de l'art antérieur.
Dans les programmes utilisés par les microcontrôleurs, un grand nombre d'instructions consécutives concernent souvent l'adressage d'un 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 adressées 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 l'instruction 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 d'un seul cycle.
Si l'adresse est une adresse indirecte, le module 11 commence, à l'instant 0 (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 d'une information qu'il reçoit d'une table 30. Ensuite, le module 11 réalise la gestion d'un é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 prioritairement à la lecture (bloc 106) . S'il n'y 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 à l'aide de l'adresse calculé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 d'une part à jour la table 30 (étape 114) et d'autre part réalise une nouvelle étape de gestion de conflit de réêcriture-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 à jour 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 n'y 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 utilisée. On a vu que, dans la présente invention, il y a seize pointeurs d'adresse et un pointeur de pile. La 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é adressée 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 adressées 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 "100" 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 multiplexeur 32 associé à la table 30. Le multiplexeur 32 a dix-sept entrées, 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 multiplexeur 32 fournit alors, sur sa sortie 34, une information correspondant à la mémoire qui a été adressée 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 1 ' étape 104 et choisit comme mémoire prédite la mémoire adressée 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 correspondant 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 l'instruction courante n'utilise pas d'adresse indirecte. L'invalidation de la table 30 peut être réalisée 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 multiplexeur 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 multiplexeur 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 à 1 'homme de 1 '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 1 ' instruction 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 seulement la ou les mémoires adressées par le pointeur concerné, mais aussi la mémoire adressée 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
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éé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 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 réêcriture dans la mémoire à adresser et adresser 1 ' emplacement 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 adressées 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é adressée 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 réécriture dans une même mémoire, la priorité est donnée à la réécriture (106) .
6. Procédé selon l'une quelconque des revendications 1 à 5, dans lequel une étape (107) d'examen de contraintes tempo- relies est réalisée 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 d'horloge suivant.
7. Procédé selon l'une quelconque des revendications 1 à 6, dans lequel les adresses codées appartiennent à un des types suivants : adresse courte, adresse longue ou adresse indirecte .
8. 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éalisées 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'emplacement à 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 microprocesseur, et dans lequel les mémoires pouvant être adressées 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.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| FR0105405A FR2823874B1 (fr) | 2001-04-20 | 2001-04-20 | Procede d'adressage de memoire optimise |
| FR0105405 | 2001-04-20 | ||
| PCT/FR2002/001328 WO2002086700A1 (fr) | 2001-04-20 | 2002-04-17 | Procede d'adressage de memoire optimise |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| EP1381940A1 true EP1381940A1 (fr) | 2004-01-21 |
Family
ID=8862553
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| EP02727670A Withdrawn EP1381940A1 (fr) | 2001-04-20 | 2002-04-17 | 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)
| 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 |
Family Cites Families (13)
| 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 |
| IT1216087B (it) * | 1988-03-15 | 1990-02-22 | Honeywell Bull Spa | Sistema di memoria con selezione predittiva di modulo. |
| 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 |
| US5710914A (en) * | 1995-12-29 | 1998-01-20 | Atmel Corporation | Digital signal processing method and system implementing pipelined read and write operations |
| 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 |
-
2001
- 2001-04-20 FR FR0105405A patent/FR2823874B1/fr not_active Expired - Fee Related
-
2002
- 2002-04-17 WO PCT/FR2002/001328 patent/WO2002086700A1/fr not_active Ceased
- 2002-04-17 US US10/475,485 patent/US7966473B2/en not_active Expired - Lifetime
- 2002-04-17 EP EP02727670A patent/EP1381940A1/fr not_active Withdrawn
Non-Patent Citations (1)
| Title |
|---|
| See references of WO02086700A1 * |
Also Published As
| Publication number | Publication date |
|---|---|
| FR2823874B1 (fr) | 2003-10-31 |
| US7966473B2 (en) | 2011-06-21 |
| FR2823874A1 (fr) | 2002-10-25 |
| WO2002086700A1 (fr) | 2002-10-31 |
| US20040199738A1 (en) | 2004-10-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP1619589B1 (fr) | Procédé de programmation d'un contrôleur de DMA dans un système sur puce et système sur puce associé | |
| FR2834809A1 (fr) | Dispositif pour moteur de compression de memoire cache pour la compression de donnees sur des memoires cache integrees pour augmenter la taille de memoire cache effective | |
| EP0439855B1 (fr) | MicrocontrÔleur pour l'exécution rapide d'un grand nombre d'opérations décomposables en séquences d'opérations de même nature | |
| FR2583541A1 (fr) | Tampon z a haute vitesse munie d'une memoire dynamique a acces aleatoire | |
| FR2846460A1 (fr) | Procedes de lecture et d'ecriture d'une memoire flash | |
| FR2828294A1 (fr) | Procede pour generer une image en memoire morte | |
| FR2583540A1 (fr) | Gestion de memoire pour systeme a microprocesseur. | |
| EP0756746B1 (fr) | Procede de mise a jour securisee de memoire eeprom | |
| FR2668271A1 (fr) | Interface de modelisation dynamique des performances des systemes informatiques. | |
| EP0006478A1 (fr) | Dispositif programmable de verrouillage de signaux de commande dans un système de traitement de données | |
| FR3055715A1 (fr) | Methodes et dispositifs pour contourner le cache interne d'un controleur memoire dram evolue | |
| FR2809841A1 (fr) | Procede et appareil pour reduire la puissance dans des memoires cache et systeme de traitement de donnees comportant des memoires chaches | |
| EP0684551B1 (fr) | Circuit électronique et méthode pour l'utilisation d'un coprocesseur | |
| EP3293637A1 (fr) | Gestion d'index dans une mémoire flash | |
| FR2707774A1 (fr) | Procédé de gestion cohérente des échanges entre des niveaux d'une hiérarchie de mémoires à au moins trois niveaux. | |
| FR2645986A1 (fr) | Procede pour accelerer les acces memoire d'un systeme informatique et systeme pour la mise en oeuvre du procede | |
| FR2805368A1 (fr) | Systeme et procede utilisant l'acces speculatif a l'antememoire pour des performances ameliorees | |
| EP0251861B1 (fr) | Unité de gestion de mémoire | |
| EP1381940A1 (fr) | Procede d'adressage de memoire optimise | |
| EP1607878B1 (fr) | Procédé de traitement d'une adresse virtuelle pour la programmation d'un contrôleur de DMA, système sur puce et programme d'ordinateur associés | |
| EP0838053B1 (fr) | Procede et dispositif permettant a un programme fige de pouvoir evoluer | |
| FR2662281A1 (fr) | Processeur comprenant un fichier de registres adressables en plusieurs jeux de registres contenus dans des fenetres. | |
| EP3611623A1 (fr) | Contrôleur mémoire comprenant deux buffers et un selecteur d'un mode de remplissage desdits buffers | |
| CH699208A1 (fr) | Circuit processeur à mémoire partagée et système tampon. | |
| WO2011125001A1 (fr) | Mémoire cache segmentée |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
| 17P | Request for examination filed |
Effective date: 20031113 |
|
| AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LI LU MC NL PT SE TR |
|
| AX | Request for extension of the european patent |
Extension state: AL LT LV MK RO SI |
|
| RIN1 | Information on inventor provided before grant (corrected) |
Inventor name: DEVAUX, FABRICE Inventor name: HENRIQUES, JEAN-PAUL |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN |
|
| 18D | Application deemed to be withdrawn |
Effective date: 20091103 |