FR2643166A1 - MICROPROCESSOR WITH PIPELINE ARCHITECTURE COMPRISING AN INSTRUCTION FOR ACCESSING DATA IN EXTERNAL MEMORY, AND METHOD OF ACCESSING THESE DATA - Google Patents
MICROPROCESSOR WITH PIPELINE ARCHITECTURE COMPRISING AN INSTRUCTION FOR ACCESSING DATA IN EXTERNAL MEMORY, AND METHOD OF ACCESSING THESE DATA Download PDFInfo
- Publication number
- FR2643166A1 FR2643166A1 FR9001451A FR9001451A FR2643166A1 FR 2643166 A1 FR2643166 A1 FR 2643166A1 FR 9001451 A FR9001451 A FR 9001451A FR 9001451 A FR9001451 A FR 9001451A FR 2643166 A1 FR2643166 A1 FR 2643166A1
- Authority
- FR
- France
- Prior art keywords
- data
- memory
- bus
- cache
- external
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 9
- 238000012545 processing Methods 0.000 claims abstract description 14
- 239000000872 buffer Substances 0.000 claims description 39
- 238000012546 transfer Methods 0.000 claims description 7
- 230000002457 bidirectional effect Effects 0.000 claims description 2
- 235000021395 porridge Nutrition 0.000 claims 1
- 208000035139 partial with pericentral spikes epilepsy Diseases 0.000 description 37
- 238000007667 floating Methods 0.000 description 22
- 239000013598 vector Substances 0.000 description 12
- 238000013519 translation Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 101100534231 Xenopus laevis src-b gene Proteins 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 101000574648 Homo sapiens Retinoid-inducible serine carboxypeptidase Proteins 0.000 description 2
- 102100025483 Retinoid-inducible serine carboxypeptidase Human genes 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000013479 data entry Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000001343 mnemonic effect Effects 0.000 description 2
- 101100496858 Mus musculus Colec12 gene Proteins 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 230000008014 freezing Effects 0.000 description 1
- 238000007710 freezing Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8061—Details on data memory access
- G06F15/8069—Details on data memory access using a cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
L'invention concerne un microprocesseur à architecture en pipeline, comprenant une antémémoire de données 70 et une unité de traitement avec un verrou de données 78, et pourvu d'une instruction permettant d'accéder à des données provenant d'une mémoire externe par l'intermédiaire d'un bus externe 40. Selon l'invention, cette instruction met en oeuvre des moyens de mémoire 65, pour accumuler des données; des premiers moyens de circuit, pour délivrer aux moyens de mémoire des données en provenance de la mémoire externe en cas de survenance d'une non-concordance d'antémémoire; des seconds moyens de circuit, pour délivrer au verrou de données les données accumulées dans les moyens de mémoire, ces seconds moyens de circuit reliant également l'antémémoire de données aux premiers moyens de circuit de manière à retourner aux moyens de mémoire la donnée résidant dans l'antémémoire, en cas de concordance d'antémémoire; et des moyens de contrôle de bus, reliés aux premiers et aux seconds moyens de circuit, aux moyens de mémoire et à l'antémémoire de données, pour contrôler le flux en pipeline de données allant de la mémoire externe au verrou de données en cas de non-concordance d'antémémoire, et pour contrôler le retour des données de l'antémémoire aux moyens mémoire en cas de concordance d'antémémoire.A pipelined architecture microprocessor, comprising a data cache 70 and a processing unit with a data latch 78, and provided with an instruction for accessing data from an external memory through the invention is disclosed. 'intermediary of an external bus 40. According to the invention, this instruction implements memory means 65, to accumulate data; first circuit means, for supplying the memory means with data from the external memory in the event of a cache mismatch occurring; second circuit means, for delivering to the data latch the data accumulated in the memory means, these second circuit means also connecting the data cache to the first circuit means so as to return to the memory means the data residing in the cache, in case of a cache match; and bus control means, connected to the first and second circuit means, to the memory means and to the data cache, for controlling the pipelined flow of data from the external memory to the data latch in the event of cache mismatch, and to control the return of data from the cache memory to the memory means in the event of a cache match.
Description
-\1 2643166- 1 2643166
La présente invention concerne le domaine des micro- The present invention relates to the field of micro-
processeurs à semiconducteurs, en particulier les proces- semiconductor processors, in particular the processes
seurs de ce type qui sont capables d'accéder à des données sisters of this type who are able to access data
dans une mémoire externe.in an external memory.
Plus précisément, la présente invention se rapporte à une instruction de chargement à virgule flottante en pipeline qui peut être mise en oeuvre à l'intérieur de l'unité de contrôle du bus d'un microprocesseur. Le microprocesseur More specifically, the present invention relates to a pipeline floating point loading instruction that may be implemented within the bus control unit of a microprocessor. The microprocessor
utilisé dans le cas de la présente invention est le micro- used in the case of the present invention is the micro-
processeur Intel 860T, souvent appelé processeur NlOTM Intel 860T processor, often called NlOTM processor
(Intel est une marque déposée de Intel Corporation). (Intel is a registered trademark of Intel Corporation).
Le processeur N10 est un processeur 32/64 bits à virgule flcttante compatible IEEE, avec un processeur de nombres The N10 processor is a 32/64-bit IEEE-compatible flip-flop processor with a number processor
entiers RISC 32 bits et un processeur graphique tridi- 32-bit RISCs and a three-bit graphics processor
mensionnel 64 bits. Du fait qu'il utilise un processeur 64-bit. Because it uses a processor
numérique optimisé à la fois pour -les opérations vecto- optimized for both VECTO operations and
rieiles et pour les opérations scalaires, il constitue, dans l'industrie, le premier processeur vectoriel intégré à and for scalar operations, it constitutes, in industry, the first integrated vector
hautes performances incorporant plus d'un million de tran- high performance incorporating more than one million
sistors et procurant des performances de l'ordre de la sistors and providing performance of the order of
moitié de celle d'un Cray I, le tout sur une seule puce. half that of a Cray I, all on one chip.
Tous les processeurs possèdent une certaine forme d'ins- All processors have some form of
truction de chargement permettant d'accéder à des informa- truction of loading allowing access to information
tions soit depuis une mémoire externe soit depuis une anté- either from an external memory or from an earlier
mémoire de données interne. L'accès aux données mémorisées à l'extérieur est généralement effectué par l'intermédiaire d'un bus de données externes contrôlé par la logique interne du processeur. La raison d'être d'une antémémoire de données est la possibilité d'obtenir un accès performant à des informations souvent utilisées, ce qui permet d'accélérer la vitesse du traitement. Dans les processeurs qui utilisent une antémémoire de données, les instructions de chargement normales agiront plus efficacement si l'information de donnée réside dans l'antémémoire incorporée à la puce. En internal data memory. Access to externally stored data is usually done via an external data bus controlled by the processor's internal logic. The rationale for a data cache is the ability to get high-performance access to often-used information, which speeds up the speed of processing. In processors that use a data cache, the normal load instructions will act more efficiently if the data information resides in the cache embedded in the chip. In
d'autres termes, si la donnée ne se trouve pas dans l'anté- other words, if the data is not in the past
mémoire, on sera pénalisé en ce qui concerne les perfor- memory, we will be penalized with regard to the perfor-
mances lorsque l'on voudra accéder à cette donnée. when you want to access this data.
Habituellement, lorsque l'on référence une donnée externe Usually, when reference is made to external data
26 4 3 1 6626 4 3 1 66
au moyen d'une instruction de chargement normal, cette donnée est mdmcrisee dans l'antémémoire. La raison en est que, dar.s des conditions normales, il est très probable que la donnée que l'cn vient juste de référencer soit à nouveau référencée à bref déliai. On minimise la pénalisation liée à l'accès à la dcnnée en mettant dans l'antémémoire de données by means of a normal loading instruction, this data is stored in the cache. The reason is that, under normal conditions, it is very likely that the data that has just been referenced is again referenced in a short time. We minimize the penalty related to access to the data by putting in the data cache
internes les -informations auxquelles on accède le plus fré- the most frequently accessed information.
quemment, et en reservant la mémoire externe pour les informations rarement référencées ou réutilisées. C'est le and reserving external memory for information that is rarely referenced or reused. It's the
principe de localisaticn qui fait que l'antémémoire de don- localisaticn principle which makes the data cache
nées est un instrument utile, du fait que les programmes ont tendance à ré-érencer certaines données de façon répétée à is a useful tool, as programs tend to re-derive some data repeatedly
bref délai.short delay.
:1 se présente cependant un problème lorsque l'on fait :5 traiter à un Przcesseur des structures de données de très grande cdmens-cn cou, en tout état de cause, des structures There is, however, a problem when it is necessary to treat data structures of a very large size in any case, in any case
de données qui sznt beaucoup plus grandes que ce que l'anté- data that are much larger than what
memoire de d-nnees eut normalement contenir. Comme illus- memory of d-nnees would normally contain. As illus-
trazion de la difflcuitê qui peut survenir, on peut citer le cas d'un processeur- auquel on demande souvent d'exécuter diverses cperat_-.ns à virgule flottante, par exemple des inversicns mairselles, des multiplications, etc., qui Another possibility is the case of a processor which is often asked to perform various floating-point tests, for example, mismatched inversions, multiplications, etc., which
nécessitent la manipulation d'immenses matrices de données. require the manipulation of huge data matrices.
Dans les processeurs de l'art antérieur, lorsque la donnée ne se trouve pas dans i'antémémoire de données incorporée à la puce, le processeur doit geler l'exécution et demander l'accès à la mémcire externe. Pendant la durée de ce gel de In the processors of the prior art, when the data is not in the data memory embedded in the chip, the processor must freeze the execution and request access to the external memory. During the duration of this freezing
l'exécution, on empêche le processeur de délivrer une quel- execution, the processor is prevented from delivering a certain
conque ncuvelle adresse à la mémoire. En d'autres termes, le processeur doit attendre que les données nécessaires à la première opérati zn arrivent de la mémoire externe avant de poursuivre l'exécution de ses opérations. De ce fait, ce type d'accès à une memcire externe peut prendre jusqu'à six cycles d'horlcae, _u même plus. On introduit ainsi un retard important, qui ue sur la vitesse de traitement du système lcrsque la ta..e des structures de données impliquées dans le traitem.en.t reuert des accès fréquents à la mémoire externe. Un autre problème lié à la gestion de structures de données de grandes dimensions apparait lorsque l'on amène au conque new address to the memory. In other words, the processor must wait for the data necessary for the first operation to arrive from the external memory before continuing the execution of its operations. As a result, this type of access to an external memory can take up to six clock cycles, or even more. This introduces a significant delay, which affects the processing speed of the system when the data structures involved in the processing have frequent access to the external memory. Another problem related to the management of large data structures appears when one brings to the
processeur la donnée à laquelle on a accédé à l'extérieur. processor the data that has been accessed externally.
Lorsque la donnée externe est délivrée au processeur, elle est inscrite dans l'antémémoire et remplace généralement une When the external data is delivered to the processor, it is cached and generally replaces a
donnée qui y résidait antérieurement. Cependant, on se rap- data that previously resided there. However, we are
pelera que certaines données externes sont constituées d'opérations rarement référencées (ce cas est extrêmement fréquent avec des structures de données de grandes will argue that some external data consists of seldom referenced operations (this case is extremely common with large data structures
1i dimensions), c'est-à-dire que l'on n'envisage pas de les ré- Dimensions), that is to say that we do not envisage
utiliser, alors que les données qu'elles ont remplacé dans l'ar. znémémoire étaient des informations qui allaient très use, while the data they replaced in ar. znememory were information that was going to be very
probablement être référencées à bref délai. Ainsi, le pro- probably be referenced shortly. Thus, the
cesseur élimine des données qui doivent être réutilisées en -5 faveur de données qui, selon toute probabilité, ne seront référencées qu'une seule fois. Il en résulte que l'on perd un temps inutile à rappeler les données de l'antémémoire qui ont été substituées. Ce temps d'accès accru est une autre raison pour laquelle les processeurs de l'art antérieur t2 fonctionnent à une vitesse bien inférieure à celle que The processor eliminates data that must be reused in favor of data which, in all probability, will be referenced only once. As a result, unnecessary time is lost in recalling the cached data that has been substituted. This increased access time is another reason why the processors of the prior art t2 operate at a much lower speed than
permet la présente invention.allows the present invention.
Comme on le verra, la présente invention prévoit une As will be seen, the present invention provides a
structure en pipeline qui est capable d'effectuer des opéra- pipeline structure that is able to perform operations
tions mémoire à une vitesse très supérieure (pratiquement, à une vitesse correspondant à la largeur de bande maximale du bus) sans aucun retard pour attendre que le processeur memory at a much higher speed (practically at a speed corresponding to the maximum bandwidth of the bus) without any delay in waiting for the processor
produise l'adresse suivante. Par utilisation de cette struc- produce the following address. By using this structure
ture en pipeline, le processeur associé à la présente inven- pipeline, the processor associated with this invention.
tion peut continuer à délivrer des adresses sans avoir à attendre l'arrivée des données en provenance de la mémoire externe. Par rapport aux processeurs de l'art antérieur, tion can continue to deliver addresses without having to wait for the arrival of data from the external memory. Compared to the processors of the prior art,
cette possibilité procure un avantage certain au micropro- this possibility provides a definite advantage to the micropro-
cesseur que l'on va décrire ici.cessor that will be described here.
Pour arriver à ceci, la présente invention prévoit une instruction de chargement à virgule flottante en pipeline permettant d'accéder rapidement à une donnée mémorisée en mémoire externe. Cette instruction logicielle de chargement à virgule flottante en pipeline, que l'on appelera par To achieve this, the present invention provides a pipeline floating point loading instruction for quick access to data stored in external memory. This Pipeline Floating Point Software Instruction, which will be referred to as
2643 1662643 166
c.dit "instruction PFLoad" (F-Pielined Floating-point Load: chargement à vrul flottante -en pipeine) ou "i-nstructor. ?FLD", peut être utilisée par un programmeur pour accéder à une donnée mémorisée soit dans l'antémémoire de données incorporée à La puce scit dans une mémoire système externe. L'instruction est optimisée pour tenir c.dit "F-Pielined Floating-point Load" or "i-nstructor." FLD, can be used by a programmer to access stored data in either data cache embedded in the chip scit in an external system memory. The instruction is optimized to hold
compte du cas o la donnée ne réside pas déjà dans l'anté- the case where the data does not already exist in the past.
memoire de données interne du processeur. On appellera cette situation "non-concordance d'antémémoire" ou, formulée d'une 1l autre manière, "nonconcordance PFLoad". Le cas contraire, o- la donnée que l'on doit charger est déjà mémorisée dans l'anr.émémoire de donnees, et ue 'o..n appellera "concordance internal data memory of the processor. This situation will be referred to as a "cache mismatch" or, in another form, as "PFLoad nonconcordance". The opposite case, where the data to be loaded is already stored in the data memory, and which will be called "concordance".
d'a.teemc:re", est..aement gérée par la présente inven- is managed by the present invention.
_ En outre, l'instruction PFLoad de la présente invention -e remplacera pas la donnée résidant déjà dans l'antémémoire ne dcnnées mais, au contraire, dirigera la nouvelle donnée à iazuelle on a accédé vers un empiacement de mémorisation In addition, the PFLoad instruction of the present invention will not replace the data already residing in the cache, but instead will direct the new data to a storage location.
s:tué à l'int'r:er de:'unité à virgule flottante du pro- s: killed in the interest of: 'floating-point unit of the
cesseur. L'instruction PFLcad sera décrite dans le cadre de sa mise en oeuvre ncrmaie dans i'unité de contrôle du bus du processeur NO., cessor. The instruction PFLcad will be described in the context of its implementation ncrmaie in the bus control unit of the processor NO.
Cn. va décrire ci-dessous une instruction de micropro- Cn. Will describe below a micropro-
cesseur specialisée optimisée pour l'accès à des données à -iraule _flottante mémT-rises dans un système de mémoire externe. L'invention utilise l'architecture en pipeline du microprocesseur pour retrouver de façon efficace la donnée externe qui ne sera très probablement pas réutilisée à bref délai, en transférant la donnée directement vers un verrou Specialized caterer optimized for accessing floating-point data stored in an external memory system. The invention uses the pipelined architecture of the microprocessor to efficiently retrieve the external data that will most likely not be reused in a short time, by transferring the data directly to a lock
de données à virgule flottante. Les données fréquement réfé- floating point data. Frequently referenced data
rencées, qui résident dans l'antémémoire de données incor- encountered, which reside in the cached data incor-
porée à la puce, ne seront pas dérangées par ces opérations. porée à la puce, will not be disturbed by these operations.
L'instruct on de c.argement à virgule flottante en pipeline de la présente invention comporte une pile mémoire du type "premier entré- premier sor-ti", ci-après désignée "mémoire PEPS", permettant de cumuler les données auxquelles on a accédé. Des premiers moyens de circuit coopèrent avec la mémoire PEPS pour délivrer à la mémoire PEPS les données depuis la mémoire externe, et il est prévu des seconds moyens de circuit pour transférer au verrou de données à virgule flottante les données de La mémoire PEPS. Les seconds moyens de circuit assurent également l'application en retour des données en provenance de l'antémémoire de données vers la mémoire PEPS dans le cas d'une concordance The pipelined floating-point instruction of the present invention comprises a "first-in-first-out" memory cell, hereinafter referred to as "FIFO memory", for accumulating the data that has been obtained. accessed. First circuit means cooperates with the FIFO to provide the FIF data with the data from the external memory, and second circuit means are provided for transferring the PEPS memory data to the floating point data latch. The second circuit means also provides feedback of the data from the data cache to the FIFO in the case of a match.
d'antémémoire (c'est-à-dire dans le cas o la donnée réfé- cache (that is, in the case where the referenced data
rencée réside effectivement dans l'antémémoire de données). encountered actually resides in the data cache).
Enfin, il est prévu des moyens de contrôle de bus, reliés Finally, there are provided bus control means, connected
aux premiers et aux seconds moyens de circuit, pour contrô- first and second circuit means for controlling
ler le flux en pipeline des données depuis le système de the pipeline flow of data from the
memoire externe jusqu'à l'unité à virgule flottante. external memory up to the floating-point unit.
L'invention a également pour objet un procédé pour accéder, dans un tel processeur comprenant une unité de traitement, une antémémoire de données et une liaison à un système de mémoire externe, à une donnée se trouvant dans cette mémoire externe, comportant les étapes suivantes: adressage de la donnée dans la mémoire externe; inscription de cette donnée, depuis la mémoire externe, dans une mémoire du type premier entré-premier sorti; lecture de cette donnée, depuis cette mémoire du type premier entrépremier sorti, vers un bus; et transfert de cette donnée sur ce bus vers un verrou de données situé à l'intérieur de l'unité de t-aitement. La présente invention permet de disposer ainsi d'une instruction opérant en pipeline qui soit capable d'effectuer des opérations mémoire à une vitesse nettement plus élevée que dans le cas des processeurs de l'art antérieur. De la sorte, la présente invention permet de continuer à délivrer des adresses sans devoir attendre l'arrivée effective des The invention also relates to a method for accessing, in such a processor comprising a processing unit, a data cache and a link to an external memory system, to a data item in this external memory, comprising the following steps : addressing the data in the external memory; writing this data from the external memory into a first-in first-out memory; reading this data, from this first-in-first-out memory, to a bus; and transferring this data on that bus to a data lock located within the storage unit. The present invention thus provides a pipelined instruction which is capable of performing memory operations at a significantly higher rate than in the case of prior art processors. In this way, the present invention makes it possible to continue delivering addresses without having to wait for the actual arrival of the
données depuis la mémoire externe. data from the external memory.
La présente invention permet également d'accéder ainsi à The present invention also makes it possible to thus access
des données externes sans remplacer des données déjà rési- external data without replacing data already
dentes dans l'antémémoire de données incorporées à la puce. cached in the cache of data embedded in the chip.
La présente invention permet donc de minimiser le temps total d'accès, ce qui permet d'accroître la vitesse de fonctionnement. La présente invention permet également ainsi de disposer d'ur. moyen efficace et rapide pour gérer des opérations arithmétiques impliquant des structures de données de très The present invention thus makes it possible to minimize the total access time, which makes it possible to increase the speed of operation. The present invention also makes it possible to have ur. efficient and fast way to handle arithmetic operations involving data structures of very
arande dimensonr..dimensonr ..
00
On comprendra mieux la présente invention à la lecture de la descri-tion détaillée ci-dessous et des dessins annexés The present invention will be better understood on reading the detailed description below and the accompanying drawings.
du mode de réalisation préféré de la présente invention. of the preferred embodiment of the present invention.
i0 Cette description et ces dessins ne doivent cependant pas i0 However, this description and these drawings should not
être considérés comme limitant la présente invention à un mode de a-'isaion rarticulier, et ils ne sont donnés qu'à be considered as limiting the present invention to a particular mode of use, and they are given only
des fins exp:cat 4ves et illustratives. 4v and illustrative purposes.
La fig re ' est un schéma logique éclaté du processeur associé l'iînstruction de ch.araement à virgule flottante en FIG. 9 is an exploded logic diagram of the processor associated with the floating point buffer instruction.
pipeline de la présente invention.pipeline of the present invention.
La figure 2 montre le mode de réalisation actuellement créféré de l'instruction de chargement à virgule flottante Figure 2 shows the currently implemented embodiment of the floating point load instruction
en pipeline de la présente invention. in pipeline of the present invention.
2C La figure iustre une série d'instructions de charge- 2C Figure iustre a series of charging instructions-
ment a virgule flottante en pipe line qui ont été émises pour l'exécution d'une opération typique i mpliquant une matrice vectorielle mé.morisée en mémoire externe et un vecteur interne mémorisé dans!'antémémoire de données incorporée à pipelined floating point that were issued for performing a typical operation involving a vectorized memory array in external memory and an internal vector stored in the data cache embedded in
la puce. On a indiqcué les adresses associées à chaque ins- the chip. The addresses associated with each
truction de chargement à virgule flottante en pipeline, avec leurs emplacements de mémorisation en virgule flottante associés. La figure 4 illustre une variante du mode de réalisation pipelined floating point truction with their associated floating point storage locations. FIG. 4 illustrates a variant of the embodiment
de la présente invention.of the present invention.
La figure 5A illustre un mode de réalisation de la mémoire du type premier entré-premier sorti de chargement à virgule flottante en pipeline faisant partie de la présente invention. La figcure 5B _ lusre le mode de réalisation actuellement préféré de la mémoire du type premier entrépremier sorti Fig. 5A illustrates an embodiment of the pipelined floating-point first-to-first-out memory of the present invention. FIG. 5B illustrates the presently preferred embodiment of first-in-first-out memory
faisant partie de la présente inventicn. forming part of the present invention.
La figure 6 est un organigramme mentrant les opérations de contrôle assurées par la logique de contrôle du bus FIG. 6 is a flowchart showing the control operations performed by the bus control logic
asszciée à l'instruction PFLoad de la présente invention. Assigned to the PFLoad instruction of the present invention.
On va décrire un microprocesseur comprenant une instruction de chargement à virgule flottante en pipeline A microprocessor will be described comprising a pipelined floating point loading instruction
permettant de charger des données depuis une mémoire ex- to load data from an external memory
terne. Dans la description qui va suivre, on donnera de dull. In the description that follows, we will give
nombreux détails particuliers, par exemple des tailles en nom're de bits, etc., afin de permettre une compréhension parfaite de la présente invention. L'homme du métier comzrendra bien évidement que ces détails particuliers n'ont pas besoin d'être nécessairement repris pour mettre en oeuvre la présente invention. Inversement, des structures et des circuits bien connus n'ont pas été décrits en détail many particular details, e.g., bit sizes, etc., to allow a perfect understanding of the present invention. Those skilled in the art will of course understand that these particular details do not need to be necessarily repeated to implement the present invention. Conversely, well-known structures and circuits have not been described in detail
afin de ne pas alourdir inutilement la description de la so as not to unnecessarily burden the description of the
présente invention.present invention.
Si l'on se réfère à la figure 1, on y a représenté un Referring to Figure 1, there is shown a
schéma éclaté du processeur M10. Le processeur M10 est logi- exploded diagram of the M10 processor. The M10 processor is logi-
quement et physiquement divisé en huit unités distinctes. physically divided into eight separate units.
L'unité arithmétique 35 comporte une unité d'additionneur à virgule flottante qui permet de réaliser des additions en simple précision et en double précision conformément à la norme IEEE, et un bloc multiplieur à virgule flottante, qui permet, de la même façon, de réaliser des multiplications en simple précision et en double précision conformément à la norme IEEE. L'additionneur et le multiplieur sont tous deux constitués d'unités qui peuvent fonctionner en pipeline à trois étages. En cours de fonctionnement, les opérandes d'entrée représentés par les mnémoniques "srcl" et "src2" sont appliqués à l'unité arithmétique 35 par les lignes 42 et 43, respectivement. Les mnémoniques "srcl" et "src2" The arithmetic unit 35 comprises a floating point adder unit which makes it possible to perform single precision and double precision additions in accordance with the IEEE standard, and a floating point multiplier block, which allows, in the same way, perform single precision and double precision multiplications according to the IEEE standard. Both the adder and the multiplier consist of units that can operate in a three-stage pipeline. In operation, the input operands represented by the symbols "src1" and "src2" are applied to the arithmetic unit 35 through lines 42 and 43, respectively. The mnemonics "srcl" and "src2"
(ainsi que le mnémonique "dest") indiquent l'un des trente- (as well as the mnemonic "dest") indicate one of the thirty-
deux registres à virgule flottante situés à l'intérieur du two floating point registers located within the
processeur M0lO. Le résultat en sortie de l'unité arith- M010 processor. The output result of the arith-
métique 35 apparalt sur la ligne 49, qui est reliée au bus de destination 41 à 64 bits. Les bus 41 à 43 ont chacun une argeur de 64 bits et ils sont reliés à l'unité de contrôle à v-rgule flottante 33. Les opérandes source à virgule flottante "srci" et "src2" sont également appliqués à metic 35 appears on the line 49, which is connected to the destination bus 41 to 64 bits. The buses 41 to 43 each have a 64-bit arg and are connected to the floating-point control unit 33. The floating point source operands "srci" and "src2" are also applied to
l'unité graphique 34.the graphic unit 34.
L'unité graphique 34 est un processeur graphique 64 bits permettant d'effectuer à grande vitesse des calculs de The graphic unit 34 is a 64-bit graphics processor making it possible to carry out at high speed calculations of
pixels et de graphiques tridimensionnels pour divers algo- pixels and three-dimensional graphics for various algo-
rithmes d'cmbrage et pour la vérification du tampon de pro- and to check the stamp of the pro-
fondeur en vue de 'éiimination des surfaces cachées. Le processeur graphique est capable de regrouper les résultats de plusieurs operations tour délivrer sur la ligne 45 un foundry for the purpose of eliminating hidden surfaces. The graphics processor is able to consolidate the results of several round operations deliver on line 45 a
résultat vers le bus de destination 4_. result to destination bus 4_.
I'antémémcire d'instruction 20, également appelé "unité 1", délivre des instructions sur des entiers à 32 bits et sur des n.srbres à virgule flottante à 32 bits, à la fois au ncyau iSC 3 e l'unité de contrôle à virgule Instructionemember 20, also called "unit 1", issues instructions on 32-bit integers and 32-bit floating-point numbers, both at the same time as the control unit. comma
flcttante 33 sur Les lignes 24 et 25, respectivement. L'an- flcttante 33 on lines 24 and 25, respectively. The an-
ééoire d'insru.zti.n est une mémoire associative bidi- The memory of insru.zti.n is a two-dimensional associative memory
ret:_onnee de 4 K. octets, en blocs de 32 octets. Les ret: _onnee of 4 K. bytes, in blocks of 32 bytes. The
instructions sont déelivrées aux bus respectifs par l'anté- instructions are given to the respective buses by
memoire 2 à chaque cycle d'horloge. L'unité de gestion de la mémoire 21 exécute la traduction de l'adresse virtuelle en adresse physique pour les accès aux données et aux instructions, effectue e contrôle des violations d'accès et compare les adresses physiques du cycle en cours à celles du cycle précédent pour produire, sur un même cycle d'horloge, le signal le plus proche qui suit. La traduction est memory 2 at each clock cycle. The memory management unit 21 performs the translation of the virtual address into a physical address for access to the data and instructions, performs control of the access violations and compares the physical addresses of the current cycle with those of the cycle. preceding to produce, on the same clock cycle, the nearest signal that follows. The translation is
effectuée au mcyen d'un tampon de traduction par trans- carried out by means of a translational translation buffer.
codage, qui est une antémémoire associative à 64 entrées. encoding, which is a 64-input associative cache.
L'unité de gestion de la mémoire 21 reçoit ses données d'entrée par les bus 26 et 27 de 32 bits, en sortie du noyau The memory management unit 21 receives its input data via the buses 32 and 27 of 32 bits, at the output of the core
RSC 31.RSC 31.
Le noyau RISC 3!, également désigné "noyau d'exécution" ou "unité E", exécute toutes les opérations sur les entiers de 32 bits, et e'Les de chargement/mémorisation. C'est le The RISC 3 kernel, also referred to as "runtime kernel" or "E-unit", performs all operations on 32-bit integers, and the loading / storing ones. It's the
ccntrôleur central du processeur MIv. Il possède une bat- the central controller of the MIv processor. He has a bat-
-erie de regiscres à trois ports, avec des registres à 32 L_-s, un réseau de contournement, un décaleur, une unité three ports, with 32 L_-s registers, a bypass network, a shifter, a
arithmétique et logique et les pointeurs d'instruction. arithmetic and logic and instruction pointers.
L'unité de noyau d'exécution 31 va chercher aussi bien les instructions relatives aux entiers que les instructions à virgule flottante. Il contient la batterie des registres d'entiers et décode et exécute les opérations de chargement, de mémorisation, de traitement des entiers, de traitement Execution kernel unit 31 will search both the integer instructions and the floating point instructions. It contains the battery of integer registers and decodes and performs the operations of loading, memorizing, integer processing, processing
des valeurs binaires et de contrôle-transfert. binary and control-transfer values.
L'unité d'ant-emémoire de données 22 assure les fonctions d'antémémoire de données et d'alignement des octets pour les The data cache unit 22 provides data cache and byte alignment functions for
opérations de lecture/écriture et les processeurs NI.. L'é- read / write operations and NI processors.
change des données de l'antémémoire est exécuté entre l'an- change cache data is executed between the year
témémolre de données 22 et l'unité de contrôle à -virgule flotta_=nte 33 par l'intermédiaire du bus 37. L'antémémoire de donr.nées 22 pent également recevoir des données externes par l'intermédiaire de l'unité de contrôle du bus 30 sur un bus data memory 22 and the floating-point control unit 33 via the bus 37. The data cache 22 can also receive external data via the control unit of the data carrier. bus 30 on a bus
à 64 bits 29.at 64 bits 29.
L'unité de ccr.rôle du bus 30, également appellée "unité B", est le contrôleur de cycle de bus qui assure l'interfaçage entre le bus externe et la puce interne. Il reçoit des requêtes de cycle de bus de l'unité E, effectue les accès à!'ar.temémoire de données et à l'antémémoire The bus control unit 30, also referred to as "unit B", is the bus cycle controller that provides the interface between the external bus and the internal chip. It receives bus cycle requests from the unit E, accesses the data cache and the cache.
d'instruction, gère les cas de non-concordance d'antémé- training, manages the cases of non-concordance
moire, avec contrôle du gel et remplacement de la ligne d'antémémoire, contrôle la traduction par le tampon de memory, with freeze control and replacement of the cache line, checks the translation with the buffer of
traduction par transcodage et le tra -ement des non-con- translation by transcoding and tracing of non-con-
cordances et des défauts, et assure l'interfaçage avec le bus externe. L'instruction de chargement à virgule flottante en pipeline qui fait l'objet de la présente invention est mise en oeuvre à l'intérieur de l'unité de contrôle du bus 30 du processeur N10. Le contrôleur de bus possède une architecture en pipeline qui permet d'avoir jusqu'à trois strings and faults, and provides interfacing with the external bus. The pipelined floating point loading instruction which is the subject of the present invention is implemented inside the bus control unit 30 of processor N10. The bus controller has a pipelined architecture that allows for up to three
cycles de bus simultanément en cours. bus cycles simultaneously in progress.
Dans l'architecture de nombreux microprocesseurs In the architecture of many microprocessors
modernes, on utilise le fonctionnement en pipeline pour ac- modern technologies, pipeline operation is used to
croître la vitesse à laquelle on peut introduire ou exécuter des opérations. L'architecture en pipeline traite chaque opération sous forme d'une série d'opérations primitives to increase the speed at which one can introduce or execute operations. The pipeline architecture treats each operation as a series of primitive operations
(appelées étages), qui peuvent être exécutées en parallèle. (called stages), which can be run in parallel.
tC Dans le processeur., le nombre d'étages du pipeline reu- aller de un à trois. Une opérat:on en DiBeline avec un pipeline à trois étages mémorise le résultat de l'opération située trois opérations en arrière. Une opération en pipeline avec un pipeline à deux étages mémorise le résultat In the processor, the number of stages of the pipeline is reduced from one to three. An operation in DiBeline with a three-stage pipeline stores the result of the operation located three operations behind. A pipeline operation with a two-stage pipeline stores the result
de l'opération située deux opérations en arrière. Une opé- of the operation located two operations back. An operation
ration en pipeline avec un pipeline à un étage mémorise le résultat de i'opération précédente. Le processeur N'! permet d'avoir un. fonctionnement en pipeli-ne du cycle de bus sur i$ trois r.niveaux sur le bus externe, de sorte que l'on peut avcr. trc.s cycles de bus qui aient été émis avant que la Pipeline delivery with a one-stage pipeline stores the result of the previous operation. The processor N '! allows to have one. Pipelining operation of the bus cycle on three levels on the external bus, so that one can avcr. trc.s bus cycles that were issued before the
donn.ee correspondant au remier cycle n'ait été retournée. data corresponding to the first cycle has been returned.
En cutre, le chemin interne des adresses dans l'unité B est crganisé en pipeline, de tele sorte que l'on exécute la :5 traduction d'adresse du... e suivant parallèlemen.t au cycle In addition, the internal path of the addresses in the unit B is organized in a pipeline, so that the translation of the address of the following e is parallel to the cycle.
de bus externe en cours.external bus in progress.
cumme cn!'a indiqué plus haut, or.cn utilise l'instruction PFLcad crur accéder, dans la mémoire externe, aux données rarement ut:ié=es, c'est-àdire aux données cue l'on ne 1 prévoit zas de réutiliser à bref délai. Dès lors, la logique ce contr5le ?FLoad, qui se trcuve à l'intérieur de l'unité de contrôle du bus, est optimisée pour tenir compte du cas d'une non-concordance d'a.ntém-émoire. Une "non-concordance d'a.nememore" correspond à la situation dans laquelle la donnée demandée par PFLoad n'est pas une donnée résideant As mentioned above, or.cn uses the PFLcad instruction to gain access, in external memory, to data that is rarely used, ie data that does not contain any data. reuse at short notice. Therefore, the logic that controls FLoad, which is found inside the control unit of the bus, is optimized to take into account the case of a nonconformance mismatch. A "mismatch of a.nememore" corresponds to the situation in which the data requested by PFLoad is not a resident datum
déjà dans l'unité de l'antémémoire de données. already in the data cache unit.
La figure 2 illustre un mode de réalisation préféré de Figure 2 illustrates a preferred embodiment of
mise en oeuvre de 'instruction de la présente invention. implementing instruction of the present invention.
L'instruction PFLoad retourne une donnée, depuis la mémoire externe, sur un bus 40 à 64 bits. La donnée retournée est la donnée qui avait été adressée trois instructions en arrière, conformément au fonctionnement en pipeline du processeur N!0. Le tampon à trois états logiques 60 est utilisé pour The PFLoad instruction returns data from the external memory on a 64-bit bus 40. The data returned is the data that was sent three instructions back, according to the pipelined operation of processor N! 0. The logical three-state buffer 60 is used to
appliquer la donnée externe sur l'entrée "zéro" du multi- apply the external data to the "zero" input of the multi-
piexeur 62, ainsi que sur l'entrée "DBS" du multiplexeur 67. Le tampon 60 est relié aux multiplexeurs 62 et 67 par l'intermédiaire de la ligne 61. Le tampon 60, ainsi que les étages de pilotage 69, 74 et 75, sont constitués d'étages de 1! pilotage classiques en logique à trois états. De la même façon, dans le mode de réalisation préféré les multiplexeurs 62 et 67 sont formés de circuits logiques classiques. Le contrôle des étages de pilotage à trois états 60, 69, 74 et 75, ainsi que des multiplexeurs 62 et 67, est assuré par la The buffer 60 is connected to the multiplexers 62 and 67 via the line 61. The buffer 60, as well as the control stages 69, 74 and 75, are connected to the multiplexer 62. , consist of stages of 1! classical control in three-state logic. In the same way, in the preferred embodiment, the multiplexers 62 and 67 are formed of conventional logic circuits. The control of the three-state driving stages 60, 69, 74 and 75, as well as the multiplexers 62 and 67, is ensured by the
logique de contrôle du bus située à l'intérieur de l'uni- control logic of the bus inside the unit.
té B. Cette logique de contrôle a été synthétisée par ordi- B. This control logic has been synthesized by
nateur à partir d'une description en langage fonctionnel à from a functional language description to
haut niveau de l'unité de contrôle du bus. On donnera plus -0 bas un organigramme des opérations de contrôle exécutées par i'unité B. La mise en oeuvre de l'instruction PFLoad nécessite également une mémoire 65, ciaprès désignée "mémoire PEPS high level of the bus control unit. A flow chart of the control operations executed by unit B will be given below. The implementation of the PFLoad instruction also requires a memory 65, hereinafter referred to as "FIFO memory".
PFLoad" ou "mémoire PEPS", reliée à la sortie du multi- PFLoad "or" FIFO memory ", connected to the output of the multi-
plexeur 62 par la ligne 63. -La mémoire PEPS 65 produit une donnée à sa sortie 66, donnée qui est appliquée à l'entrée PFLD du multiplexeur 67. Dans le mode de réalisation actuellement préféré, la mémoire PEPS 65 a une taille de 64 bits, avec une profondeur de trois mots. La mémoire PEPS PFLoad 65 contient les données sur 64 bits référencées par plexeur 62 by line 63. -The FIFO 65 produces data at its output 66, which is applied to the PFLD input of the multiplexer 67. In the presently preferred embodiment, the PEPS memory 65 has a size of 64. bits, with a depth of three words. PEPS memory PFLoad 65 contains the 64-bit data referenced by
les trois instructions PFLoad antérieures. Lors de l'initia- the previous three PFLoad statements. At the initiative
lisation du processeur, ou apres une réinitialisation, le contenu de la mémoire PEPS est indéterminé. En conséquence, pour les trois premières instructions PFLoad, ce sont des données inutilisables ou-des résidus qui seront retournés processor, or after a reset, the contents of the FIFO are indeterminate. As a result, for the first three PFLoad instructions, these are unusable data or -that will be returned
(les programmeurs devront alors ignorer les données retour- (programmers will then have to ignore the return data
nées par les trois premières instructions PFLoad qui auront born by the first three PFLoad instructions that will have
été délivrées).been issued).
Le multiplexeur 67 possède une entrée permettant de recevoir des données en sortie du sommet de la mémoire PEPS et une autre entrée permettant de recevoir des données directement de la mémoire externe. La donnée externe est directement appliquée au multiplexeur 67 via la ligne 61. La mémoire PEPS 65 est reliée au multiplexeur 67 par la ligne 66. La sortie du multiplexeur 67 apparaît sur la ligne 68, qui est reliée au tampon à trois états 69. Le tampon de bus à trois états 69, quant à lui, est relié à un bus interne à 64 bits, désigné BiBUS, qui a été illustré figure 2 par la The multiplexer 67 has an input for receiving data output from the top of the FIFO memory and another input for receiving data directly from the external memory. The external data is directly applied to the multiplexer 67 via the line 61. The PEPS memory 65 is connected to the multiplexer 67 via the line 66. The output of the multiplexer 67 appears on the line 68, which is connected to the tri-state buffer 69. tri-state bus buffer 69, in turn, is connected to a 64-bit internal bus, designated BiBUS, which has been illustrated in FIG.
ligne 29. Comme son nom l'indique, ce bus est bidirec- line 29. As its name indicates, this bus is bidirec-
tionnel, c'est-à-dire qu'il peut délivree des données à l'unité à virgule flottante et, aussi bien, retourner au that is, it can deliver data to the floating-point unit and, as well, return to the
multiplexeur 62 des données en provenance de l'antémémoire. multiplexer 62 data from the cache.
Le bus BIBUS 29 est relié, par l'intermédiaire du tampon 75, The BIBUS bus 29 is connected, via the buffer 75,
à un bus DABUS 76, qui a également une largeur de 64 bits. to a bus DABUS 76, which also has a width of 64 bits.
Le bus DABUS 76 relie le verrou de données d'entrée à virgule flottante 78 à l'antémémoire de données 70. Comme indiqué précédemment, le bus BIBUS 29 est bidirectionnel The DABUS bus 76 connects the floating-point input data latch 78 to the data cache 70. As previously indicated, the BIBUS bus 29 is bidirectional
afin de permettre, dans le cas d'une concordance d'anté- to allow, in the case of an earlier match
mémoire, le retour au multiplexeur 62 des données résidant déjà dans l'antémémoire de données 70. Les données se trouvant dans l'antémémoire sont appliquées par la ligne 79 memory, the return to the multiplexer 62 data already residing in the data cache 70. The data in the cache are applied by the line 79
au bus BIBUS, par l'intermédiaire du tampon 74. to the BIBUS bus, via the buffer 74.
1]5 Lorsque le processeur N10 a besoin d'accéder à une donnée, cette donnée peut se trouver soit dans un système 1] 5 When the processor N10 needs to access a data, this data can be either in a system
mémoire externe soit à l'intérieur de l'antémémoire de don- external memory is inside the data cache.
nées interne. Lorsque la donnée est extérieure au processeur NIO, l'instruction PFLoad agit de manière à charger dans la mémoire PEPS PFLoad 65 la donnée depuis la mémoire externe, en utilisant le bus externe 40 et par l'intermédiaire du born internally. When the data is external to the processor NIO, the instruction PFLoad acts so as to load the data FIFO PFLoad 65 data from the external memory, using the external bus 40 and through the
multiplexeur 62. Après que trois instructions PFLoad suc- multiplexer 62. After three successful PFLoad instructions
cessives (correspondant à des étages successifs de la cessives (corresponding to successive stages of the
memcire PEPS) aient été émises, la donnée initiale est pro- memcire PEPS) have been issued, the initial data is pro-
duite sur la ligne 66, puis ensuite délivrées sur le bus BIBUS 29. Une fois la mémoire PEPS pleine, chaque cycle PFLoad normal transfère la donnée du dessus de la mémoire PEPS au bus BIBUS 29, puis au verrou de données d'entrée à virgule flottante 78, via le bus DEABUS 76. Ainsi, chaque cycle PFLoad normal déclenche à l'intérieur du processeur un on the line 66, and then delivered on the BIBUS bus 29. When the PEPS memory is full, each normal PFLoad cycle transfers the data from the top of the PEPS memory to the BIBUS bus 29, and then to the decimal input data latch 78, via the DEABUS bus 76. Thus, each normal PFLoad cycle triggers inside the processor a
cycle de lecture correspondant.corresponding reading cycle.
Lorsqu'une nouvelle donnée arrive du bus de donnée externe, elle est normalement dirigée vers la base de la mémoire PEPS 65. Cependant, si la donnée adressée réside déjà dans l'antémémoire de données, on aura un cas de When a new data arrives from the external data bus, it is normally directed to the base of the PEPS memory 65. However, if the addressed data already resides in the data cache, there will be a case of
"concordance PFLoad'" (synonyme de "concordance d'anté- "PFLoad match" (synonymous with "previous agreement"
mémoire") et on produira une exception. Dans le cas d'une concordance PFLoad, la logique de contrôle du bus de l'unité B va attendre que tous les cycles de bus en cours soit achevés. Ensuite, elle transférera la donnée demandée de l'antémémoire de données 70 à la base de la mémoire PEPS 65 en suivant le chemin de données constitué par la ligne 79, le tampon 74, le bus BIBUS 29 (relié à l'entrée "1" du "In the case of a PFLoad match, the Bus B control logic will wait for all current bus cycles to be completed, and then transfer the requested data from the bus. the data cache 70 at the base of the PEPS memory 65 following the data path constituted by the line 79, the buffer 74, the BIBUS bus 29 (connected to the input "1" of the
multiplexeur 62) et la ligne 63.multiplexer 62) and line 63.
Le contrôleur doit attendre que tous les cycles de bus en cours soit achevés pour transférer la donnée de concordance PFLoad de l'antémémoire de données 70 à la base de la The controller must wait for all current bus cycles to be completed to transfer the PFLoad match data from the data cache 70 to the base of the
mémoire PEPS 65 et ce, pour deux raisons. PEPS 65 memory for two reasons.
En premier lieu, il se peut qu'il y ait un cycle PFLoad en cours. Toute tentative d'inscription de la donnée de concordance PFLoad dans la mémoire PEPS avant que tous les First, there may be a PFLoad cycle in progress. Any attempt to register the PFLoad match data in the PEPS memory before all
cycles PFLoad en cours n'aient été achevés va détruire l'or- PFLoad cycles in progress have been completed will destroy the or-
dre des données se trouvant dans la mémoire PEPS. dre data in the FIFO memory.
En second lieu, le bus BIBUS 29 peut être déjà occupé par des données que l'on est en train de transférer vers l'unité à virgule flottante au moyend'une instruction PFLoad se trouvant trois instructions en arrière. Il en résultera un Second, the BIBUS bus 29 may already be busy with data that is being transferred to the floating point unit by means of a PFLoad instruction which is three instructions back. This will result in a
conflit de bus si la donnée de concordance PFLoad en prove- bus conflict if the PFLoad match data from
nance de l'antémémoire est transférée immédiatement sur le bus BIBUS. Pour empêcher l'apparition d'un conflit de bus, la logique de contrôle de bus de l'unité B met-hors service le tampon 74 pendant un cycle d'horloge supplémentaire avant de remettre la donnée dans la mémoire PEPS 65. Après que l'unité B ait attendu que tous les cycles en cours soient caching is immediately transferred to the BIBUS bus. To prevent the occurrence of a bus conflict, the bus control logic of the unit B turns off the buffer 74 for an additional clock cycle before resetting the data in the PEPS memory 65. Unit B waited until all the cycles in progress were
achevés, la donnée de concordance PFLoad est placée à la - Completed, the PFLoad match data is placed on the -
base de la mémoire PEPS, et le traitement PFLoad s'exécute based on FIFO memory, and PFLoad processing runs
de façon habituelle.in the usual way.
30.I1 est possible au processeur de fonctionner à une 30.It is possible for the processor to operate at a
cadence plus rapide que le bus externe ou que la mémoire. faster than the external bus or the memory.
Par exemple, si la vitesse du processeur est supérieure à celle du matériel externe, il se peut que la mémoire PEPS se vide. Il faut que la mémoire PEPS ait un nombre suffisant For example, if the processor speed is higher than that of the external hardware, the PEPS memory may be empty. The PEPS memory must have a sufficient number
d'étages pour conserver le nombre maximum d'adresses déli- number of floors to keep the maximum number of addresses
vrées par le processeur, et qu'elle soit également compati- by the processor, and that it is also compatible
ble avec l'architecture en pipeline du processeur. On notera que c'est pour cette raison que l'instruction PFLoad que ble with the pipeline architecture of the processor. Note that this is why the PFLoad instruction
l'on décrit ici opère de façon dynamique. here described operates dynamically.
Si l'on se réfère maintenant à la figure 5B, on y a illustré a mémoire PEPS PFLoad 65 constituée, dans le mode de réalisation actuellement préféré, de trois verrous ou registres par bit, d'un compteur de position de lecture 87 et d'un compteur de position d'écriture 86. Le compteur de cDsition de lecture est relié au décodeur 88 qui, quant à lui, est relié au multiplexeur 3-vers-1 95 par les lignes 94 et 93. Ces lignes sont reliées aux lignes de sélection du multiplexeur 95 de telle sorte que, lors d'une opération PFLoad, le compteur de lecture 87 sélectionne le registre Referring now to FIG. 5B, there is illustrated a PEPS memory PFLoad 65 constituted, in the presently preferred embodiment, by three locks or registers per bit, a read position counter 87 and a A write position counter 86. The read citation counter is connected to the decoder 88 which, in turn, is connected to the 3-to-1 multiplexer 95 by the lines 94 and 93. These lines are connected to the lines. for selecting the multiplexer 95 so that, during a PFLoad operation, the read counter 87 selects the register
dans lequel le cycle PFLoad suivant lira la donnée. wherein the following PFLoad cycle will read the data.
e compteur de position d'écriture 86 est relié au décodeur 85 qui, quant à lui, est relié aux registres A, B et C, respectivement par les lignes 92, 91 et 90. Les lignes à 92 permettent de verrouiller dans le registre approprié les données apparaissant sur la ligne 63. En fonctionnement, le compteur de position d'écriture 86 pointe sur le verrou dans lequel le cycle PFLoad suivant inscrira la donnée retournée. Le compteur de position de lecture et le compteur The write position counter 86 is connected to the decoder 85 which, in turn, is connected to the registers A, B and C, respectively by the lines 92, 91 and 90. The lines at 92 make it possible to lock in the appropriate register. the data appearing on the line 63. In operation, the write position counter 86 points to the lock in which the next PFLoad cycle will write the returned data. The reading position counter and the counter
de position d'écriture sont tous deux constitués de comp- writing position are both composed of
teurs bouclés classiques 0-vers-2.classic curly 0-to-2.
Le compteur de lecture est incrémenté lorsque l'instruc- The reading counter is incremented when the instruction
tion PFLoad se trouve à l'étape de réécriture ou se trouve en attente, le bus BIBUS n'est pas actif et la mémoire PEPS PFLoad n'est pas vide. Si la mémoire PEPS est vide, le compteur de lecture est incrémenté, bien- que la donnée ne soit pas effectivement verrouillée dans la mémoire PEPS mais directement dirigée vers le verrou de données d'entrée à virgule flottante. Le compteur d'écriture est incrémenté lorsque le cycle de bus externe actuel est un PFLoad, ou lorsque l'on est en train d'inscrire, depuis l'antémémoire de données, une donnée PFLoad à la base de la mémoire PEPS dans le cas d'une concordance PFLoad. Les deux bits du compteur de position d'écriture sont utilisés pour produire les signaux d'écriture de la mémoire PEPS qui verrouillent PFLoad is in the rewrite step or is in standby, the BIBUS bus is not active and the FIFO PFLoad is not empty. If the PEPS memory is empty, the read counter is incremented, although the data is not effectively locked in the PEPS memory but directly directed to the floating point input data lock. The write counter is incremented when the current external bus cycle is a PFLoad, or when a data PFLoad is being written from the data cache to the base of the PEPS memory in the case a PFLoad match. The two bits of the write position counter are used to produce the FIFO memory write signals that latch
la donnée dans la mémoire PEPS.the data in the PEPS memory.
On a illustré figure 5A une variante du mode de réalisation de la mémoire PEPS 65. La figure 5A montre une memoire PEPS dans laquelle les données passent en série du verrou 1 au verrou 2, puis ensuite au verrou 3 avant d'être délivré en sortie sur la ligne 66. Bien que la mémoire PEPS de la figure 5A permettent de préserver convenablement la nature en pipeline des instructions PFLoad, elle n'a pas la même souplesse que la mémoire PEPS illustrée figure 5B. Par exemple, dans la mémoire PEPS de la figure 5B on pourrait inscrire des données dans le verrou 87 en un cycle d'horloge et les lire au cycle suivant sans avoir à traverser les autres registres. On peut ainsi rendre disponible certaines FIG. 5A shows a FIFO memory in which the data pass in series from the lock 1 to the lock 2, then to the lock 3 before being delivered as output. FIG. 5A shows a variant of the embodiment of the FIFO memory 65. FIG. on line 66. Although the PEPS memory of FIG. 5A makes it possible to preserve the pipelined nature of the PFLoad instructions, it does not have the same flexibility as the PEPS memory shown in FIG. 5B. For example, in the FIFO memory of FIG. 5B, data could be written in the latch 87 in one clock cycle and read in the next cycle without having to traverse the other registers. We can make some
données de façon anticipée, si nécessaire. data in advance, if necessary.
Comme expliqué précédemment, le processeur N10 peut As previously explained, the N10 processor can
émettre -usqu'à trois cycles de bus simultanément en cours. transmit up to three bus cycles simultaneously in progress.
S4i e processeur délivre des cycles de bus à une cadence supérieure à celle de la mémoire externe, la mémoire PEPS PFLoad peut venir à se trouver vidée. Ceci implique que les trois cycles en cours soient des cycles PFLoad. Si un quatrième cycle PFLoad se trouve à l'étape de réécriture et qu'il n'y a pas de donnée disponible à charger dans le verrou de données 78, l'unité de contrôle du bus délivre un ordre de gel. Lorsque l'on demande un cycle PFLoad mais que la mémoire PEPS est vide, on doit geler le noyau jusqu'à ce que la donnée PFLoad soit disponible sur le bus DABUS (un PFLoad est en cours lorsque la donnée provenant de la mémoire PEPS ne peut pas être transférée au verrou de données 78 du fait que la mémoire PEPS PFLoad est vide, que le bus BIBUS est occupé ou que l'on a une non-concordance du If the processor delivers bus cycles at a rate higher than that of the external memory, the FIFO PFLoad may become empty. This implies that the three cycles in progress are PFLoad cycles. If a fourth PFLoad cycle is in the rewrite step and there is no available data to load in the data latch 78, the bus control unit issues a freeze command. When a PFLoad cycle is requested but the PEPS memory is empty, the kernel must be freezed until the PFLoad data is available on the DABUS bus (a PFLoad is in progress when the data from the PEPS memory does not can not be transferred to the data latch 78 because the FIFO PFLoad is empty, the bus BIBUS is busy or there is a mismatch of
tampon de traduction par transcodage). transcoding translation buffer).
On remarquera que, lorsque l'antémémoire de données It will be noticed that when the data cache
effectue une lecture normale, l'unité d'antémémoire de don- performs normal playback, the cache memory unit
nées 70 pilote à la fois le bus DABUS 76 et le bus DBBUS 80, de sorte qu'il devient impossible de délivrer des données born 70 drives both the DABUS bus 76 and the DBBUS bus 80, so that it becomes impossible to deliver data.
externes au verrou au cours du même cycle d'horloge. external to the lock during the same clock cycle.
Cependant, si l'on utilise une instruction PFLoad, l'anté- However, if a PFLoad instruction is used, the
mémoire de données 70 est contrôlée par la logique de l'unité B de manière à arrêter les circuits internes de data memory 70 is controlled by the logic of the unit B so as to stop the internal circuits of
pilotage de l'antémémoire (qui sont reliés au bus DABUS 76). cache control (which are connected to the bus DABUS 76).
En arrêtant les circuits de pilotage de l'antémémoire reliés au bus DABUS 76, on peut délivrer des données externes au verrou de données 78 sans créer de situation de conflit de bus. Une fois que la donnée PFLoad est devenue disponible sur le bus DABUS 76, on met fin au gel. La donnée externe est alors pilotée par le tampon 75 sur le bus DABUS, depuis le bus BIBUS 29. La donnée délivrée sur le bus BIBUS peut provenir soit de la mémoire PEPS 65 soit directement, par la ligne 61, du système de mémoire externe. Le multiplexeur 67 ne sélectionne la ligne 61 comme source de la donnée que lorsque la mémoire PEPS 65 est vide. Le fait que la mémoire PEPS 65 soit vide ou non dépend de la vitesse de la mémoire externe, de la fréquence à laquelle le programmeur émet des By stopping the cache control circuits connected to the DABUS bus 76, data external to the data latch 78 can be delivered without creating a bus contention situation. Once the PFLoad data has become available on the DABUS bus 76, the freeze is terminated. The external data is then controlled by the buffer 75 on the DABUS bus, from the BIBUS bus 29. The data delivered on the BIBUS bus can come either from the PEPS memory 65 or directly, via the line 61, from the external memory system. The multiplexer 67 selects the line 61 as the source of the data only when the PEPS memory 65 is empty. Whether or not the FIFO 65 is empty depends on the speed of the external memory, the frequency with which the programmer transmits
-5 instructions PFLoad, etc. Si la séquence PFLoad est inter- -5 PFLoad instructions, etc. If the PFLoad sequence is
rompue, alors la donnée va continuer à être délivrée à par- broken, then the data will continue to be delivered to
tir la mémoire externe aussi longtemps que l'on aura des crdres PFLoad en cours émis sur le bus externe 40. Les données externes référencées par les instructions PFLoad antérieures vont alors s'accumuler dans la mémoire PEPS 65 jusqu'à ce que le programmeur commence à émettre à nouveau firing the external memory as long as there will be current PFLoad emitted on the external bus 40. The external data referenced by the previous PFLoad instructions will then accumulate in the PEPS 65 memory until the programmer starts to be issued again
des instructions PFLoad.PFLoad instructions.
* Si le programmeur émet des ordres PFLoad successifs tels que la mémoire PEPS de données 65 vienne à se vider avant qu'aucun cycle PFLoad en cours n'ait été achevé, les nouvelles données arrivant sur le bus de données externes 40 seront appliquées sur la ligne 61 par le multiplexeur 67, pour application directe au bus BIBUS 29. Ensuite, les données appliquées sur le bus BIBUS 29 seront envoyées par le tampon 75 sur le bus DABUS 76 afin de pouvoir être finalement mémorisées dans le verrou de données d'entrée à virgule flottante 78. Le verrou d'entrée de données fait effectivement partie de l'unité à virgule flottante du processeur N10 (le bus DBBUS n'est utilisé que lorsque l'on traite des charges sur 128 bits. Comme l'instruction PFLoad n'opère que sur des charges de 64 bits ou de 32 bits, le bus DBBUS ne concerne pas directement l'instruction PFLoad de la* If the programmer issues successive PFLoad commands such that the data FIFO 65 becomes empty before any current PFLoad cycle has been completed, the new data arriving on the external data bus 40 will be applied to the line 61 by the multiplexer 67, for direct application to the BIBUS bus 29. Then, the data applied on the BIBUS bus 29 will be sent by the buffer 75 on the DABUS bus 76 so that it can finally be stored in the input data latch The data entry lock is actually part of the floating point unit of the N10 processor (the DBBUS bus is only used when handling 128-bit loads.) Like the PFLoad instruction only operates on 64-bit or 32-bit loads, the DBBUS bus does not directly affect the PFLoad instruction of the
présente invention).present invention).
Lorsqu'une situation de concordance d'antémémoire When a cache matching situation
apparaît, c'est-à-dire lorsque la donnée demandée réside ef- appears, that is to say when the data requested is ef-
fectivement dans l'antémémoire de données et non dans la mémoire externe, il se passe alors ce qui suit. Tout d'abord, le mot de donnée actuel doit être retourné soit de fectively in the data cache and not in the external memory, then the following happens. First, the current data word must be returned either from
la mémoire PEPS PFLoad 65 soit du bus de données externe 40. the PEPS memory PFLoad 65 is the external data bus 40.
A cet effet, la logique de contrôle de l'unité de contrôle du bus met hors service le tampon 75 et la donnée est retournée en suivant le trajet du bus BIBUS qui aboutit à l'entrée "1" du multiplexeur 62. Le multiplexeur 62, qui est également contrôlé par l'unité de contrôle du bus, retourne alors la donnée à la base de la mémoire PEPS 65, via la For this purpose, the control logic of the bus control unit deactivates the buffer 75 and the data is returned following the path of the BIBUS bus which leads to the input "1" of the multiplexer 62. The multiplexer 62 , which is also controlled by the bus control unit, then returns the data to the base of the PEPS memory 65, via the
ligne 63.line 63.
Dans le cas o l'on a émis un certain nombre d'ordres PFLoad en cours dont aucun n'a encore retourné de donnée de la mémoire externe, et o une concordance d'antémémoire apparaît, la séquence des événements est différente. Dans ce cas, le processeur ne peut, dans l'immédiat, rien faire avec le mot de données résidant actuellement dans l'antémémoire de données. L'unité de contrôle du bus doit tout d'abord attendre que toutes les instructions PFLoad précédemment emises aient retourné les données de la mémoire externe. Le premier mot de données retourné est transféré dans le verrou d'entrée de données 78, soit de la mémoire PEPS 65 soit directement du bus externe, tandis que les deux mots restants sont inscrits dans la mémoire PEPS.65. Finalement, le mot de donnée mémorisé dans l'antémémoire de données 70 est transféré dans la mémoire PEPS 65 en tant que dernier mot de cette mémoire PEPS. On aura ainsi une pénalisation In the case where a number of current PFLoads have been issued, none of which has yet returned data from the external memory, and o a cache match occurs, the sequence of events is different. In this case, the processor can not, in the immediate future, do anything with the data word currently residing in the data cache. The bus control unit must first wait for all previously issued PFLoad instructions to return data from the external memory. The first data word returned is transferred into the data entry lock 78, either of the PEPS memory 65 or directly of the external bus, while the remaining two words are written in the memory PEPS.65. Finally, the data word stored in the data cache 70 is transferred to the PEPS memory 65 as the last word of this FIFO. We will have a penalty
temporelle notable dans le cas d'une concordance d'anté- a significant temporal difference in the case of a concordance
mémoire, car le programmeur devra attendre que tous les cycles PFLoad en cours aient été achevés avant de transférer la donnée de l'antémémoire à la mémoire PEPS. Des explications qui précèdent, on voit que l'instruction PFLoad memory, because the programmer will have to wait until all current PFLoad cycles have been completed before transferring the cache data to FIFO memory. From the preceding explanations, we see that the instruction PFLoad
est optimisée pour le cas de la non-concordance d'antémé- is optimized for the case of antecedent mismatch
moire plutôt que pour le cas de la concordance d'antémé- rather than for the case of concordance
moire. Sur la figure 4, on a représenté une variante du mode de réalisation de la présente invention. Le circuit de la figure 4 est identique à celui de la figure 2, à l'exception du fait que la ligne 79, le tampon 74 et le trajet de retour du bus BIBUS aboutissant à l'entrée "1" du multiplexeur 62 ont été supprimés. A la place, on a prévu un bus 81. Le bus 81 relie directement le tampon interne 82 de l'antémémoire à l'entrée "1" du multiplexeur 62. Le premier bénéfice procuré par cette variante du mode de réalisation est que l'utilisateur n'a pas besoin d'attendre que le tampon 69 se mette hors service avant d'inscrire la donnée dans la mémoire PEPS 65. Du fait que l'on a inclus un bus dédié au cas d'une concordance d'ar.ntémémoire, le programmeur n'a, également, pas besoin d'attendre, avant de poursuivre, que tcutes les données externes provenant d'instructions PFLoad en attente aient été retournées. On n'a pas non plus de pénalisation en termes de cycles d'horloges supplémentaires, car la donnée est délivrée directement de l'antémémoire de dcnnées 70 à la mémoire PEPS 65 lorsque survient un cas de memory. In Figure 4, there is shown a variant of the embodiment of the present invention. The circuit of FIG. 4 is identical to that of FIG. 2, except that the line 79, the buffer 74 and the return path of the BIBUS bus leading to the input "1" of the multiplexer 62 have been deleted. Instead, a bus 81 is provided. The bus 81 directly connects the internal buffer 82 of the cache to the "1" input of the multiplexer 62. The first benefit provided by this variant of the embodiment is that the user does not need to wait for the buffer 69 to turn off before entering the data in the memory PEPS 65. Because we have included a bus dedicated to the case of a concordance of ar. In addition, the programmer does not need to wait, before continuing, for any external data from pending PFLoad instructions to be returned. There is also no penalty in terms of additional clock cycles, since the data is delivered directly from the data cache 70 to the PEPS memory 65 when a case occurs.
concordance d'antémémoire.cache concordance.
En revanche, le mode de réalisation préférentiel de la fiaure 2 présente l'avantage d'une surface de silicium moindre, car on n'a besoin que d'un seul bus tandis que, dans la variante de réalisation de la figure 4, on a besoin On the other hand, the preferred embodiment of the sheet 2 has the advantage of a smaller silicon area, since only one bus is needed while, in the variant embodiment of FIG. requires
du bus supplémentaire 81.additional bus 81.
La figure 6 est un organigramme illustrant les opérations de contrôle effectuées par la logique de contrôle du bus FIG. 6 is a flowchart illustrating the control operations performed by the bus control logic
associée à l'instruction PFLoad de la présente invention. associated with the PFLoad instruction of the present invention.
Cet organigramme résume la description donnée ci-dessus de This flowchart summarizes the description given above of
la logique de contrôle du bus mise en oeuvre lors de the control logic of the bus implemented during
l'exécution de l'instruction PFLoad. Sur la figure 6, l'or- the execution of the PFLoad instruction. In Figure 6, the
ganigramme de l'instruction PFLoad commence au bloc 100, qui correspond à une requête PFLoad. Une fois la requête émise, PFLoad instruction flow chart begins at block 100, which corresponds to a PFLoad request. Once the request is issued,
la logique de contrôle du bus et l'unité B doivent déter- bus control logic and unit B must determine
miner si la mémoire PEPS 65 est vide ou si le bus BIBUS 29 est occupé. Ceci a été illustré par le test 101. Si l'une de ces deux conditions est vérifiée, le contrôleur de bus attendra jusqu'à ce que la condition change. S'il y a une donnée présente dans la mémci-re PEPS et si le bus BIBUS n'est pas occcupé, le contrôleur passe alors au bloc 102, o la donnée résidant dans la mémoire PEPS est transférée vers le verrou de données à virgule flottante 78. Au test 103, le if the PEPS memory 65 is empty or if the BIBUS bus 29 is busy. This has been illustrated by test 101. If one of these two conditions is true, the bus controller will wait until the condition changes. If there is data present in the PEPS memory and the BIBUS bus is not busy, then the controller proceeds to block 102, where the PEPS memory data is transferred to the decimal data lock. 78. In test 103, the
contrôleur de bus examine si l'on a eu ou non une con- bus controller examines whether or not there has been a
cordance PFLoad, c'est-à-dire, en d'autres termes, si l'on a PFLoad, that is to say, in other words, if one has
eu une concordance d'antémémoire. Si la donnée réside en mé- had a concordance cache. If the data resides in
moire externe et ne se trouve pas dans l'antémémoire de données 70, le contrôleur de bus va alors émettre un cycle de bus PFLoad, comme illustré au bloc 104. Le traitement continue de façon normale jusqu'à atteindre la fin de l'instruction. Il peut également se trouver qu'une concordance PFLoad apparaisse, auquel cas la logique de contrôle du bus doit examiner si l'on a un cycle PFLoad en cours ou si le bus BIBUS est occupé ou non. Ceci est illustré sur la figure 6 par le bloc de test 105. Si l'on a des cycles en cours, ou si le bus BIBUS est occupé, la logique de contrôle du bus doit attendre jusqu'à ce que tous les cycles de bus en cours soient achevés et que le bus BIBUS soit disponible pour transférer la donnée. Lorsque ceci arrive, la donnée est alors transférée de l'antémémoire de données vers la base de la mémoire PEPS, comme illustré par le bloc 106. Le transfert peut avoir lieu de la manière décrite à propos de la figure 2, la donnée suivant la ligne 79, via le tampon 74, pour être retourné par le bus BIBUS à l'entrée "1" du multiplexeur 62. Dans la variante de réalisation, la donnée provenant de l'antémémoire de données 70 passe directement, External memory and is not in the data cache 70, the bus controller will then issue a PFLoad bus cycle, as shown in block 104. The processing continues in a normal way until reaching the end of the instruction. . It may also happen that a PFLoad match appears, in which case the bus control logic must examine whether there is a current PFLoad cycle or whether the BIBUS bus is busy or not. This is illustrated in FIG. 6 by the test block 105. If current cycles are in progress, or if the BIBUS bus is busy, the bus control logic must wait until all the bus cycles are completed. currently being completed and that the BIBUS bus is available to transfer the data. When this happens, the data is then transferred from the data cache to the PEPS memory base, as illustrated by block 106. The transfer can take place as described with reference to FIG. line 79, via the buffer 74, to be returned by the BIBUS bus to the input "1" of the multiplexer 62. In the variant embodiment, the data from the data cache 70 passes directly,
le long de la ligne 81, à l'entrée "1" du multiplexeur 62. along the line 81, at the input "1" of the multiplexer 62.
Ici encore, l'opération suit son cours normal jusqu'à at- Here again, the operation follows its normal course until
teindre la fin de l'instruction.dye the end of the instruction.
Afin de mieux comprendre le fonctionnement et les avan- To better understand the operation and benefits
tages de la présente invention, on va maintenant se référer of the present invention, reference will now be made to
à l'exemple d'opération donné figure 3. L'exemple d'opé- example of operation given in Figure 3. The example of
ration donné par l'équation de la figure 3 est le suivant: k.Vl + V2 -> V2 o k est une constante prédéterminée donnée, Vi est l'un de 1000 vecteurs à 1000 éléments différents mémorisés dans la mémoire externe et V2 est un vecteur mémorisé de façon interne dans l'unité d'antémémoire de données 70. Pour ce calcul particulier, le processeur doit réutiliser le vecteur V2 un millier de fois (une fois pour chacun des différents éléments de chaque vecteur Vi), tandis que les divers given by the equation of Figure 3 is: k.Vl + V2 -> V2 ok is a given predetermined constant, Vi is one of 1000 vectors with 1000 different elements stored in the external memory and V2 is a vector stored internally in the data cache unit 70. For this particular calculation, the processor must reuse the vector V2 a thousand times (once for each of the different elements of each vector Vi), while the various
éléments de Vi ne sont utilisés qu'une seule fois. En uti- Vi elements are only used once. In use
lisant l'instruction PFLoad de la présente invention, le processeur charge les divers éléments du vecteur V2 dans le registre à virgule flottante sans réécrire sur les données reading the PFLoad instruction of the present invention, the processor loads the various elements of the vector V2 into the floating-point register without rewriting the data
W résidant dans ''antémémoire de données. W residing in 'cache' data.
La figure 3 montre une première instruction PFLoad, réfé- Figure 3 shows a first instruction PFLoad, referenced
rencée PF-LD:, déivrée à l'adresse de Vii afin de charger le premier élément du premier vecteur V: à l'emplacement de ]5 mémorisation à virgule flottante F2. L'ordre PFLD1 a besoin de deux cycles d'horloge pour commencer. Sans attendre que la donnée soit retournée.de la mémoire externe, on émet une seconde instruction PFLoad, référencée PFLD2, à l'adresse de l'élément de vecteur V12, que l'on dirige vers l'emplacement de mémorisation à virgule flottante F-. D'autres ordres PFLoad sont lancés pour les éléments vectoriels V13, V;4, V:5, etc. On peut demander un nouvel ordre PFLoad tous les deux cycles d'horloge, car le bus externe permet d'émettre encountered PF-LD:, de-signed at the address of Vii in order to load the first element of the first vector V: at the floating-point storage location F2. The order PFLD1 needs two clock cycles to start. Without waiting for the data to be returned from the external memory, a second PFLoad instruction, referenced PFLD2, is sent to the address of the vector element V12, which is directed to the floating point storage location F. -. Other PFLoads are started for vector elements V13, V; 4, V: 5, and so on. You can request a new PFLoad command every two clock cycles, because the external bus can transmit
une nouvelle adresse tous les deux cycles d'horloge. a new address every two clock cycles.
Lorsque le quatrième ordre PFLoad, c'est-à-dire l'ordre PFLD4, est émis, la mémoire externe commence à retourner la donnée de la première instruction PFLoad. Cette donnée retournée correspond en fait à l'instruction PFLoad située When the fourth order PFLoad, i.e. the order PFLD4, is sent, the external memory begins to return the data of the first instruction PFLoad. This returned data corresponds to the PFLoad instruction located
trois instructions en arrière, de sorte que le registre des- three instructions backwards, so that the
tinataire spécifié par la quatrième instruction PFLoad est le registre F2. L'arrivée de la donnée pour l'ordre PFLoad situé trois instructions en arrière est illustré par les traits interrompus et les flèches allant, en diagonale, de The receiver specified by the fourth PFLoad instruction is the F2 register. The arrival of the data for the PFLoad order located three instructions back is illustrated by the dashed lines and the arrows going, diagonally, from
l'emplacement de mémorisation à virgule flottante à l'a- the floating-point storage location on the
dresse de l'ordre PFLoad. Le programmeur peut continuer à spécifier des ordres PFLoad tous les deux cycles d'horloge, utilisant ainsi la pleine capacité de largeur de bande du bus externe. En pratique, on a un total de six cycles d'horloge de latence entre l'instant o le programmeur spécifie l'adresse de la donnée et l'instant o cette donnée est retournée. Il faut donc au total six cycles d'horloge au système mémoire pour délivrer la donnée, même si un nouveau cycle de bus commence tous les deux cycles d'horloge. Ceci correspond à un triplement de la vitesse à laquelle on peut Pfload. The programmer can continue to specify PFLoad commands every two clock cycles, thus using the full bandwidth capability of the external bus. In practice, there is a total of six latency clock cycles between the time when the programmer specifies the address of the data and the instant that this data is returned. It therefore takes a total of six clock cycles to the memory system to output the data, even if a new bus cycle commences every two clock cycles. This corresponds to a tripling of the speed at which one can
traiter les cycles. Sans le concept en pipeline, le pro- treat the cycles. Without the pipeline concept, the
grammeur serait contraint d'émettre un nouveau cycle tous les six cycles d'horloge au lieu de l'émettre tous les deux grammor would be forced to emit a new cycle every six clock cycles instead of issuing it both
cycles d'horloge.clock cycles.
On- comprendra que, bien évidemment, la description It will be understood that, of course, the description
ci-dessus suppose que chaque instruction PFLoad corresponde à une nonconcordance de l'antémémoire de données. S'il s'agissait d'un chargement à virgule flottante normal avec un processeur de l'art antérieur, dès lors que le programmeur aurait tenté d'exécuter une seconde instruction PFLoad, l'unité de contrôle du bus aurait répondu que l'on avait un accès en cours et aurait gelé la totalité des six cycles d'horloge en attente du retour des charges du bus en above assumes that each PFLoad instruction matches a data cache nonconformance. If this was a normal floating point load with a prior art processor, since the programmer would have attempted to execute a second PFLoad instruction, the bus control unit would have replied that the we had an ongoing access and would have frozen all six clock cycles waiting for the return of the bus loads in
cours. Ainsi, avec un processeur de l'art antérieur, le pro- course. Thus, with a processor of the prior art, the
grammeur ne peut émettre de nouvelle adresse que tous les six cycles d'horloge, au lieu de les émettre tous les deux grammar can issue new address only every six clock cycles, instead of issuing them both
cycles d'horloge. Le concept en pipeline associé à l'ins- clock cycles. The pipeline concept associated with the
truction PFLoad de la présente invention permet ainsi à PFLoad truction of the present invention thus enables
l'utilisateur d'émettre des adresses à une cadence supé- the user to send addresses at a higher rate than
rieure, en dépit du fait que la donnée ne réside pas dans l'antémémoire incorporée à la puce. On peut ainsi traiter et accéder efficacement à des structures de données de très higher, despite the fact that the data does not reside in the cache embedded in the chip. Thus, it is possible to efficiently process and access data structures of
grandes dimensions.large dimensions.
La présente invention permet de mémoriser le vecteur V2 sur la même puce, tandis que l'on conserve l'élément Vi dans la mémoire externe, de sorte que l'utilisateur peut référencer les éléments de V1 au moyen d'une instruction PFLoad et référencer V2 au moyen d'une instruction normale de chargement. Dans un microprocesseur typique de l'art The present invention makes it possible to store the vector V2 on the same chip, while the element Vi is stored in the external memory, so that the user can reference the elements of V1 by means of a PFLoad instruction and reference V2 using a normal load instruction. In a typical microprocessor of art
antérieur sans instruction PFLoad, chaque fois que l'uti- without PFLoad instruction, whenever the use of
lisateur référence V., les éléments de données sont amenés dans l'antémémoire, faisant ainsi disparaître les éléments du vecteur V2. Ceci produit un retard supplémentaire la fois In the reference editor V., the data elements are brought into the cache, thereby removing the elements of the vector V2. This produces an additional delay at a time
suivante o l'on doit charger l'élément de V2. next one where one has to load the element of V2.
2O2O
Claims (22)
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US30942989A | 1989-02-10 | 1989-02-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
FR2643166A1 true FR2643166A1 (en) | 1990-08-17 |
FR2643166B1 FR2643166B1 (en) | 1995-03-17 |
Family
ID=23198201
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR9001451A Granted FR2643166A1 (en) | 1989-02-10 | 1990-02-08 | MICROPROCESSOR WITH PIPELINE ARCHITECTURE COMPRISING AN INSTRUCTION FOR ACCESSING DATA IN EXTERNAL MEMORY, AND METHOD OF ACCESSING THESE DATA |
Country Status (6)
Country | Link |
---|---|
JP (1) | JPH02242429A (en) |
AU (1) | AU618425B2 (en) |
CA (1) | CA2009744C (en) |
DE (1) | DE4001165C2 (en) |
FR (1) | FR2643166A1 (en) |
GB (1) | GB2228116B (en) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5438669A (en) * | 1991-11-20 | 1995-08-01 | Hitachi, Ltd. | Data processor with improved loop handling utilizing improved register allocation |
US5673407A (en) * | 1994-03-08 | 1997-09-30 | Texas Instruments Incorporated | Data processor having capability to perform both floating point operations and memory access in response to a single instruction |
US6643765B1 (en) | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US6275904B1 (en) * | 1998-03-31 | 2001-08-14 | Intel Corporation | Cache pollution avoidance instructions |
US7484062B2 (en) | 2005-12-22 | 2009-01-27 | International Business Machines Corporation | Cache injection semi-synchronous memory copy operation |
US7454585B2 (en) | 2005-12-22 | 2008-11-18 | International Business Machines Corporation | Efficient and flexible memory copy operation |
US7506132B2 (en) | 2005-12-22 | 2009-03-17 | International Business Machines Corporation | Validity of address ranges used in semi-synchronous memory copy operations |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4075686A (en) * | 1976-12-30 | 1978-02-21 | Honeywell Information Systems Inc. | Input/output cache system including bypass capability |
EP0270873A2 (en) * | 1986-12-12 | 1988-06-15 | International Business Machines Corporation | Single ALU computer system |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6069746A (en) * | 1983-09-26 | 1985-04-20 | Fujitsu Ltd | Control system of vector data processor |
US4600986A (en) * | 1984-04-02 | 1986-07-15 | Sperry Corporation | Pipelined split stack with high performance interleaved decode |
JPS61160142A (en) * | 1984-12-29 | 1986-07-19 | Hitachi Ltd | Data processor |
US4873630A (en) * | 1985-07-31 | 1989-10-10 | Unisys Corporation | Scientific processor to support a host processor referencing common memory |
US4722049A (en) * | 1985-10-11 | 1988-01-26 | Unisys Corporation | Apparatus for out-of-order program execution |
JPS62115571A (en) * | 1985-11-15 | 1987-05-27 | Fujitsu Ltd | Vector access control system |
-
1989
- 1989-11-10 GB GB8925453A patent/GB2228116B/en not_active Expired - Fee Related
- 1989-11-28 AU AU45618/89A patent/AU618425B2/en not_active Ceased
-
1990
- 1990-01-17 DE DE4001165A patent/DE4001165C2/en not_active Expired - Lifetime
- 1990-02-08 FR FR9001451A patent/FR2643166A1/en active Granted
- 1990-02-09 CA CA002009744A patent/CA2009744C/en not_active Expired - Lifetime
- 1990-02-13 JP JP2032295A patent/JPH02242429A/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4075686A (en) * | 1976-12-30 | 1978-02-21 | Honeywell Information Systems Inc. | Input/output cache system including bypass capability |
EP0270873A2 (en) * | 1986-12-12 | 1988-06-15 | International Business Machines Corporation | Single ALU computer system |
Non-Patent Citations (2)
Title |
---|
"Pipelined Data Storage Fetches", IBM TECHNICAL DISCLOSURE BULLETIN., vol. 28, no. 11, April 1986 (1986-04-01), NEW YORK US, pages 4827 - 4830 * |
A. L. BERGEY, JR.: "Increased Computer Throughput by Conditioned Memory Data Prefetching", IBM TECHNICAL DISCLOSURE BULLETIN., vol. 20, no. 10, March 1978 (1978-03-01), NEW YORK US, pages 4103 * |
Also Published As
Publication number | Publication date |
---|---|
AU618425B2 (en) | 1991-12-19 |
DE4001165A1 (en) | 1990-08-16 |
AU4561889A (en) | 1990-08-16 |
GB2228116A (en) | 1990-08-15 |
CA2009744C (en) | 2005-06-28 |
CA2009744A1 (en) | 1990-08-10 |
GB2228116B (en) | 1993-05-26 |
FR2643166B1 (en) | 1995-03-17 |
DE4001165C2 (en) | 1999-01-21 |
GB8925453D0 (en) | 1989-12-28 |
JPH02242429A (en) | 1990-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0434483B1 (en) | Processor with plural microprogrammed execution units | |
EP0029131B1 (en) | Control method for allocating resources in a simultaneously operating multiprocessor system | |
US10614023B2 (en) | Processor core to coprocessor interface with FIFO semantics | |
EP0109898B1 (en) | Queued temporary data storage unit | |
EP3129874B1 (en) | Distributing computing system implementing a non-speculative hardware transactional memory and a method for using same for distributed computing | |
KR100346515B1 (en) | Temporary pipeline register file for a superpipe lined superscalar processor | |
FR2881540A1 (en) | Input output cache memory usage method for computer system, involves assuring that prefetch locking indicator of cache memory line of cache memory associated to memory request is in locked condition, if memory request is not speculative | |
EP0032863A1 (en) | Method and device to control the conflicts posed by multiple accesses to a same cache-memory of a digital data processing system comprising at least two processors each possessing a cache | |
EP0059018A1 (en) | Multiprocessor with dynamic task assignment in multiprogramming mode and its use | |
FR2804770A1 (en) | METHOD AND SYSTEM OF EARLY ACCESS, IN PARALLEL, TO LABELS OF LOWER LEVELS AND FIRST-LEVEL HISTORY | |
EP0392932B1 (en) | Method and device for speeding-up memory accesses using a modified LRU algorithm | |
US9037669B2 (en) | Remote processing and memory utilization | |
CN106161110A (en) | Data processing method in a kind of network equipment and system | |
EP1860571B1 (en) | DMA controller, system on a chip comprising such a DMA controller, data exchange method using such a DMA controller | |
EP1158405A1 (en) | System and method for managing a multi-resource architecture | |
FR2643166A1 (en) | MICROPROCESSOR WITH PIPELINE ARCHITECTURE COMPRISING AN INSTRUCTION FOR ACCESSING DATA IN EXTERNAL MEMORY, AND METHOD OF ACCESSING THESE DATA | |
US20130290473A1 (en) | Remote processing and memory utilization | |
EP0435718B1 (en) | Processor with plural microprogrammed units and with a mechanism for anticipated instruction execution | |
FR2865290A1 (en) | METHOD FOR MANAGING DATA IN A MATRIX PROCESSOR AND MATRIX PROCESSOR EMPLOYING THE METHOD | |
US20210271536A1 (en) | Algorithms for optimizing small message collectives with hardware supported triggered operations | |
KR20080096485A (en) | System and method for processing data in a series of computers | |
FR2759178A1 (en) | Memory management circuit for multi-user system with request and access priority | |
FR2625342A1 (en) | Device making it possible simultaneously to process the transfer requests produced by the central processing unit, the arithmetic processing unit and the input/output processing unit of a high-power computer | |
EP0346420B1 (en) | Process for exchanging information in a multiprocessor system | |
EP2208143B1 (en) | Structure and method for saving and retrieving data |