FR2682507A1 - Memoire cache pour processeur numerique a traduction d'adresses virtuelles en adresses reelles. - Google Patents

Memoire cache pour processeur numerique a traduction d'adresses virtuelles en adresses reelles. Download PDF

Info

Publication number
FR2682507A1
FR2682507A1 FR9212026A FR9212026A FR2682507A1 FR 2682507 A1 FR2682507 A1 FR 2682507A1 FR 9212026 A FR9212026 A FR 9212026A FR 9212026 A FR9212026 A FR 9212026A FR 2682507 A1 FR2682507 A1 FR 2682507A1
Authority
FR
France
Prior art keywords
storage section
data
found
section
virtual
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR9212026A
Other languages
English (en)
Other versions
FR2682507B1 (fr
Inventor
Kagan Michael
Perlmutter David
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of FR2682507A1 publication Critical patent/FR2682507A1/fr
Application granted granted Critical
Publication of FR2682507B1 publication Critical patent/FR2682507B1/fr
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Un microprocesseur numérique possède une unité de traitement, une mémoire cache contenant des repères d'adresses physiques et virtuelles et une unité de traduction adresses virtuelles/adresses physiques. La mémoire cache comprend une section de rangement (22) recevant des zones de repère d'adresses virtuelles de l'unité de traitement (15) et permettant l'accès à un cache de données (23) si une correspondance est trouvée pour des repères virtuels dans cette section de rangement (22), de même qu'une section de rangement (21) recevant des zones de repère d'adresses physiques de l'unité de traduction (20) et permettant l'accès au cache (23) si une correspondance est trouvée dans cette section (21). Applicable en particulier à des changements de contexte dans une application où une adresse physique peut être associée à plusieurs adresses virtuelles.

Description

L'invention concerne le domaine des mémoires caches, en particulier les
mémoires caches fonctionnant
dans un cadre d'utilisation de multicalculateur.
La présente invention apporte plusieurs perfectionnements à une mémoire cache et à la logique corrélée utilisées dans un microprocesseur RISC ou à jeu d'instructions réduit Il s'agit plus particulièrement
d'un processeur RISC sous la forme d'une version per-
fectionnée du processeur que l'on peut se procurer dans le commerce sous la désignation Intel 860 La mémoire
cache perfectionnée et à logique corrélée sont appli-
cables en particulier dans un cadre d'utilisation de
multicalculateur employant un bus partagé.
Le microprocesseur Intel 860, en plus du fait qu'il est disponible sur le marché, est décrit en de nombreuses publications imprimées, telles que l'ouvrage "i 860 Microprocessor Architecture" par Neal Margulis,
publié par Osborne McGraw-Hill, 1990.
Le microprocesseur Intel 860 et d'autres
microprocesseurs comportant des mémoires caches, ac-
cèdent à ces mémoires par des adresses virtuelles
fournies par une unité de traitement L'adresse vir-
tuelle est traduite par une unité de traduction en une adresse réelle ou physique et, en cas d'échec dans la recherche en mémoire cache, un cycle de mémoire externe est déclenché et l'adresse physique est utilisée pour accéder en mémoire centrale Habituellement, il est plus souhaitable d'accéder à la mémoire cache par des adresses virtuelles puisque l'accès peut ainsi avoir lieu sans attendre la traduction de l'adresse virtuelle
en adresse physique.
Dans un cadre d'utilisation de multicalcula-
teur ou de traitement multitâche, plusieurs adresses virtuelles peuvent correspondre à une seule adresse physique Alors que cela ne représente pas un problème insurmontable dans l'art antérieur, il y a plusieurs inconvénients à utiliser les mémoires caches à base
d'adresses virtuelles de l'art antérieur dans un tel cadre Ainsi qu'il réssort de ce qui va suivre, la présente invention apporte une mémoire cache convenant 5 davantage à un cadre d'utilisation de multicalculateur ou de traitement multitâche.
Dans l'organisation d'une mémoire cache, certains compromis sont réalisés entre la largeur de ligne, la taille de la zone de repère, la taille de la10 zone de décalage, et ainsi de suite Le plus souvent, ces compromis résultent en une ligne nettement plus large que le bus de données et dans le fait qu'une ligne de cache contient habituellement plusieurs instructions. Par exemple, dans le microprocesseur Intel 860, une15 ligne de cache a 32 octets, le bus de données est de 8 octets et une instruction comporte 4 octets S'il se
produit un échec pour une recherche d'instruction, l'unité de traitement doit attendre jusqu'à ce que la mémoire cache ait reçu une ligne complète d'instructions20 ( 8 instructions) avant que des instructions ne soient délivrées de la mémoire cache à l'unité de traitement.
Comme on le verra par la suite, l'invention apporte une mémoire intermédiaire ou tampon de ligne qui supprime ce temps d'attente.25 Il existe de nombreux protocoles bien connus pour assurer la cohérence de cache, spécialement dans un cadre d'utilisation de multicalculateur Quelques processeurs comportant des mémoires caches (par exemple Intel 486) utilisent un protocole de double écriture.30 Dans ce cas, lorsqu'une écriture est effectuée dans la mémoire cache, le cycle d'écriture produit également une inscription ou une répétition de l'écriture en mémoire centrale, "au travers" ou "au- delà" du cache De cette façon, la mémoire centrale contient toujours une copie35 exacte de la donnée à jour (Pour ce protocole, la mémoire cache classe la donnée soit comme invalide,
soit, en termes de la présente invention, comme "par-
tagée") D'autres processeurs emploient un protocole d'écriture différée, tel que le protocole de réécriture utilisé dans le microprocesseur Intel 860 Dans ce cas, la donnée contenue dans la mémoire cache est classée soit comme invalide ou exclusive, soit comme modifiée (altérée) Un autre protocole à écriture différée,
employé par quelques systèmes, est un protocole d'écri-
ture unique ("write-once"l) Avec ce protocole, la donnée dans la mémoire cache est classée soit comme invalide,
exclusive ou modifiée, soit comme partagée Ces proto-
coles et des variantes d'eux sont traités dans le brevet
des Etats-Unis 4 755 930.
Ainsi qu'on le verra par la suite, la présente invention permet à un utilisateur de sélectionner l'un de trois protocoles Un processeur faisant application de la présente invention comporte plusieurs bornes
(broches) pour l'interconnexion avec d'autres proces-
seurs, de manière à autoriser la cohérence de cache dans
un cadre d'utilisation de multicalculateur avec un minimum de circuits externes aux processeurs.
Le maintien de l'ordre des données inscrites en mémoire centrale pose souvent un problème, surtout
lorsque l'accès en mémoire s'effectue par un bus par-
tagé Des tampons sont parfois employés pour stocker
"des écritures", de sorte qu'elles peuvent être ins-
crites en mémoire centrale à des moments adéquats Cette solution pose le problème qu'un mécanisme quelconque
doit être prévu pour garantir que la donnée soit ins-
crite en mémoire centrale dans l'ordre o elle a été générée Ainsi qu'il ressort de ce qui suit, l'invention
apporte un mécanisme qui est adaptatif en ce sens qu'il permet à la fois un ordonnancement fort et un ordonnan- cement faible d'écritures sur la base de certaines35 conditions.
De manière générale, l'invention apporte un perfectionnement à un processeur numérique comportant une unité de traitement, une mémoire cache et une unité de traduction La mémoire cache comporte une section de 5 rangement pour stocker des zones de repère d'adresses virtuelles qui sont communiquées à la mémoire cache à partir du processeur Ces adresses virtuelles sont également communiquées à l'unité de translation et converties en adresses physiques La mémoire cache comporte en plus une section de rangement de repères d'adresses physiques pour le stockage de zones de repère d'adresses physiques A cette section sont communiquées les adresses délivrées par l'unité de traduction et des adresses venant d'un bus d'adresses externe (pour15 "espionner" ("snooping") ou "surveiller") En cas d'échec ou d'absence de correspondance pour une adresse virtuelle, cette adresse est traduite et la zone de repère de l'adresse physique correspondante est comparée avec les zones de repère stockées dans la section de20 repères d'adresses physiques Si une correspondance est trouvée dans cette section, la donnée associée est fournie (si elle est correcte et la section de rangement de repères d'adresses virtuelles est actualisée à l'aide de la zone de repère de l'adresse virtuelle concernée.25 Si aucune correspondance n'est trouvée, l'adresse physique est utilisée ensuite dans un cycle de mémoire
ordinaire pour accéder à la mémoire centrale. Selon un aspect, l'invention apporte une mémoire cache destinée à un processeur numérique possé-
dant une unité de traitement et une unité de traduction pour convertir des adresses virtuelles venant de l'unité de traitement en adresses physiques, qui est caractéri- sée en ce qu'elle comprend une section de rangement de repères d'adresses virtuelles connectée pour recevoir35 des zones de repère d'adresses virtuelles de l'unité de traitement afin de permettre l'accès à une section de mémorisation de données si une correspondance est trouvée pour des zones de repères d'adresses virtuelles dans la section de rangement de repères d'adresses virtuelles, de même qu'une section de rangement de 5 repères d'adresses physiques connectée pour recevoir des zones de repère d'adresses physiques de l'unité de traduction afin de permettre l'accès à la section de mémorisation de données si une correspondance est trouvée dans la section de rangement de repères
d'adresses physiques.
Une corrélation peut être prévue entre la section de rangement de repères d'adresses virtuelles et la section de rangement de repères d'adresses physiques, corrélation qui est telle que lorsqu'une correspondance est trouvée dans la section de rangement de repères d'adresses physiques, un emplacement correspondant est identifié dans la section de rangement de repères d'adresses virtuelles. La mémoire cache selon l'invention peut comporter un moyen pour connecter la section de range- ment de repères d'adresses physiques en vue de la
réception par cette section de zones de repère d'adresses physiques d'un bus d'adresses externe au processeur La section de rangement de repères25 d'adresses physiques comporte ou forme notamment un système de mémoire à double accès.
L'agencement peut être tel que lorsqu'aucune correspondance n'est trouvée dans la section de range-
ment de repères d'adresses virtuelles pour une zone de30 repère d'adresse virtuelle venant de l'unité de traite- ment et lorsque cet échec est suivi d'une correspondance trouvée dans la section de rangement de repères d'adresses physiques pour une zone de repère d'adresse physique correspondant à ladite zone de repère d'adresse35 virtuelle venant de l'unité de traitement, après que cette zone de repère d'adresse virtuelle a été traduite par l'unité de traduction, un emplacement dans la section de rangement de repères d'adresses virtuelles
correspondant à l'emplacement dans la section de range-
ment de repères d'adresses physiques o cette corres-
pondance a été trouvée, est actualisé au moyen de la zone de repère d'adresse virtuelle pour laquelle aucune correspondance n'a été trouvée dans la section de
repères d'adresses virtuelles.
Selon un mode de réalisation préféré, la mémoire cache selon l'invention comprend une section de rangement de repères d'adresses virtuelles connectée pour recevoir des zones de repère d'adresses virtuelles de l'unité de traitement afin de permettre l'accès à une section de mémorisation de données si une correspondance est trouvée dans cette section de rangement de repères d'adresses virtuelles, de même qu'une section de range- ment de repères d'adresses physiques connectée pour recevoir des zones de repère d'adresses physiques de l'unité de traduction afin de permettre l'accès à la section de mémorisation de données si une correspondance20 est trouvée dans cette section de rangement de repères d'adresses physiques, la section de rangement de repères d'adresses virtuelles et la section de rangement de repères d'adresses physiques étant organisées de manière que lorsqu'une correspondance est trouvée dans la25 section de rangement de repères d'adresses physiques, un emplacement correspondant est identifié dans la section de rangement de repères d'adresses virtuelles, la section de rangement de repères d'adresses virtuelles étant capable de recevoir les zones de repère d'adresses venant de l'unité de traitement pendant que la section de rangement de repères d'adresses physiques reçoit des zones de repère d'adresses physiques provenant d'un bus d'adresses externe au processeur. D'autres caractéristiques et avantages de l'invention ressortiront plus clairement de la
description qui va suivre d'un exemple de réalisation
non limitatif, ainsi que des dessins annexés, sur lesquels: la figure 1 est un schéma fonctionnel d'une partie de la mémoire cache selon l'invention, montrant sa connexion à une unité de traitement, l'unité de traduction et la mémoire centrale, de même que les sections de rangement de repères d'adresses virtuelles et de rangement de repères d'adresses physiques; la figure 2 est un organigramme illustrant la logique utilisée dans le schéma fonctionnel selon la figure 1; la figure 3 est un schéma fonctionnel illustrant le tampon de ligne employé dans la mémoire cache selon l'invention;
la figure 4 est une représentation schéma-
tique d'une interface de processeur et indique plus spécialement quelques-uns des signaux appliqués au processeur ou fournis par le processeur comportant la mémoire cache selon l'invention; la figure 5 montre une connexion réalisée sur une borne d'un processeur comportant la mémoire
cache selon l'invention et un diagramme d'états illus-
trant l'application d'un protocole de double écriture dans ce processeur; la figure 6 montre une connexion réalisée sur une borne d'un processeur comportant la mémoire cache selon l'invention et des diagrammes d'états illustrant l'application d'un protocole de réécriture30 dans ce processeur; la figure 7 montre une connexion réalisée sur une borne d'un processeur comportant la mémoire cache selon l'invention et des diagrammes d'états illustrant l'application d'un protocole d'écriture unique dans ce processeur; la figure 8 représente deux processeurs contenant chacun une mémoire cache selon l'invention et leur interconnexion; la figure 9 est un diagramme d'états servant à décrire le fonctionnement des processeurs selon la figure 8; la figure l Oa est un diagramme d'états servant à décrire le fonctionnement des processeurs
selon la figure 8 pour une correspondance en surveil-
lance à l'état S; la figure l Ob est un diagramme d'états servant à décrire le fonctionnement des processeurs
selon la figure 8 pour une correspondance en surveil-
lance à l'état E; la figure l Oc est un diagramme d'états servant à décrire le fonctionnement des processeurs selon la figure 8 pour invalider une correspondance en surveillance à l'état E; la figure 11 est un organigramme illustrant la logique utilisée dans le schéma fonctionnel selon la figure 13 pour le mode d'ordonnancement-fort; la figure 12 est un organigramme illustrant la logique utilisée dans le tampon de ligne selon la figure 3; et la figure 13 est un schéma fonctionnel montrant la mémoire cache et la logique associée pour
les modes d'ordonnancement. On décrira ci-après une mémoire cache perfectionnée et la logique associée Cette description
comporte de nombreux détails spécifiques, tels que des nombres spécifiques de bits, afin de permettre la compréhension complète de l'invention L'homme de métier comprendra cependant que l'invention peut également être mise en oeuvre sans ces détails spécifiques A d'autres35 occasions, des circuits bien connus ont été représentés sous la forme de blocs afin que l'invention ne soit pas
obscurcie inutilement.
Le mot "donnée" ou "données" est utilisé dans le présent mémoire pour désigner de l'information binaire Dans certains cas, ce mot est utilisé dans un sens quelque peu générique pour couvrir aussi, par
exemple, des constantes, des instructions ou des conte-
nus d'innombrables autres zones prévues dans des mé-
moires Dans le mode de réalisation actuellement préféré de l'invention, des instructions (sous forme de données) sont stockées dans la mémoire cache à part de données qui ne sont pas des instructions Ce point sera précisé
aux endroits appropriés.
Le mode de réalisation actuellement préféré de la mémoire cache selon l'invention est incorporé dans un microprocesseur RISC monopuce de 64 bits Ce processeur
peut être fabriqué selon la technologie MOS complémen- taire (CMOS) bien connue ou d'autres technologies La technologie spécifique utilisée pour fabriquer le20 processeur n'est pas un facteur critique pour l'in-
vention L'invention concerne en outre une mémoire cache
qui convient pour être utilisée avec un microprocesseur.
Pour la plus grande partie, on décrira seulement les parties du processeur directement en rapport avec
l'invention.
Ainsi qu'il a été mentionné dans la partie relative à l'art antérieur, le processeur dans lequel est incorporée la mémoire cache objet de l'invention,
est en particulier une version perfectionnée du micro-
processeur Intel 860 De nombreuses entrées et sorties de ce processeur RISC, que l'on trouve dans le commerce, sont utilisées aussi dans le processeur dans lequel est incorporée la mémoire cache de l'invention Egalement comme déjà mentionné, un excellent ouvrage décrivant l'Intel 860 est intitulé "i 860 Microprocessor Architecture", par Neal Margulis, publié par Osborne
McGraw-Hill, 1990.
La mémoire cache selon l'invention est divisée
en un cache de données (qui ne sont pas des instruc-
tions) et un cache d'instructions Ils sont tous deux de type associatif à quatre voies, avec une largeur de ligne de 32 octets Les deux caches ont une capacité de 16 Ko de données Chaque zone de repère a 20 bits; une zone de décalage de 7 bits est utilisée pour former un
numéro d'entrée dans les blocs de mémoire de données.
Comme décrit par la suite, à la fois des repères phy-
siques (d'adresses physiques) et des repères virtuelles
(d'adresses virtuelles) sont stockés pour la mémorisa-
tion des données non-instructions Les repères physiques sont stockés dans un système de mémoire à double accès qui permet d'examiner à la fois des adresses sur un bus externe (espionnage ou surveillance) et des adresses physiques venant de l'unité de traduction Les cellules
utilisées dans ce système et la circuiterie d'accompag-
nement, permettant un cycle unique de lecture/modifica-
tion, sont décrites dans la demande de brevet des Etats-Unis 458 985 déposée le 29 décembre 1989, cédée à la demanderesse de la présente et intitulée "Dual Port Static Memory with One Cycle Read-Modify- Write Operation" La partie restante du système de mémoire pour la mémoire cache est réalisée avec des cellules ordinaires à six transistors (cellules statiques à bascule), exception faite du tampon de ligne, lequel utilise des cellules de type maître-esclave Les30 adresses virtuelles comme les adresses physiques comportent chacune 32 bits, ainsi que cela est le cas
pour l'Intel 860.
Architecture d'ensemble du système de mémoire de repères virtuels et réels et son fonctionnement La figure 1 montre une unité de traitement 15 qui peut être identique à l'unité de traitement que l'on il trouve dans des processeurs de l'art antérieur tels que l'Intel 860 Cette unité de traitement est connectée à un bus bidirectionnel de données (bus D) et un bus d'adresses virtuelles (bus AV) Le bus de données est 5 couplé à un bus de données externe 26 Des adresses virtuelles (AV) sont communiquées par le bus à la mémoire cache et à une unité de traduction 20 Les zones de repère des adresses sont communiquées à une section de rangement de repères d'adresses virtuelles 22 Les10 zones de décalage des adresses sont communiquées au cache de données 23 Les zones de décalage fournissent des numéros d'entrée (sélection de ligne) dans les blocs du cache de données 23 La zone d'index n'est pas représentée En plus du stockage de repères virtuels,15 des repères physiques sont stockés également dans une section de rangement de repères d'adresses physiques (AP) 21 Chaque repère physique est associé à son repère
virtuel correspondant.
L'unité de traduction 20 traduit d'une manière ordinaire les adresses virtuelles venant de l'unité de traitement 15 en adresses physiques La sortie de l'unité de traduction 20, c'est-à-dire le bus 24, est connectée à un bus d'adresses externe 25 Les adresses physiques (les zones de repère) sont communiquées à la
section de stockage de repères d'adresses physiques 21.
Comme représenté sur la figure 1, la mémoire centrale, le bus d'adresses 25 et le bus de données 26 sont "hors puce", c'est-à-dire ne sont pas formés sur le substrat unique ensemble avec la partie restante du processeur dans le mode de réalisation actuellement préféré Ainsi que cela est le cas avec l'Intel 860, la
mémoire cache, l'unité de traitement, l'unité de tra-
duction et d'autres unités sont formées sur un seul substrat. Pendant le fonctionnement, lorsque l'unité de traitement 15 demande une donnée, l'adresse virtuelle pour la donnée est envoyée à la section de rangement de
repères 22 On suppose, à titre d'exemple, qu'une cor-
respondance entre la zone de repère venant de l'unité de traitement et les zones de repère stockées dans la section de rangement 22 n'est pas trouvée, de sorte
qu'il y a échec En même temps que se déroule le pro-
cessus de comparaison dans la section de rangement de repères 22, l'unité de traduction 20 traduit l'adresse virtuelle en une adresse physique La zone de repère de l'adresse physique est communiquée ensuite à la section
de rangement de repères 21 (pour des données non-ins-
tructions) La zone en question est de nouveau comparée avec chacune des zones de repère physique stockées dans la section de rangement de repères 21 On suppose qu'une nouvelle fois, il n'y a pas de correspondance et qu'il y a donc échec; un cycle de mémoire pour la lecture est alors déclenchée et l'adresse physique est utilisée pour
accéder à la mémoire centrale 18 Si la donnée recher-
chée est "apte à être mise en cache", l'adresse vir-
tuelle et l'adresse physique correspondantes pour la donnée sont stockées respectivement dans les sections 22 et 21 et la donnée extraite de la mémoire centrale est
stockée dans le cache de données 23.
En se rapportant à la figure 2, on suppose de nouveau que l'unité de traitement délivre une adresse virtuelle, comme indiqué par le pavé 28 Cette adresse est transmise une nouvelle fois à la section de range- ment de repères d'adresses virtuelles 22 Comme indiqué par le pavé 30, la zone de repère de 20 bits de30 l'adresse virtuelle, venant de l'unité de traitement 15, est comparée avec les zones de repère, ayant chacune 20 bits, qui sont stockées dans la section de rangement de repères d'adresses virtuelles 22 S'il y a une corres- pondance, la donnée (si elle est correcte) est obtenue,35 comme indiqué par le pavé 33, du cache de données 23 de manière ordinaire, avec utilisation des bits de décalage
et d'index, ainsi que cela est bien connu dans l'art.
Pendant que se déroule la comparaison pour les repères virtuels, l'unité de traduction 20 traduit l'adresse virtuelle en une adresse physique, comme indiqué par le pavé 29 sur la figure 2 La zone de repère de l'adresse physique est communiquée à la section de rangement de repères d'adresses physiques 21 et comparée aux zones de
repère de 20 bits chacune stockées dans cette section.
En cas d'échec pour le repère virtuel, mais de corres-
pondance pour le repère physique, la donnée est sélec-
tionnée dans le cache de données sur la base de la correspondance dans la section de rangement de repères physiques, de nouveau avec utilisation des bits de décalage et d'index (Ces bits sont les mêmes pour l'adresse virtuelle et l'adresse physique) De même, dans cette éventualité, comme indiqué par le pavé 35, la zone de repère de l'adresse virtuelle est introduite dans la section de rangement de repères d'adresses virtuelles 22 à un emplacement qui correspond à celui de la zone de repère de l'adresse physique ayant fourni la correspondance. S'il y a échec à la fois pour le repère virtuel et le repère physique, un cycle de mémoire ordinaire est déclenché et la donnée est extraite de la mémoire centrale Si la donnée est apte à être mise en cache, comme indiqué par le pavé 32, la section de rangement de repères d'adresses virtuelles et la section de rangement de repères d'adresses physiques sont
actualisées, en plus de la donnée elle-même.
Lorsqu'il y a un changement de tâche/contexte pour le processeur, tous les repères virtuels dans la section 22 sont invalidés Les données dans le cache 23 ainsi que les repères physiques dans la section 21 restent en place L'unité de traduction est typiquement35 reprogrammée à ce moment avec le mappage pour la nou- velle tâche Quand l'unité de traitement 15 génère ensuite une adresse virtuelle, aucune correspondance ne peut être trouvée dans la section 22 Par contre, une correspondance dans la section 21 est possible et, si cela est le cas, la donnée est extraite du cache de données 23 et la zone de repère pour l'adresse virtuelle
est chargée dans la section 22 à l'emplacement corres-
pondant à celui de la zone de repère physique ayant
fourni la correspondance.
Lorsque plusieurs tâches sont exécutées dans un même processeur, il n'est pas inhabituel qu'une seule adresse physique possède plusieurs adresses virtuelles correspondantes Donc, lorsqu'il y a passage d'une tâche à une autre, une adresse virtuelle différente peut demander une donnée stockée précédemment dans le chache
23 en coordination avec une autre adresse virtuelle.
Comme il y a comparaison de repères physiques, la donnée sera trouvée dans le cache 23 sans faire appel à la
mémoire centrale 18.
Un autre avantage de la mémoire cache repré-
sentée sur la figure 1, surtout pour des applications multiprocesseur, est que des adresses physiques sur le bus d'adresses externe 25 peuvent être comparées aux repères dans la section 21 et qu'il peut être déterminé facilement, comme expliqué par la suite, si un cache particulier détient la dernière version d'une donnée La section de repères physiques 21 est un système de
mémoire à double accès qui permet de surveiller (es-
pionner) tout en effectuant la fonction décrite ci-
dessus. Tampon de ligne L'emploi des zones de repères virtuels et physiques, tel que décrit relativement à la figure 1,
est prévu seulement, dans le mode de réalisation ac-35 tuellement préféré, pour la section de données non-ins-
tructions de la mémoire cache Il pourrait cependant
être appliqué à la section de rangement d'instructions.
Par contre, le perfectionnement apporté par le tampon de ligne représenté sur la figure 3 est utilisé pour la
mémorisation des instructions et non pas pour la mémo-
risation des données non-instructions, bien que, là
encore, il pourrait être appliqué à cette dernière.
Avant de décrire le tampon de ligne de la figure 3, il est utile de passer en revue ce qui arrive lorsque l'unité de traitement tente de prendre en charge une instruction et un échec se produit dans la recherche d'une correspondance dans la mémoire cache Pour ce qui concerne la mémoire cache décrite, chaque ligne de
données possède une largeur de 32 octets, ce qui cor-
respond à 8 instructions Lorsque l'échec a lieu, une ligne entière est d'abord remplie dans la mémoire cache et l'unité de traitement est capable ensuite seulement d'extraire l'instruction ( 4 octets) dont elle avait
besoin et qui se trouvait dans cette ligne Par consé-
quent, une fois que l'échec s'est produit, il peut être nécessaire de transférer dans la mémoire cache plus d'octets que ceux immédiatement nécessaires avant que le processeur ne soit en mesure d'extraire l'instruction
dont il avait besoin.
Le tampon de ligne représenté sur la figure 3 atténue ce problème La partie de la mémoire cache montrée sous la ligne discontinue de la figure 3 reflète la mémoire cache ordinaire, laquelle comporte un cache de données d'instructions 38 (semblable au cache de données 23, sauf pour ce qui concerne la mémorisation d'instructions) et une section de rangement de repères d'instructions 37 Les zones de repère de l'adresse virtuellefournie par l'unité de traitement, sont communiquées à la section de rangement de repères d'instructions et comparées de manière normale aux zones de repère stockées Si une correspondance est trouvée, l'une des lignes sélectionnées par le décalage fournit l'instruction de manière habituelle Il est à noter que, ainsi que cela est typiquement le cas, le décalage est fourni au cache 38 pour lui permettre de sélectionner les lignes appropriées en même temps que le processus de comparaison se déroule dans la section de rangement de
repères 37.
En effet, avec le tampon de ligne selon l'invention, est ajoutée une mémoire cache additionnelle de ligne, qui est entièrement associative et dans laquelle, en plus, des zones des données stockées dans la ligne unique de données peuvent être sélectionnées
sans que la partie restante de la ligne soit présente.
Le tampon de ligne comprend un premier moyen de mémori-
sation 42 pour stocker une adresse virtuelle ( 27 bits et au moins un bit additionnel, comme décrit ci-après) et un second moyen de mémorisation 44 pour stocker les données ( 32 octets plus des bits additionnels qui seront
décrits ci-après).
Les moyens de mémorisation 42 et 44 du mode de réalisation actuellement préféré sont fabriqués à l'aide
de bascules maître-esclave bien connues dans l'art.
Cette disposition permet de lire et d'écrire dans un seul cycle de mémoire, ce qui autorise par exemple, comme on le verra, d'extraire une adresse et des données des moyens de mémorisation 42 et 44 et d'introduire une nouvelle adresse et des données dans le talpon de ligne,
le tout dans un seul cycle.
Le moyen de mémorisation 42 stocke à la fois la zone de repère ( 20 bits} et la zone de décalage ( 7 bits) Il se distingue en cela de la section de range- ment 37 o seulement la zone de repère de 20 bits est stockée Pendant que l'unité de traitement cherche une instruction dans la mémoire cache, il se produit non seulement la comparaison des zones de repère dans la35 section de rangement 37, mais aussi la comparaison à la fois des zones de repère et de décalage de l'unité de traitement avec les zones de repère et de décalage stockées dans le moyen de mémorisation 42 Ce dernier
comporte à cet effet des moyens de comparaison ordi-
naires. Le moyen de mémorisation 42 comporte un bit additionnel 43 appelé "bit de validation" En cas d'échec, comme il sera décrit plus en détail par la suite, le contenu du moyen de mémorisation 42 (la partie
repère seulement) est transféré à la section de range-
ment 37 et le décalage est utilisé pour sélectionner des lignes dans le cache 38 Ensuite, les données contenues dans le moyen de mémorisation 44 sont transférées dans le cache 38 Après cela, les zones de repère et de
décalage provenant de l'unité de traitement sont char-
gées dans le moyen de mémorisation 42 A ce moment, le bit de validation est positionné à "invalide" 1 Un cycle de mémoire ordinaire est utilisé ensuite pour accéder à la mémoire centrale Quand la mémoire centrale renvoie un signal indiquant que la donnée à laquelle a été20 accédée dans la mémoire centrale est "apte à être mise en cache", le bit de validation 43 est amené à son état valide Le signal indiquant que l'unité de traitement a demandé une donnée apte à être mise en cache est désigné par KEN/; ce signal est couramment utilisé dans l'Intel
860, mais non pas dans le cadre d'un tampon de ligne.
L'emploi de ce bit de validation sera décrit par la
suite relativement à la figure 12.
Le moyen de mémorisation 44 est divisé en quatre sections ayant chacune une largeur de 64 bits.
Chacune des sections comporte en outre un bit addition- nel servant à indiquer si les données contenues dans la section coordonnée sont valables Dans la section 45 sont stockés, par exemple, 8 octets (deux instructions). Le bit 49 est utilisé pour indiquer si les données dans35 la section 45 sont valables Des bits sont coordonnés de façon semblable aux sections 46, 47 et 48 et un bit supplémentaire 51 est utilisé pour indiquer la validité
de toute la ligne Ce bit correspond aux bits de vali-
dation utilisés dans le cache 38.
Dans le mode de réalisation actuellement préféré, le bus de données a une largeur de 64 bits, de sorte qu'une seule section du moyen de mémorisation 44 est remplie à chaque cycle de base de la mémoire A supposer que les données soient chargées dans le moyen
de mémorisation 44 de gauche à droite pour un remplis-
sage de ligne typique, la section de mémorisation 45 sera remplie lors d'un premier cycle de la mémoire et le
bit de validation 49 sera positionné à son état valide.
Tous les autres bits de validation coordonnés au moyen de mémorisation 44 restent à leur état invalide A mesure que d'autres cycles de mémoire ont lieu, avec chargement de données dans les sections 46, 47 et 48,
les bits de validation associés à chacune de ces sec-
tions passent à leur état valide Une fois que toutes les sections détiennent des données valables, le bit 51
est amené à son état valide.
Ainsi qu'il sera décrit par la suite, des données peuvent être transférées du second moyen de
mémorisation 44 dans le cache 38 Lorsqu'un tel trans-
fert a lieu, la zone de décalage du moyen de mémorisa-
tion 42 est utilisée comme un numéro d'entrée dans le cache 38 et la donnée du moyen de mémorisation 44 est transférée dans le cache 38 Seul le bit de validation final 51 est stocké dans le cache 38 Comme décrit par la suite, même si seulement les sections 45 et 46 par exemple contiennent des données, un transfert des données au cache 38 peut avoir lieu Ensuite, lors des deux cycles suivants de la mémoire, les données pour la moitié restante de la ligne sont directement transférées
dans le cache 38.
Un point important est que l'unité de traite- ment est en mesure d'extraire des données du moyen de mémorisation 44 avant que ne soit remplie toute la ligne Après un premier cycle de mémoire, au cours duquel la section 45 reçoit deux instructions de la mémoire centrale par exemple, le bit de validation 49 est amené à son état valide En utilisant la zone d'index de l'adresse virtuelle, l'unité de traitement sélectionne une instruction ou les deux instructions de la section 45 et continue donc à fonctionner, malgré le fait que les sections 46, 47 et 48 restantes n'aient pas été remplies avec des instructions venant de la mémoire centrale C'est en cela que cet agencement se distingue de la technique antérieure, selon laquelle toute la ligne dans le cache 38 est remplie avant qu'un tel accès ne soit possible En fait, cette possibilité peut être
considérée comme une associativité "de cinquième voie".
Lorsqu'on se reporte maintenant à la figure 12, il est supposé dans cet exemple que l'unité de traitement tente d'extraire une instruction, comme indiqué par le pavé 55 L'adresse (à la fois la zone de repère et la zone de décalage) pour cette instruction est communiquée au moyen de mémorisation 42 et comparée au contenu de celui-ci Simultanément, la zone de repère pour l'instruction est comparée de façon normale aux zones de repère stockées dans la section 37, tandis que la zone de décalage sélectionne des lignes dans le cache 38 Une correspondance peut être trouvée soit dans la section 37, soit dans le moyen de mémorisation 42 Si une correspondance est trouvée dans la section 37, l'instruction est fournie de manière habituelle à partir du cache 38 Si la correspondance se produit en raison du contenu du moyen de mémorisation 42 (à la fois la
zone de repère et la zone de décalage doivent corres- pondre), la donnée appropriée est sélectionnée dans le moyen de mémorisation 44, à supposer, bien entendu,35 qu'elle soit valable.
On suppose maintenant que la tentative de prise en charge illustrée par le pavé 35 produise un échec à la fois dans le moyen de mémorisation 42 et dans la section 37 Cet échec provoque le déclenchement d'un cycle de mémoire externe; autrement dit, le processeur
tente d'obtenir l'instruction de la mémoire centrale.
Pendant cette opération, le contenu valable, s'il y en a
un, du moyen de mémorisation 42 est enlevé de ce der-
nier (En fait, le contenu du tampon de ligne est
inscrit dans le cache pendant que se déroule le rem-
plissage de ligne suivant du tampon de ligne) La zone
de repère est transférée à la section 37 o elle rem-
place une zone de repère sous un algorithme de rempla-
cement prédéterminé (par exemple un algorithme de remplacement aléatoire) La zone de décalage du moyen de mémorisation 42 fournit le numéro d'entrée afin de
permettre le transfert de la donnée du moyen de mémori-
sation 44 au cache 38 Les zones de repère et de dé-
calage de l'adresse ayant entraîné l'échec, sont trans-
férées ensuite dans le moyen de mémorisation 42 Ceci
est indiqué par le pavé 56.
On suppose maintenant que l'adresse chargée dans le moyen de mémorisation 42 soit apte à être mise en cache; une fois que le signal KEN\ a été retourné, le
bit 43 est amené à son état valide Si la donnée re-
cherchée n'est pas apte à être mise en cache, la nou-
velle adresse est chargée lors de l'échec suivant dans le moyen de mémorisation 42 et son contenu précédent est supprimé. Une fois que la donnée est revenue de la mémoire centrale et chargée dans au moins l'une des sections du moyen de mémorisation 44, elle est à la disposition de l'unité de traitement, comme expliqué précédemment Généralement, pour ce qui concerne le35 fonctionnement du processeur, en raison du traitement en pipeline, l'instruction suivante sera prise en charge avant que l'instruction précédente ne soit revenue de la mémoire centrale Ceci est indiqué par le pavé 58 sur la figure 12 Celle-ci montre deux possibilités pour cette recherche de l'instruction suivante Selon l'une d'elles, une correspondance est trouvée dans le tampon de ligne, tandis que la deuxième produit un échet sur le tampon de ligne Selon encore une autre possibilité, une correspondance est trouvée dans la section 37, auquel cas l'instruction est sélectionnée dans le cache 38 après le retour de l'instruction précédente de la
mémoire centrale.
On suppose maintenant qu'un échec ait lieu sur le tampon de ligne Comme indiqué par le pavé 59, le contenu en données, s'il y en un, est alors transféré au
cache 38, la zone de décalage venant du moyen de mémo-
risation 42 fournissant un numéro d'entrée, comme expliqué précédemment et une zone de repère venant du moyen de mémorisation 42 étant introduite dans la section 37 Ceci dégage le chemin pour placer l'adresse de la nouvelle instruction dans le moyen de mémorisation 42 Un cycle de mémoire externe est déclenché et la nouvelle donnée, une fois de retour de la mémoire
centrale, est placée dans le moyen de mémorisation 44.
Si une correspondance est trouvée dans le tampon de ligne pour la prise en charge de l'instruction suivante, cela pourrait se produire soit avant soit après le retour de l'instruction précédente Si la correspondance est trouvée avant que l'instruction précédente n'ait été renvoyée, comme indiqué par le pavé 60, les indicateurs suivants sont présents: le bit de validation d'adresse 43 est dans son état valide et le bit de validation coordonné à l'instruction demandée précédemment est dans son état invalide Dans ces conditions, l'unité de traitement sait que l'instruction35 précédente est sur son chemin à partir de la mémoire centrale et qu'elle doit attendre cette instruction,
comme indiqué par le pavé 60 Par contre, si la corres-
pondance est trouvée après que l'instruction précédente a été retournée, la bit de validation coordonné à l'instruction, par exemple le bit 49, est dans son état valide et l'unité de traitement peut extraire l'instruction du moyen de mémorisation 44 une fois que, bien entendu, l'instruction précédente a été reçue par le processeur. Donc, le tampon de ligne selon la figure 3
permet à l'unité de traitement de procéder aux opéra-
tions suivantes avant qu'une ligne entière ne soit remplie, de sorte qu'il fait gagner le temps normalement nécessaire au remplissage d'une ligne entière dans une
mémoire cache.
Mise en oeuvre de protocoles de cohérence de cache
Dans la description suivante, il sera question
des protocoles connus de double écriture, de réécriture et d'écriture unique Dans ce contexte, les lettres "M", "E", "S" et "'I" sont utilisées; parfois, ces lettres
sont désignées collectivement par MESI Pour le proto-
cole d'écriture unique, "I" indique que la donnée est invalide ou incorrecte et "S"' indique que la donnée est partagée, ce qui signifie par exemple qu'en plus de se trouver dans la mémoire centrale, la donnée est contenue dans une autre mémoire cache "E" indique que la donnée est exclusive, c'est-à-dire qu'elle se trouve seulement dans une mémoire cache et dans la mémoire centrale et qu'elle n'est pas en d'autres mémoires caches "M' indique que la donnée est modifiée et que la donnée contenue dans la mémoire centrale est incorrecte Dans la mise en oeuvre actuelle, chaque ligne de données (données non- instructions) contient des bits pour indiquer l'un des quatre états de protocole "IW', "E", "S", "I" Pour le protocole de double écriture, seuls les états "I" et "S" sont utilisés; pour le protocole de
réécriture, les états "I", "E" et "MI' sont utilisés.
Un point important, comme on le verra par la
suite, est que le processeur peut appliquer l'un quel-
conque des trois protocoles précités La figure 8 montre deux processeurs interconnectés, ce qui est possible dans le cadre de la présente invention pour permettre un
protocole d'écriture unique A cet égard, les proces-
seurs sont pourvus de plusieurs bornes ou broches que
l'on ne trouve pas sur l'Intel 860.
On se reporte pour commencer à la figure 4, laquelle montre les bornes du processeur et les signaux sur ces bornes dans la mesure o ils sont nécessaires à la compréhension des différents protocoles La ligne 62 symbolise la démarcation entre le processeur (puce) et son environnement externe Donc, la partie au-dessus de la ligne 62 est interne au processeur, tandis que la
partie sous cette ligne est externe au processeur.
A commencer tout à fait à gauche, on voit le bus bidirectionnel de données Il s'y trouve également un bus bidirectionnel d'adresses qui, comme mentionné, est capable de détecter des adresses sur le bus externe
d'adresses, raison pour laquelle il est bidirectionnel.
Deux signaux de validation d'adresse EADS\ et ADS\ sont prévus Lorsque le premier est au niveau bas, les adresses externes sont valables De façon analogue, lorsque le signal ADS\ est au niveau bas, les adresses
internes sont valables.
Une borne de sélection de protocole est prévue pour permettre la sélection des protocoles Cette borne
est désignée par WB/WT\ pour "write-back/not write-
through" ou "réécriture/pas de double écriture" Les connexions réalisées sur cette borne seront décrites par
la suite.
* Le signal habituellement utilisé pour indiquer si un cycle de mémoire est un cycle d'écriture ou un cycle de lecture (W/R\) est également montré sur la
figure 4 et sera traité par la suite.
Le processeur reçoit aussi un signal lui indiquant qu'il doit invalider une donnée Ce signal est désigné par " 1 INV"' Si ce signal est au niveau haut alors
que processeur détecte (surveille) des adresses ex-
ternes, le processeur place la donnée correspondante (si
elle est trouvée dans sa mémoire cache) à l'état inva-
lide "I".
Lorsqu'un signal de temporisation BOFF\ est appliqué au processeur, celui-ci est amené à attendre
avant de compléter un cycle de base de la mémoire.
L'utilisation de ce signal est décrite par la suite.
Le processeur reçoit aussi le signal EWBE\ ou
"external write buffer not empty" pour "tampon d'écri-
ture externe pas vide" Ce signal est au niveau bas
lorsque le tampon d'écriture externe est vide.
Le signal de correspondance HIT\ est délivré par le processeur lorsqu'une correspondance est trouvée pour une adresse détectée à l'extérieur Ce signal est nominalement au niveau haut et son potentiel chute lorsqu'une correspondance est trouvée et que la donnée correspondante présente l'état "E"', S"S ou " 1 M" Un
signal HITM\ diminue en potentiel lorsqu'une correspon-
dance est trouvée pour une adresse détectée à l'exté-
rieur et que la donnée correspondante présente l'état "M' Donc, si le processeur est en surveillance et la donnée correspondante présente l'état "M', à la fois le
signal HIT\ et le signal HITM\ diminuent en potentiel.
Enfin, le signal HOLD\ amène le processeur à arrêter en fait les opérations Il est utilisé en
liaison avec un arbitre de bus et sera décrit conjoin-
tement avec la figure 8.
Dans ce qui va suivre, les états des bits représentant les états "M", "E", "S" et "I" pour les différents protocoles seront traités ensemble avec les conditions sous lesquelles ils changent Ces changements sont illustrés par des diagrammes d'états au lieu de par des portes par exemple Cette représentation a été
choisie dans le but de permettre une meilleure compré-
hension de l'invention Il sera évident pour l'homme de métier que des logiques ordinaires permettent la mise en oeuvre de ces diagrammes d'états. Les figures 5, 6 et 7 montrent les connexions de la borne WB/WT\ pour obtenir les différents
protocoles Ces figures se rapportent à un cas d'utilisation d'un seul processeur dans un système.
Lorsqu'on se reporte pour commencer à la figure 5, on a supposé dans ce cas que le processeur 63, contenant la mémoire cache selon l'invention et sa logique associée, est connecté par sa borne WB/WT\ à la masse Cela implique que la double écriture est en vigueur et que, par conséquent, le protocole de double écriture est appliqué Pour ce protocole, la donnée présente soit l'état invalide (I) soit l'état partagé (S), ce qui indique, pour un cadre d'utilisation à processeur unique, que la donnée dans la mémoire cache est valable Quand le potentiel de la masse est couplé à la ligne 66, la mémoire cache associe seulement l'état "I" ou "S" à chaque ligne de données Si le processeur
déclenche un cycle de lecture, la donnée lue dans la mémoire cache est valable, comme indiqué par le change-
ment d'état de "I" à "S" (flèche 71) représenté sur la figure 5 Lorsque le processeur extrait la donnée de la mémoire cache, la donnée reste à l'état "S", comme30 l'indique la flèche 73 La donnée peut être invalidée, comme indiqué par la flèche 72, par exemple par l'éli-
mination de la donnée de la mémoire cache. La figure 6 montre un processeur 64 pouvant être identique au processeur 63, sauf que sa borne WB/WR\ est connectée par la ligne 65 au potentiel d'alimentation Vcc (de 5 volts par exemple) Cela implique que le protocole de réécriture est en cours d'utilisation et que, par conséquent, le bit indiquant "I", "E" ou '?MI' est applicable pour chaque ligne de données Lorsqu'un remplissage de ligne a lieu, l'état change d'invalide à "E", ce qui signifie que le proces- seur détient une copie aussi bonne que celle trouvée en mémoire centrale Si une correspondance en écriture est trouvée, l'état change de "E" à "M" Les états et leurs transitions pour le protocole de réécriture sont comme
ceux utilisés couramment dans l'Intel 860.
La figure 7 représente un processeur 65 qui
peut de nouveau être identique au processeur 63 ou 64.
Cette fois-ci, la borne WB/WT\ est connectée à la ligne 67 par la ligne 66, laquelle est reliée à la borne
d'écriture/lecture W/R\ Cette connexion produit l'ap-
plication du protocole d'écriture unique Par exemple, après chaque remplissage de ligne, la ligne présentera l'état "SI' parce que W/R\ est au niveau bas pour des cycles de lecture Ceci est indiqué sur la figure 7 par la flèche 74 et correspond à la flèche 71 de la figure 5 o la ligne 66 est connectée à un potentiel bas (la masse) L'écriture consécutive sur cette ligne sera répétée en mémoire centrale en raison de l'état "S" En
effectuant la première écriture, le processeur échan-
tillonne la borne WB/WT\, détermine qu'elle est au niveau haut, en raison du cycle d'écriture, et produit le changement d'état à "E", comme indiqué par la flèche (écriture unique) Toutes les écritures consécutives sur cette ligne n'apparaîtront pas sur le bus en raison
du passage à l'état "M', comme indiqué par la flèche 76.
Par conséquent, le protocole d'écriture unique est réalisé. Lorsqu'on se reporte maintenant à la figure 8, celle-ci montre deux processeurs 76 (Pl) et 77 (P 2) connectés à un bus de données partagé 81 et un bus d'adresses partagé 82 Les processeurs 76 et 77 peuvent être identiques aux processeurs décrits précédemment en ce sens qu'ils comportent la mémoire cache selon la
présente invention et la logique qui y est associée.
Les bus partagés 81 et 82 sont connectés à la mémoire centrale 79 et à un tampon d'écriture externe 78
qui sera décrit ensuite.
La figure 8 montre les différentes intercon-
nexions des processeurs 76 et 77 pour la mise en oeuvre du protocole d'écriture unique de données partagées (le signal HIT\ est appliqué pour le processeur surveillant, tandis que l'autre processeur effectue un remplissage de
ligne) Ainsi qu'on le verra ci-après, ces intercon-
nexions permettent la mise en cache cohérente avec un
minimum de logique de liaison.
Comme l'indiquent les lignes 84 et 86, la borne de sortie de validation d'adresse (ADS\) de chaque processeur est reliée à la borne de validation d'adresse externe de l'autre processeur Il est ainsi garanti que
chacun des processeurs surveille les cycles de l'autre.
Autrement dit, lorsque le processeur Pl délivre une adresse sur le bus 81, le signal de validation ADS\ sur la ligne 86 amène le processeur 77 à lire l'adresse Il est à noter que ce signal de validation peut être transmis à d'autres composants du système, tels que le
tampon 78 et la mémoire 79.
Des lignes 82 et 85 relient la borne HIT\ de
chaque processeur à la borne WB/WT\ de l'autre proces-
seur Ceci assure que lorsqu'un processeur lit une donnée pour remplir une ligne dans sa mémoire cache et
l'autre processeur possède la même donnée, les proces-
seurs indiquent que la donnée est dans l'état "S" Cela ne se produit pas si le signal HITM\ est au niveau bas, comme décrit par la suite en liaison avec le signal
BOFF\.
On suppose à titre d'exemple que le processeur 76 soit en cours de lecture ou d'extraction d'une ligne de données de la mémoire centrale pour sa mémoire cache et que cette ligne soit également présente dans le processeur 77 On suppose en plus que la ligne dans le processeur 77 présente l'état "E" Le signal HIT\ sur la ligne 82 chute en potentiel, ce qui fait passer la donnée introduite dans le processeur 76 à l'état "S", comme indiqué par la flèche 93 sur la figure 9 Quant au processeur 77, qui est en surveillance, l'état "E" de la donnée change en état "S", comme indiqué par la flèche 100 sur la figure l Ob Pour le processeur 77, le signal HIT\ est au niveau bas, ce qui indique que la donnée est présente dans ce processeur Par contre, le signal HITM\ est au niveau haut puisque la donnée n'est pas à l'état "M" De même, puisqu'il s'agit d'un cycle de lecture exécuté par le processeur 76, le signal "invalide" sur la ligne 87 reste au niveau bas Par conséquent, les deux processeurs indiquent que la donnée en question est à l'état "SI", c'est- à-dire que la donnée est partagée
par les mémoires caches.
Le signal W/R\ de chaque processeur est transmis à la borne INV de l'autre processeur Ceci assure l'invalidation de la donnée dans un processeur pendant que l'autre est en train d'écrire Ce résultat
est obtenu par les lignes 83 et 87 de la figure 8.
On suppose maintenant que le processeur 76 soit en train d'écrire et que la donnée pour l'adresse concernée soit trouvée dans le processeur 77 Le signal sur la ligne 87 sera alors au niveau haut, ce qui fait passer la donnée correspondante dans le processeur 77 à l'état "I" Ceci est indiqué sur la figure i Qa par la flèche 97, sur la figure l Ob par la flèche 98 et sur la figure 1 Oc par la flèche 99 La figure i Qa montre aussi que lorsque la donnée dans le processeur 77 présente l'état "S" dans les conditions décrites, le signal HIT\ sera au niveau bas et le signal HITM\ sera au niveau haut puisque la donnée dans la mémoire cache présente l'état "S" et non pas l'état "M" Selon la figure l Ob, lorsque la donnée est au départ à l'état "E", elle passe également à l'état "I", comme indiqué par la flèche 98, quand le signal HIT\ est une nouvelle fois au niveau haut Une transition de l'état "MI' à l'état "S" se produit si la broche INV est activée par le signal
EADS\.
Selon la figure 10 c, si la donnée dans le processeur 77 se révèle avoir l'état "M", elle est invalidée, comme indiqué par la flèche 99 Il est à noter que le signal HIT\ et le signal HITM\ sont alors
tous deux à leur niveau bas.
Lorsqu'un processeur effectuant une surveil-
lance détecte qu'un autre processeur extrait une donnée, s'il présente déjà l'état "S", il y reste, comme indiqué par la flèche 76 sur la figure 10 a Le processeur surveillant indique alors qu'une correspondance a été
trouvée et que la donnée n'est pas dans son état modi-
fié. Ainsi que le montre la figure 8, la borne HITM\ de chaque processeur est reliée à la borne de temporisation BOFF de l'autre processeur et aussi à
l'arbitre de bus 80, par les lignes 91 et 92 respecti-
vement Ceci assure que lorsqu'un processeur contient une donnée modifiée, l'autre processeur est empêché
d'extraire une donnée invalide de la mémoire centrale.
Par exemple, si le processeur 76 contient une donnée
modifiée, la donnée se trouvant à l'adresse correspon-
dante dans la mémoire centrale 79 est incorrecte Si le processeur 77 tente de lire cette donnée, le signal HITM\ sur la ligne 91 passera au niveau bas, ce qui amène le processeur 77 à temporiser Ceci sera expliqué par la suite. La partie restante de la figure 9 montre l'actualisation standard du protocole d'écriture unique pour un processeur, tel que le processeur 76 ou 77 par exemple, lorsqu'il lit et écrit Comme indiqué par la flèche 94, une fois à l'état "S", un processeur peut lire une donnée de sa mémoire cache sans que l'état "S" change La flèche 95 indique que lorsqu'un processeur introduit une donnée dans son cache (première écriture), l'état passe à "E" et la donnée est introduite dans la mémoire centrale Lorsqu'une autre écriture se produit à cet emplacement, elle fait passer l'état à "M", comme le montre la flèche 101, ce qui indique que la seule copie
exacte de la donnée est contenue dans la mémoire cache.
Cet état "M' et surtout le signal HITM\ empêchent l'autre processeur d'extraire la donnée incorrecte de la
mémoire centrale.
On suppose maintenant, pour les besoins de la description, que le processeur 76 contienne une donnée à
l'état "M' et que le processeur 77 tente d'extraire la donnée à cette adresse de la mémoire centrale 79 Le processeur 76 est dans le mode de surveillance à ce moment et reconnaît l'adresse sur le bus principal, ce qui fait chuter le potentiel à la fois de son signal HIT\ et de son signal RITM\ Le processeur 77 est ainsi informé que la donnée en question de la mémoire centrale n'est plus à jour Plus exactement, le signal sur la ligne 91 oblige le processeur 77 à temporiser et à ne pas extraire la donnée de la mémoire centrale L'arbitre de bus 80, connecté aux lignes 91 et 92, détecte le signal sur la ligne 91 et sait qu'il doit autoriser l'élimination de la donnée du processeur 76 avant que le processeur 77 ne puisse la lire Normalement, l'arbitre de bus 80 autorise les deux processeurs de poursuivre leurs traitements par leurs bornes HOLD Cependant, dans certaines conditions, comme celles décrites ci-dessus, l'arbitre 80 arrête un processeur et permet à l'autre
d'avancer En l'occurrence, l'arbitre arrête le proces-
seur 77 et permet au processeur 76 d'actualiser la mémoire centrale 79 Le processeur 77 est ensuite libéré, ce qui lui permet d'extraire de la mémoire
centrale la donnée qu'il recherche.
Bien que l'arbitre de bus 80 assure géné-
ralement d'autres fonctions bien connues, seule sa fonction en relation avec la présente invention est décrite ici. Ordonnancements fort et faible des écritures en mémoire centrale Le processeur selon l'invention utilise un
tampon d'écriture interne 17 représenté sur la figure 1.
Ce tampon fonctionne de façon bien connue et sert à stocker des données et des adresses en vue de l'écriture
en mémoire externe, sauf dans les cas décrits ci-après.
De plus, le processeur selon l'invention est adapté pour fonctionner en combinaison avec un tampon externe 78 représenté sur la figure 8 Ce tampon constitue une
mémoire temporaire pour des données devant être ins-
crites dans la mémoire centrale 79 Ces tampons per-
mettent d'écrire des données dans la mémoire centrale lorsque les bus ne sont pas occupés Le tampon externe 78 délivre un signal (EWBE\) sur une ligne 88 (visible sur les figures 8 et 13) pour indiquer quand le tampon d'écriture externe est vide La figure 13 montre que ce signal est transmis par une ligne 121 à un circuit 120 de commande de mise en séquence d'écritures Un signal similaire IWBE\ est transmis par une ligne 122 à ce même circuit 120 pour indiquer quand le tampon d'écriture
interne est vide.
L'emploi de tampons d'écriture et l'utilisa-
tion simultanée d'un système de surveillance à l'aide de
mémoires caches posent un problème Il s'agit de l'or-
donnancement ou de la mise en séquence des données à introduire en mémoire Le problème se pose parce que, du point de vue d'un observateur extérieur, l'accès à un cache surveillant ou utilisé pour la surveillance (par un "autre" processeur), est équivalent à un accès en mémoire centrale D'un autre côté, une donnée dans les tampons d'écriture (donnée en attente d'être introduite ou inscrite en mémoire centrale), n'est pas perçue comme une actualisation de la mémoire centrale Par consé- quent, tout cache surveillant combiné à des tampons d'écriture, peut occasionner un problème de séquencement de l'accès en mémoire Ce problème devient plus aigu dans un protocole de réécriture puisque des écritures
consécutives aggravent les difficultés.
Afin d'y remédier, l'invention apporte deux modes d'ordonnancement différents pour les écritures.
L'un est appelé le mode d'ordonnancement faible et l'autre est appelé le mode d'ordonnancement fort (MOF).15 Le processeur est bloqué au mode d'ordonnancement fort si la ligne pour le signal EWBE\ est active au cours des trois derniers cycles d'horloge de la période de remise à l'état initial, sinon le mode d'ordonnancement faible est appliqué Le changement de mode nécessite la remise à l'état initial Un bit MOF est placé dans un registre de gestion interne afin que le logiciel puisse contrôler quel mode d'ordonnancement est utilisé Lorsqu'on se reporte à la figure 13, le circuit 120 reçoit le signal de remise à l'état initial et examine la ligne 88 ( 121) pendant la période de remise à l'état initial pour déterminer si le mode d'ordonnancement fort ou le mode d'ordonnancement faible est sélectionné. Dans le mode d'ordonnancement faible, les écritures en cache sont permises, même s'il y a des données dans les tampons Quand une ligne modifiée est éliminée du cache de données, l'unité de traitement examine les cycles d'écriture en attente dans le tampon
d'écriture sur la présence éventuelle de données asso-
ciées à la ligne en question Si une telle donnée est trouvée, elle est invalidée Par conséquent, dans le mode d'ordonnancement faible, la ligne modifiée contient
la donnée en attente d'écriture et une double mémorisa-
tion est empêchée 'Comme on le verra dans ce qui suit, ceci est contraire au fonctionnement dans le mode
d'ordonnancement fort.
Lorsqu'on se reporte à la figure 11, les pavés 102 à 107 illustrent le fonctionnement général pendant
le mode d'ordonnancement fort On suppose, pour com-
mencer, qu'un processeur ou, plus exactement, son unité de traitement UT) demande un cycle d'écriture, ainsi que l'indique le pavé 102 On suppose en plus qu'un échec se produise dans la mémoire cache de ce processeur, comme le montre le pavé 103 On suppose ensuite que la donnée soit inscrite dans le tampon externe 78, comme le montre le pavé 105 Dans ces conditions, le signal EWBE\ est au niveau haut On suppose en plus, comme l'indique le pavé 106, que le même processeur ou un autre processeur demande un cycle d'écriture et qu'une correspondance
soit trouvée dans sa mémoire cache, ainsi que l'in-
diquent les pavés 106 et 107 Lorsque la correspondance est trouvée, le processeur détermine si oui ou non il y a une donnée dans le tampon d'écriture externe en explorant le signal EWBE\ et il détermine en outre si oui ou non une donnée est présente dans son tampon d'écriture interne en explorant le signal IWBE\, ainsi que le montre le pavé 108 Si chacun de ces signaux est au niveau haut, comme c'est le cas dans les conditions décrites, le processeur est arrêté, comme indiqué dans le pavé 109 par "BLOQUER PU" La mémoire cache n'est actualisée que lorsque toutes les données provenant du tampon d'écriture externe et du tampon d'écriture interne ont été inscrites en mémoire centrale, comme indiqué par le pavé 110 Si les tampons interne et externe sont vides, le cache peut être actualisé, ainsi
que le montre le pavé 111.
Tous les tampons doivent être vides avant que l'écriture demandée ne produise l'actualisation du cache Le contrôle interne est effectué puisqu'une
donnée à l'état "MI' dans le cache peut être éliminée de ce dernier et transférée en mémoire centrale avant qu'une écriture antérieure associée à un échec n'at- 5 teigne le tampon d'écriture externe.
Ainsi qu'il a été mentionné, l'actualisation du cache liée à la correspondance indiquée dans le pavé 107, n'est opérée par une écriture dans le cache qu'une fois les tampons vides et, en plus, la donnée associée à 1 Q cette correspondance stockée en sécurité en mémoire externe Cette façon de procéder a pour but d'éviter l'invalidation de la ligne pendant le temps o le
processeur attend le vidage des tampons d'écriture.
On prend l'exemple suivant On suppose pour commencer que les tampons d'écriture soient vides Une ligne de données dans l'une des mémoires caches présente l'état "M' et son repère virtuel présente l'état "I" Un premier cycle d'écriture rencontre une correspondance dans le repère physique de cette ligne, de sorte que le cache de données est actualisé et que la donnée est
également placée sur le bus externe On suppose mainte-
nant que pour un deuxième cycle d'écriture, une corres-
pondance soit trouvée pour cette ligne modifiée; la donnée n'est cependant pas introduite dans la mémoire
cache puisqu'elle doit d'abord être inscrite dans la mémoire externe afin d'assurer un ordonnancement fort.
On suppose maintenant qu'une correspondance soit trouvée sur la ligne modifiée par suite d'une surveillance, ce qui a pour effet que la ligne est éliminée du cache de30 données et transférée à la mémoire externe, "sautant" ainsi les deux cycles d'écriture en attente mentionnés précédemment La ligne est réécrite avec la première donnée à inscrire, mais sans la deuxième donnée à inscrire, et l'introduction dans le cache de données est invalidée La donnée associée à la première écriture est identifiée comme une double mémorisation et la demande est abandonnée La seconde demande d'écriture est identifiée comme une nouvelle mémorisation et exécutée après l'élimination de la ligne La donnée associée à la seconde écriture continue la recherche dans le cache de données et, comme la ligne est à présent à l'état invalide, la demande interne est abandonnée après que
l'écriture externe est terminée.
Sur la figure 13, le contour du processeur est indiqué par la ligne 125 Les bus d'adresses et de données sont désignés par 130 Comme mentionné, le signal EWBE\ est appliqué au circuit 120 par les lignes 88 et 121 et le signal IWBE\, indiquant que le tampon d'écriture interne est vide, est appliqué par la ligne 122 au circuit 120 Celui-ci reçoit en outre un signal d'entrée pour indiquer qu'une correspondance est trouvée dans la mémoire cache et un signal pour indiquer un cycle d'écriture Si l'ordonnancement fort a été choisi
et une correspondance est trouvée pour un cycle d'écri-
ture alors que les tampons ne sont pas vides, l'unité de traitement 15 est bloquée, ce qui est indiqué par le signal sur la ligne 124 Ainsi qu'il a été décrit précédemment, une fois que les tampons sont vides, le
circuit 120 libère l'unité de traitement 15 et l'écri-
ture dans la mémoire cache est permise.
Ainsi ont été décrits une mémoire cache perfectionnée et des circuits associés qui sont parti-
culièrement utiles dans un microprocesseur dont la mémoire cache, l'unité de traitement et les unités qui s'y rapportent sont formées sur un seul substrat.

Claims (5)

REVENDICATIONS
1 Mémoire cache destinée à un processeur numé- rique possédant une unité de traitement ( 15) et une unité de traduction ( 20) pour convertir des adresses 5 virtuelles venant de l'unité de traitement en adresses physiques, caractérisée en ce qu'elle comprend une section de rangement de repères d'adresses virtuelles ( 22) connectée pour recevoir des zones de repère d'adresses virtuelles de l'unité de traitement ( 15) afin de permettre l'accès à une section de mémorisation de données ( 23) si une correspondance est trouvée pour des zones de repère d'adresses virtuelles dans la section de rangement de repères d'adresses virtuelles ( 22), de même qu'une section de rangement de repères d'adresses15 physiques ( 21) connectée pour recevoir des zones de repère d'adresses physiques de l'unité de traduction ( 20) afin de permettre l'accès à la section de mémori- sation de données ( 23) si une correspondance est trouvée
dans la section de rangement de repères d'adresses20 physiques ( 21).
2 Mémoire cache selon la revendication 1, dans laquelle une corrélation est prévue entre la section de rangement de repères d'adresses virtuelles ( 22) et la section de rangement de repères d'adresses physiques25 ( 21), corrélation qui est telle que lorsqu'une corres- pondance est trouvée dans la section de rangement de
repères d'adresses physiques, un emplacement corres- pondant est identifié dans la section de rangement de repères d'adresses virtuelles.30 3 Mémoire cache selon la revendication 2, comportant un moyen pour connecter la section de range-
ment de repères d'adresses physiques en vue de la réception par cette section de zones de repère d'adresses physiques d'un bus d'adresses ( 25) externe au35 processeur.
4 Mémoire cache selon la revendication 2, dans laquelle la section de rangement de repères d'adresses physiques ( 21) comporte ou forme un système de mémoire à double accès. 5 5 Mémoire cache selon la revendication 1, dans laquelle, lorsqu'aucune correspondance n'est trouvée dans la section de rangement de repères d'adresses virtuelles ( 22) pour une zone de repère d'adresse virtuelle venant de l'unité de traitement ( 15) et10 lorsque cet échec est suivi d'une correspondance trouvée dans la section de rangement de repères d'adresses physiques ( 21) pour une zone de repère d'adresse phy- sique correspondant à ladite zone de repère d'adresse virtuelle venant de l'unité de traitement, après que15 cette zone de repère d'adresse virtuelle a été traduite par l'unité de traduction ( 20), un emplacement dans la section de rangement de repères d'adresses virtuelles ( 22) correspondant à l'emplacement dans la section de rangement de repères d'adresses physiques ( 21) o cette correspondance a été trouvée, est actualisé au moyen de la zone de repère d'adresse virtuelle pour laquelle
aucune correspondance n'a été trouvée dans la section de repères d'adresses virtuelles. 6 Mémoire cache destinée à un processeur numé-
rique possédant une unité de traitement ( 15) et une unité de traduction ( 20) pour convertir des adresses virtuelles provenant de cette unité de traitement en adresses physiques, caractérisée en ce qu'elle comprend une section de rangement de repères d'adresses vir-30 tuelles ( 22) connectée pour recevoir des zones de repère d'adresses virtuelles de l'unité de traitement ( 15) afin de permettre l'accès à une section de mémorisation de données ( 23) si une correspondance est trouvée dans cette section de rangement de repères d'adresses vir-35 tuelles, de même qu'une section de rangement de repères d'adresses physiques ( 21) connectée pour recevoir des zones de repère d'adresses physiques de l'unité de traduction ( 20) afin de permettre l'accès à la section de mémorisation de données ( 23) si une correspondance est trouvée dans cette section de rangement de repères5 d'adresses physiques, la section de rangement de repères d'adresses virtuelles ( 22) et la section de rangement de repères d'adresses physiques ( 21) étant organisées de manière que lorsqu'une correspondance est trouvée dans la section de rangement de repères d'adresses physiques,10 un emplacement correspondant est identifié dans la section de rangement de repères d'adresses virtuelles, la section de rangement de repères d'adresses virtuelles ( 22) étant capable de recevoir les zones de repère d'adresses venant de l'unité de traitement ( 15) pendant que la section de rangement de repères d'adresses physiques ( 21) reçoit des zones de repère d'adresses physiques provenant d'un bus d'adresses ( 25 > externe au processeur.
7 Mémoire cache selon la revendication 6, dans laquelle, lorsqu'aucune correspondance n'est trouvée dans la section de rangement de repères d'adresses
virtuelles ( 22) pour une zone de repère d'adresse virtuelle venant de l'unité de traitement ( 15 > et lorsque cet échec est suivi d'une correspondance trouvée25 dans la section de rangement de repères d'adresses physiques ( 21) pour une zone de repère d'adresse phy-
sique correspondant à ladite zone de repère d'adresse virtuelle venant de l'unité de traitement, après que cette zone de repère d'adresse virtuelle a été traduite30 par l'unité de traduction ( 20), un emplacement dans la section de rangement de repères d'adresses virtuelles ( 22) correspondant à l'emplacement dans la section de rangement de repères d'adresses physiques ( 21) o cette correspondance a été trouvée, est actualisé au moyen de35 la zone de repère d'adresse virtuelle pour laquelle aucune correspondance n'a été trouvée dans la section de
repères d'adresses virtuelles.
8 Mémoire cache selon la revendication 7,dans laquelle la section de rangement de repères d'adresses physiques ( 21) comporte ou forme un système de mémoire à
double accès.
FR9212026A 1991-10-11 1992-10-09 Memoire cache pour processeur numerique a traduction d'adresses virtuelles en adresses reelles. Granted FR2682507A1 (fr)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US77776391A 1991-10-11 1991-10-11

Publications (2)

Publication Number Publication Date
FR2682507A1 true FR2682507A1 (fr) 1993-04-16
FR2682507B1 FR2682507B1 (fr) 1994-12-16

Family

ID=25111185

Family Applications (1)

Application Number Title Priority Date Filing Date
FR9212026A Granted FR2682507A1 (fr) 1991-10-11 1992-10-09 Memoire cache pour processeur numerique a traduction d'adresses virtuelles en adresses reelles.

Country Status (4)

Country Link
US (1) US5717898A (fr)
JP (1) JPH05204756A (fr)
FR (1) FR2682507A1 (fr)
GB (1) GB2260429B (fr)

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69434669T2 (de) * 1993-10-29 2006-10-12 Advanced Micro Devices, Inc., Sunnyvale Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge
US5689672A (en) * 1993-10-29 1997-11-18 Advanced Micro Devices, Inc. Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions
EP0651332B1 (fr) 1993-10-29 2001-07-18 Advanced Micro Devices, Inc. Antémémoire de microprocesseur à adressage linéaire
US5737550A (en) * 1995-03-28 1998-04-07 Advanced Micro Devices, Inc. Cache memory to processor bus interface and method thereof
KR970029072A (ko) * 1995-11-17 1997-06-26 김주용 이중 디렉토리 가상 캐쉬 및 그 제어 방법
US5752265A (en) * 1996-06-13 1998-05-12 Compaq Computer Corporation Memory accessing in a multi-processor system using snooping
US5875469A (en) * 1996-08-26 1999-02-23 International Business Machines Corporation Apparatus and method of snooping processors and look-aside caches
US7330870B1 (en) * 1997-02-11 2008-02-12 International Business Machines Corporation Streaming computer system and method with multi-version protocol compatibility
US7251617B1 (en) * 1998-12-28 2007-07-31 Walker Digital, Llc Method and apparatus for managing subscriptions
US6370632B1 (en) 1997-11-18 2002-04-09 Intrinsity, Inc. Method and apparatus that enforces a regional memory model in hierarchical memory systems
US6260131B1 (en) * 1997-11-18 2001-07-10 Intrinsity, Inc. Method and apparatus for TLB memory ordering
US6247098B1 (en) * 1998-02-17 2001-06-12 International Business Machines Corporation Cache coherency protocol with selectively implemented tagged state
US6480952B2 (en) 1998-05-26 2002-11-12 Advanced Micro Devices, Inc. Emulation coprocessor
US6308255B1 (en) * 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
US6349366B1 (en) * 1998-06-18 2002-02-19 Compaq Information Technologies Group, L.P. Method and apparatus for developing multiprocessor cache control protocols using a memory management system generating atomic probe commands and system data control response commands
US6668317B1 (en) * 1999-08-31 2003-12-23 Intel Corporation Microengine for parallel processor architecture
US6606704B1 (en) * 1999-08-31 2003-08-12 Intel Corporation Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode
US6983350B1 (en) * 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US6427196B1 (en) * 1999-08-31 2002-07-30 Intel Corporation SRAM controller for parallel processor architecture including address and command queue and arbiter
US7191309B1 (en) 1999-09-01 2007-03-13 Intel Corporation Double shift instruction for micro engine used in multithreaded parallel processor architecture
WO2001016702A1 (fr) 1999-09-01 2001-03-08 Intel Corporation Ensemble de registres utilise dans une architecture de processeurs multifiliere paralleles
US6598128B1 (en) * 1999-10-01 2003-07-22 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6484238B1 (en) 1999-12-20 2002-11-19 Hewlett-Packard Company Apparatus and method for detecting snoop hits on victim lines issued to a higher level cache
US6532509B1 (en) 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US6694380B1 (en) 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US7620702B1 (en) 1999-12-28 2009-11-17 Intel Corporation Providing real-time control data for a network processor
US6625654B1 (en) * 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
US6307789B1 (en) * 1999-12-28 2001-10-23 Intel Corporation Scratchpad memory
US6631430B1 (en) * 1999-12-28 2003-10-07 Intel Corporation Optimizations to receive packet status from fifo bus
US6661794B1 (en) * 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US6976095B1 (en) 1999-12-30 2005-12-13 Intel Corporation Port blocking technique for maintaining receive packet ordering for a multiple ethernet port switch
US6952824B1 (en) 1999-12-30 2005-10-04 Intel Corporation Multi-threaded sequenced receive for fast network port stream of packets
US7480706B1 (en) 1999-12-30 2009-01-20 Intel Corporation Multi-threaded round-robin receive for fast network port
US6584522B1 (en) 1999-12-30 2003-06-24 Intel Corporation Communication between processors
US6631462B1 (en) * 2000-01-05 2003-10-07 Intel Corporation Memory shared between processing threads
US6356983B1 (en) 2000-07-25 2002-03-12 Src Computers, Inc. System and method providing cache coherency and atomic memory operations in a multiprocessor computer architecture
US7681018B2 (en) * 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US7020871B2 (en) * 2000-12-21 2006-03-28 Intel Corporation Breakpoint method for parallel hardware threads in multithreaded processor
US6615337B1 (en) * 2001-08-09 2003-09-02 Advanced Micro Devices, Inc. Method and apparatus for maintaining coherency in a translation lookaside buffer
US7487505B2 (en) 2001-08-27 2009-02-03 Intel Corporation Multithreaded microprocessor with register allocation based on number of active threads
US6868476B2 (en) * 2001-08-27 2005-03-15 Intel Corporation Software controlled content addressable memory in a general purpose execution datapath
US7225281B2 (en) 2001-08-27 2007-05-29 Intel Corporation Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms
US7216204B2 (en) 2001-08-27 2007-05-08 Intel Corporation Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment
US7126952B2 (en) * 2001-09-28 2006-10-24 Intel Corporation Multiprotocol decapsulation/encapsulation control structure and packet protocol conversion method
US7158964B2 (en) * 2001-12-12 2007-01-02 Intel Corporation Queue management
US7107413B2 (en) 2001-12-17 2006-09-12 Intel Corporation Write queue descriptor count instruction for high speed queuing
US7269179B2 (en) 2001-12-18 2007-09-11 Intel Corporation Control mechanisms for enqueue and dequeue operations in a pipelined network processor
US7895239B2 (en) 2002-01-04 2011-02-22 Intel Corporation Queue arrays in network devices
US7181573B2 (en) 2002-01-07 2007-02-20 Intel Corporation Queue array caching in network devices
US6934951B2 (en) * 2002-01-17 2005-08-23 Intel Corporation Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section
US7181594B2 (en) * 2002-01-25 2007-02-20 Intel Corporation Context pipelines
US7610451B2 (en) 2002-01-25 2009-10-27 Intel Corporation Data transfer mechanism using unidirectional pull bus and push bus
US7149226B2 (en) 2002-02-01 2006-12-12 Intel Corporation Processing data packets
US7471688B2 (en) * 2002-06-18 2008-12-30 Intel Corporation Scheduling system for transmission of cells to ATM virtual circuits and DSL ports
US7337275B2 (en) 2002-08-13 2008-02-26 Intel Corporation Free list and ring data structure management
US7352769B2 (en) 2002-09-12 2008-04-01 Intel Corporation Multiple calendar schedule reservation structure and method
US7433307B2 (en) * 2002-11-05 2008-10-07 Intel Corporation Flow control in a network environment
US6941438B2 (en) 2003-01-10 2005-09-06 Intel Corporation Memory interleaving
US7139876B2 (en) 2003-01-16 2006-11-21 Ip-First, Llc Microprocessor and apparatus for performing fast speculative pop operation from a stack memory cache
US7136990B2 (en) 2003-01-16 2006-11-14 Ip-First, Llc. Fast POP operation from RAM cache using cache row value stack
US7139877B2 (en) 2003-01-16 2006-11-21 Ip-First, Llc Microprocessor and apparatus for performing speculative load operation from a stack memory cache
US7191291B2 (en) 2003-01-16 2007-03-13 Ip-First, Llc Microprocessor with variable latency stack cache
US7174405B1 (en) * 2003-06-06 2007-02-06 Cisco Technology, Inc. Method and system for replacing a read-modify-write operation with an atomic set-bits or clear-bits operation
US7443836B2 (en) 2003-06-16 2008-10-28 Intel Corporation Processing a data packet
US7213099B2 (en) * 2003-12-30 2007-05-01 Intel Corporation Method and apparatus utilizing non-uniformly distributed DRAM configurations and to detect in-range memory address matches
US7206915B2 (en) * 2004-06-03 2007-04-17 Emc Corp Virtual space manager for computer having a physical address extension feature
US7805588B2 (en) * 2005-10-20 2010-09-28 Qualcomm Incorporated Caching memory attribute indicators with cached memory data field
US7627734B2 (en) * 2006-01-13 2009-12-01 Broadcom Corporation Virtual on-chip memory
WO2007096980A1 (fr) * 2006-02-24 2007-08-30 Fujitsu Limited Dispositif et procede de commande d'enregistrement
GB2442984B (en) * 2006-10-17 2011-04-06 Advanced Risc Mach Ltd Handling of write access requests to shared memory in a data processing apparatus
KR100903381B1 (ko) * 2006-11-24 2009-06-23 주식회사 하이닉스반도체 반도체 메모리 장치 및 그의 구동 방법
KR20080047027A (ko) * 2006-11-24 2008-05-28 주식회사 하이닉스반도체 반도체 메모리 장치 및 그 구동 방법
US8135916B1 (en) * 2008-04-25 2012-03-13 Marvell International Ltd. Method and apparatus for hardware-configurable multi-policy coherence protocol
DE112016007516T5 (de) * 2016-12-12 2019-10-02 Intel Corporation Vorrichtungen und verfahren für eine prozessorarchitektur
US10282296B2 (en) 2016-12-12 2019-05-07 Intel Corporation Zeroing a cache line

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0232526A2 (fr) * 1985-12-19 1987-08-19 Bull HN Information Systems Inc. Système d'antémémoire organisée en pages avec adressage virtuel
EP0365117A2 (fr) * 1988-09-30 1990-04-25 International Computers Limited Appareil de traitement de données avec antémémoire
EP0439952A2 (fr) * 1990-01-31 1991-08-07 STMicroelectronics, Inc. Mémoire d'étiquettes d'antémémoire à double porte

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3723976A (en) * 1972-01-20 1973-03-27 Ibm Memory system with logical and real addressing
US4484267A (en) * 1981-12-30 1984-11-20 International Business Machines Corporation Cache sharing control in a multiprocessor
US4612612A (en) * 1983-08-30 1986-09-16 Amdahl Corporation Virtually addressed cache
US4622631B1 (en) * 1983-12-30 1996-04-09 Recognition Int Inc Data processing system having a data coherence solution
DE3586524T2 (de) * 1984-10-31 1993-01-21 Texas Instruments Inc Durch beide, physikalische und virtuelle addressen, addressierbarer cache-speicher.
US4991081A (en) * 1984-10-31 1991-02-05 Texas Instruments Incorporated Cache memory addressable by both physical and virtual addresses
US4847804A (en) * 1985-02-05 1989-07-11 Digital Equipment Corporation Apparatus and method for data copy consistency in a multi-cache data processing unit
US4755930A (en) * 1985-06-27 1988-07-05 Encore Computer Corporation Hierarchical cache memory system and method
GB8728494D0 (en) * 1987-12-05 1988-01-13 Int Computers Ltd Multi-cache data storage system
US5113510A (en) * 1987-12-22 1992-05-12 Thinking Machines Corporation Method and apparatus for operating a cache memory in a multi-processor
US5025366A (en) * 1988-01-20 1991-06-18 Advanced Micro Devices, Inc. Organization of an integrated cache unit for flexible usage in cache system design
EP0343567A3 (fr) * 1988-05-25 1991-01-09 Hitachi, Ltd. Système multiprocesseur et dispositif d'antémémoire pour y être utilisé
GB8814077D0 (en) * 1988-06-14 1988-07-20 Int Computers Ltd Data memory system
US4939641A (en) * 1988-06-30 1990-07-03 Wang Laboratories, Inc. Multi-processor system with cache memories
US5148533A (en) * 1989-01-05 1992-09-15 Bull Hn Information Systems Inc. Apparatus and method for data group coherency in a tightly coupled data processing system with plural execution and data cache units
GB2260628A (en) * 1991-10-11 1993-04-21 Intel Corp Line buffer for cache memory
US5379396A (en) * 1991-10-11 1995-01-03 Intel Corporation Write ordering for microprocessor depending on cache hit and write buffer content
US5301298A (en) * 1991-10-11 1994-04-05 Intel Corporation Processor for multiple cache coherent protocols

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0232526A2 (fr) * 1985-12-19 1987-08-19 Bull HN Information Systems Inc. Système d'antémémoire organisée en pages avec adressage virtuel
EP0365117A2 (fr) * 1988-09-30 1990-04-25 International Computers Limited Appareil de traitement de données avec antémémoire
EP0439952A2 (fr) * 1990-01-31 1991-08-07 STMicroelectronics, Inc. Mémoire d'étiquettes d'antémémoire à double porte

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ELEKTRO/87 AND MINI MICRO NORTHEAST CONFERENCE RECORD vol. 12/3, 1987, NEW YORK US pages 1 - 6 P. SWEAZEY ET AL. 'Cache memory requirements in RISC computers' *

Also Published As

Publication number Publication date
JPH05204756A (ja) 1993-08-13
GB9216500D0 (en) 1992-09-16
GB2260429B (en) 1995-05-24
FR2682507B1 (fr) 1994-12-16
US5717898A (en) 1998-02-10
GB2260429A (en) 1993-04-14

Similar Documents

Publication Publication Date Title
FR2682507A1 (fr) Memoire cache pour processeur numerique a traduction d'adresses virtuelles en adresses reelles.
FR2682506A1 (fr) Processeur a memoire cache utilisant des adresses a zone de repere et zone de decalage ainsi que memoire cache pour processeurs de ce type.
FR2677472A1 (fr) Unite de controle pour memoire cache de second niveau.
FR2583540A1 (fr) Gestion de memoire pour systeme a microprocesseur.
FR2881540A1 (fr) Procede et systeme destines a empecher que des lignes de memoire cache soient videes jusqu'a ce que les donnees stockees dans celles-ci ne soient utilisees.
FR2667706A1 (fr) Antememoire hierarchique a circuits integres.
FR2668274A1 (fr) Circuit integre a securite d'acces amelioree.
EP3259674B1 (fr) Circuit dram muni d'un processeur integre
EP1712976B1 (fr) Protection de données d'une mémoire associée à un microprocesseur
EP0006478B1 (fr) Dispositif programmable de verrouillage de signaux de commande dans un système de traitement de données
EP0392932B1 (fr) Procédé et dispositif pour accélérer les accès mémoire, utilisant un algorithme LRU modifié
FR2634919A1 (fr) Interface de bus pour microprocesseur
FR2472232A1 (fr) Dispositif et procede d'effacement d'antememoire
EP0228329B1 (fr) Dispositif électronique formant mémoire stable rapide perfectionnée
EP0837396A1 (fr) Opération atomique sur mémoire distante et dispositif permettant d'effectuer cette opération
FR2682783A1 (fr) Maintien de coherence de caches.
EP0435718A1 (fr) Processeur à plusieurs unités microprogrammées avec mécanisme d'exécution anticipée des instructions
FR2645987A1 (fr) Dispositif d'acceleration des acces memoire dans un systeme informatique
EP0838053B1 (fr) Procede et dispositif permettant a un programme fige de pouvoir evoluer
EP1168184A1 (fr) Microprocesseur sécurisé comprenant un systeme d'attribution de droits a des librairies
FR3051574A1 (fr) Gestion du stockage dans une memoire flash
FR2596890A1 (fr) Systeme de traitement de l'information avec comparaison anticipee de la programmation
FR2707776A1 (fr) Procédé de gestion de mémoires d'un système informatique, système informatique mémoire et support d'enregistrement mettant en Óoeuvre le procédé.
FR2674044A1 (fr) Agencement pour predire une adresse d'instruction resultant d'un branchement dans un systeme de traitement numerique des donnees.
EP0908828B1 (fr) Procédé et système contrôle d'accès partagés à une mémoire vive

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20110630