Brevet FR2677472A1 — publié le 19921211

DOMAINE DE L'INVENTION La présente invention concerne de manière générale le domaine des microprocesseurs et plus spé- cialement les antémémoires de second niveau qui repré- sentent le niveau, dans l'hiérarchie des mémoires d'un système informatique, se trouvant entre le cache de l'unité centrale (UC) et la mémoire centrale. ARRIERE-PLAN DE L'INVENTION Historiquement, les demandes adressées à la technologie des microprocesseurs se sont accrues plus vite que les technologies logistiques d'assistance ou de support, matérialisées par des mémoires vives dynamiques (DRAM) et des logiques transistor-transistor program- mables par exemple Les tendances récentes agravent encore cette discordance des manières suivantes Pre- mièrement, les fréquences de base des microprocesseurs s'approchent rapidement et dépassent dans certains cas les fréquences de base des logiques d'assistance stan- dards De plus, le nombre de périodes d'horloge par période d'instruction diminue rapidement, ce qui impose des exigences très sévères quant à la largeur de bande des mémoires Des concepts plus récents, tels que les architectures RISC (à jeu d'instructions réduit) exigent toujours davantage de largeur de bande des mémoires pour accomplir la même quantité de travail La demande de largeur de bande pour les mémoires a été augmentée plus encore par le besoin d'accès direct à la mémoire (DMA) par des dispositifs tels que des coprocesseurs et des systèmes à processeurs multiples Enfin, l'accélération de la vitesse à laquelle de nouveaux dispositifs sont mis sur le marché, exacerbère encore tout ce qui vient d'être indiqué. Ces tendances ont fait apparaître deux sérieux goulots d'étranglement pour la performance, qui conti- nuent à influencer la façon dont les systèmes sont conçus La largeur de bande des mémoires, en tant que limiteur de performance, a déjà imposé l'emploi d'anté- mémoires en de nombreux systèmes de microprocesseurs A titre d'exemple, l'emploi d'antémémoires est courant dans la génération des microprocesseurs 80386 TM fabri- qués par Intel Corporation De même, les processeurs d'Intel 80486 TM et i 860 TM (désignés également par i 860 XPTM) comportent des caches sur puce pour améliorer la performance Il est évident que d'autres changements dans l'hiérarchie des mémoires (cache primaire, cache no secondaire, architectures DRAM, et ainsi de suite) seront nécessaires pour soutenir l'augmentation de la performance dans les générations futures (Intel 80386, 80486, i 860 et i 860 XPTM sont tous des marques de com- merce de Intel Corporation). Un autre goulot d'étranglement pour la per- formance sont la fréquence de base et les temps d'en- trée/sortie (E/S) Il s'est révélé que l'investissement nécessaire pour poursuivre l'augmentation de la fré- quence de base des microprocesseurs (et l'adaptation résultante des temps d'E/S) ne peut pas être étendue à tous les composants du système Même si l'investissement était financièrement possible, l'impact produit sur l'organisation par la coordination avec éventuellement de nombreux fournisseurs, pourrait facilement rendre une telle architecture noncompétitive Ces facteurs ont déjà imposé l'emploi d'interfaces asynchrones pour isoler le problème des échelles de fréquences dans un sous-ensemble des composants du système Il est clair que des interfaces d'UC de haute vitesse devront être conçues autour d'une spécification contrôlée toujours plus sévèrement afin d'atteindre le niveau de perfor- mance désiré. En tant qu'exemple de l'art antérieur, la mémoire cache SRAM (à mémoire vive statique) du circuit intégré Intel 80385, est typique des approches anté- rieures Pour commencer, l'un des principaux Inconvénients d'un système de mémoire SRAM comme celui du 80385, est son incapacité de prendre en charge des opérations simultanées sur l'interface d'UC (CPU) et sur l'interface de mémoire Plus exactement, pour chaque accès au système de lecture/écriture en mémoire, seule- ment un élément d'information est transféré Cela signifie que dans un couplage au 30486 par exemple, une opération de lecture d'une ligne de cache nécessite quatre transferts séparés En d'autres mots, il faut accéder au système SRAM de façon répétée pour obtenir chaque élément de la ligne du cache, ce qui restreint sévèrement les périodes d'horloge disponibles pour l'interface de mémoire En variante, on pourrait uti- liser une batterie imposante de SRAM, ensemble avec des multiplexeurs externes correspondants, mais seulement au prix d'une complexité et d'un coût accrus. Un autre inconvénient commun des antémémoires de l'art antérieur est que chaque transfert doit être synchronisé Autrement dit, lorsqu'une information arrive au cache en provenance du bus (de) mémoire, avant que l'information en question ne puisse être transférée au bus de l'UC, une prise de contact doit avoir lieu avec le microprocesseur Ce processus doit être répété pour le segment d'information suivant à introduire à partir du bus mémoire Il est à noter que ce qui précède est simplement une autre façon pour indiquer que le transfert de données entre les bus de la mémoire et de l'UC nécessite des opérations synchrones Un tel fonc- tionnement représente un handicap sérieux pour la performance du système informatique lorsque les fré- quences de base de 1 VUC augmentent. La présente invention apporte un contrôleur de cache intégré, employé dans un système de mémoire cache de second niveau pour systèmes à processeurs multiples. Il est destiné à fonctionner en coopération avec une unité centrale telle qu'un processeur Intel 80486 ou R O XPTM, avec une mémoire cache comme celle décrite dans une demande en instances en même temps et intitulée "Integrated Cache SRAM Data Path" et avec un contrôleur de bus mémoire (CBM) pour adapter le contrôleur du cache de second niveau à une gamme étendue de protocoles de bus mémoire comme ceux décrits dans une demande en instances en même temps et intitulée "Second Level Memory Bus Controller Unit", demandes qui ont été cédées au cessionnaire de la présente invention.10 SOMMAIRE DE L'INVENTION L'un des buts de la présente invention est donc de procurer un contrôleur de cache, une unité de mémoire cache et un contrôleur de bus mémoire, fonc- tionnant en coopération avec une UC associée, pour vaincre les inconvénients mentionnés dans ce qui précède dans le but d'améliorer la performance globale d'un système informatique. Un autre but de l'invention est de procurer une passerelle entre l'UC et le bus de mémoire centrale par la prise en charge de tous les accès à l'UC suscep- tibles d'être gérés par la mémoire cache locale, de manière à réduire ainsi le trafic sur le bus mémoire et la largeur de bande nécessaire pour le bus mémoire. Un autre but de l'invention est de créer un découplage entre les bus de l'UC et de la mémoire centrale afin de permettre à l'UC de fonctionner effi- cacement à des cadences plus élevées que celles nor- malement réalisables en passant par le bus de mémoire centrale. Un autre but de l'invention est d'apporter un système constituant l'élément de contrôle principal, chargé également de l'affectation d'étiquettes et d'états de lignes. Un autre but de l'invention est de permettre la gestion de l'accès de l'UC à la mémoire cache avec de- S états d'attente z Gro en assurant le découplage précité par rapport à 1 'UC. "in autre but de l'invention est de traiter c.nmplètement les demandes du bus de 1 UC et d'assurer la B coordination avec le contrôleur du bus mémoire lorsqu'un acces nécessite le bus mémoire. Un autre but de l'invention est de contrôler les chemins ou voies de données de la mémoire cache à la Fois pour des correspondances ou présences et pour des no discordances ou absences de la donnée recherchée dans l'antémémoire, afin d'alimenter 1 'UC en données cor- rectes découpées en partitions pour réduire à un minimum l'impact de temps critiques. Un autre but de l'invention est de commander dynamiquement le commutateur-sélecteur de voie de la mémoire cache sur la base de la prédiction selon la règle de la plus récemment utilisée (MRU) afin de diminuer le temps d'attente moyen de l'antémémoire pour 1 'UC. Un autre but de l'invention est de commander des opérations de surveillance du bus mémoire pendant que d'autres dispositifs utilisent le bus mémoire afin d'assurer la compatibilité des données dans un système à processeurs multiples Ceci ouvre la compatibilité du cache de second niveau, comme décrit dans le présent mémoire, aussi bien que celle d'un cache primaire intégré dans le dispositif formant l'unité centrale, sur la base du principe d'inclusion. Encore un autre but de l'invention est d'ap- pliquer l'adresse de cycle au cours d'un accès au bus mémoire et de fournir des états de cycle, des attributs de contrôle et des réponses au CBM afin de supporter une gamme étendue de protocoles de transfert au bus mémoire et de compatibilité de cache.35 Conformément à ces buts et d'autres buts encore de l'invention, on décrira ci- après un circuit intégré qui, selon un mode de réalisation, constitue un contrôleur pour un système à mémoire cache secondaire comprenant une unité centrale ou UC, un bus (d')UC, une mémoire cache associative à deux voies, un contrôleur de bus mémoire et une mémoire centrale avec son bus mémoire associé L'unité de contrôle de cache comprend en outre une interface de bus UC, un chemin d'adresse de bus mémoire avec loquet, une fil d'attente de bus mémoire, une interface de contrôleur de bus mémoire, un loquet de surveillance, un répertoire de cache et une interface de mémoire cache. COURTE DESCRIPTION DES DESSINS D'autres caractéristiques et avantages de l'invention ressortiront plus clairement de la descrip- tion qui va suivre d'exemples de réalisation préférés mais non limitatifs, ainsi que des dessins annexés, sur lesquels: la figure 1 est un schéma-bloc du sous- système de cache de base selon le mode de réalisation actuellement préféré de l'invention; la figure 2 est un schéma-bloc fonctionnel de l'unité de contrôle de cache intégrée; la figure 3 est un schéma-bloc des loquets d'adresse internes avec des détails du loquet d'adresse du bus mémoire; la figure 4 est un schéma-bloc détaillé du loquet de surveillance; la figure 5 montre en détail l'architecture du contrôleur de cache associatif à deux voies; la figure 6 montre la configuration des broches du contrôleur de caches; la figure 7 montre la correspondance entre les broches du contrôleur de cache et leurs emplacements physiques; la figure 8 montre la relation temporelle pour l'échantillonnage d'introduction de la configura- tion; la figure 9 montre les options de configu- ration disponibles pour être utilisées avec 1 'UC Intel 80496; la figure 10 définit la fonction des broches de l'interface du bus de l'UC; la figure Il définit le décodage par le contrôleur de bus mémoire (CBM) des cycles du contrôleur de cache; la figure 12 définit quelles lignes d'adresse du bus mémoire sont contrôlées par quel jeu de signaux de commande du contrôleur de cache; la figure 13 montre un diagramme d'états partiel du protocole de cohérence MESI; la figure 14 montre la table d'états de cycle de lecture pour le contrôleur de cache maître; la figure 15 montre la table d'états de cycle d'écriture pour le contrôleur de cache maître; la figure 16 montre la table d'états du contrôleur de cache pour la surveillance (sans demande d'invalidation); la figure 17 montre la table d'états de surveillance du contrôleur de cache (avec demande d'invalidation); la figure 18 montre la table d'états du cycle de synchronisation (SYNC); la figure 19 montre la table d'états du cycle de vidage (FLUSH); la figure 20 est un schéma-bloc plus dé- taillé du système à cache secondaire, avec en plus des circulations de commandes, d'adresses et de données; la figure 21 montre la relation entre des signaux d'attributs et de progression de cycle; a fi gure 22 montre la méthode à échantil- lonnage pour le déclenchement d'une surveillance; la figure 23 montre la méthode à horloge pour le déclenchement d'une surveillance; la figure 24 montre le mode de surveillance synchrone; la figure 25 montre la chronologie de surveillances sans invalidation: la figure 26 montre la chronologie de surveillances avec invalidation; la figure 27 montre la chronologie pour le mode de surveillance synchrone le plus rapide; la figure 28 montre la chronologie pour le mode de surveillance asynchrone le plus rapide; la figure 29 montre les secteurs de temps utilisés pour recouvrir des surveillances par des transferts de données; la figure 30 montre le blocage d'une sur- veillance par un signal BGT#; la figure 31 montre une surveillance ayant lieu avant la reconnaissance du signal BGT#; la figure 32 montre la progression d'un cycle de bus mémoire en termes de signaux d'entrée/ sortie du contrôleur de cache; la figure 33 montre la progression d'un cycle de bus mémoire pour des cycles de surveillance; la figure 34 montre la progression d'un cycle de bus mémoire avec surveillance au cours de cycles verrouillés (LOCK); la figure 35 montre la chronologie de surveillances au cours de cycles pseudo-verrouillés (PLOCK); la figure 36 montre les formes d'ondes en fonction du temps pour une correspondance ou présence de donnée à lire en cache secondaire; La figigure 37 montre les formes d'ondes en fonction du temos pour une discordance ou absence de donnée à lire susceptible d'avoir été mise en cache, avec remplacement d'une ligne modifiée lMl; la figure 38 montre les formes d'ondes en fonction du temps pour une absence de donnée à lire susceptible d'avoir été mise en cache, avec remplacement d'une ligne modifiée lMl; la figure 39 montre les formes d'ondes en fonction du temps pour une correspondance en écriture sur une ligne exclusive lEl ou modifiée lMI; la figure 40 montre les formes d'ondes en fonction du temps pour une discordance en écriture avec attribution sur une ligne modifiée lMI; et la figure 41 montre les formes d'ondes en fonction du temps pour une correspondance en surveil- lance sur une ligne modifiée lMl. Plan d'ensemble de la description du mode de réalisation préféré A Introduction B Aperçu global du système à cache secondaire C Architecture interne du contrôleur de cache25 D Broches à signaux d'entrée et de sortie D.1 Interface de bus UC D.2 Interface de contrôleur de bus mémoire D.3 Interface de bus mémoire D.4 Interface de mémoire cache E Protocole de compatibilité de cache E.1 Transitions d'état de base E.2 Transitions d'état supplémentaires E.3 Tables d'états F Chronologie de base des protocoles F 1 Attributs et progression de cycle F.2 Opérations de surveillance i 3 Règles d'interface du contrôleur de bus mémoire F.4 Verrouillage (LOCK#) F.5 Pseudo-verrouillage (PLOCK#) F.6 Cycles consécutifs F.7 Simultanéité d'accès aux bus UC/mémoire G Exemples de chronologie de cycles du contrôleur de cache secondaire. DESCRIPTION DU MODE DE REALISATION PREFERE A INTRODUCTION On décrira ci-après un circuit intégré cons- 1 D tituant un contrôleur pour un système à cache secon- daire Cette description contient de nombreux détails spécifiques, tels que des nombres spécifiques d'octets, bits, dispositifs, et ainsi de suite, afin de permettre la compréhension complète du mode de réalisation préféré de l'invention Il sera évident à l'homme de métier que l'invention peut être mise en oeuvre sans ces détails spécifiques De même, des circuits bien connus ont été représentés schématiquement sous la forme de blocs et non pas en détail pour éviter d'obscurcir l'invention inutilement. Au cours de la description de l'invention, 1 l sera fréquemment fait référence à l'emploi du contrôleur de cache objet de l'invention en combinaison avec certaines architectures d'UC spécifiques et/ou certains types spécifiques de microprocesseurs, tels que les microprocesseurs Intel & 0486 et i 860 XPTM Ces exécutions reflètent simplement le mode de mise en oeuvre actuel- lement préféré de l'invention Il va de soi que les concepts contenus dans l'invention sont applicables ou5 peuvent être étendus à d'autres types de processeurs et d'architectures. De plus, dans la description suivante de l'invention, il est fait référence à des noms de signaux particuliers au mode de réalisation actuellement préf é- ré Le texte contient une description de chacun de ces signaux La référence à ces noms de signaux spécifiques ne doit pas être considérée comme une limitation de l'esprit ou de la portée de l'invention. B Aperçu global du système à cache secondaire l O L'utilisation d'un cache de données est basée sur le principe de proximité Selon ce principe, s'il est fait référence à un article ou un élément d'infor- mation, il est vraisemblable qu'il en sera de nouveau question peu de temps après (ce qui correspond à la 1 S proximité dans le temps) De façon analogue, s'il est fait référence à un article ou un élément d'information, il est vraisemblable qu'il sera peu après question des articles ou éléments d'information qui lui sont voisins (ce qui correspond à la proximité dans l'espace) Donc, la raison fondamentale de l'emploi d'une mémoire cache est d'assurer l'accès facile à l'information utilisée fréquemment, de manière à accélérer ainsi la vitesse de traitement. La figure 1 représente un schéma-bloc d'un système à cache secondaire sur lequel est basée l'in- vention Ce système comprend une unité centrale ou UC (CPU) 10, constituée par un microprocesseur Intel 80486 ou i 860 XPTM dans le mode de réalisation actuellement préféré et une mémoire cache 13 qui, en combinaison avec 3 y un contrôleur de cache 12 et un contrôleur de bus mémoire (CMB) 11, forme une passerelle entre le bus d'UC 14 et le bus mémoire 15 Tous les accès à l'UC pouvant être gérés localement par le sous-système de cache comprenant les blocs 12 et 13, sont retirés du trafic sur le bus mémoire Donc, les cycles locaux (cycles d'UC qui ont trouvé une correspondance ou présence dans le i 2 c-e-qhe et ne nécessitent pas un cycle sur le bus mémoire) sont complètement invisibles au bus mémoire 15 Il en résulte une réduction de la largeur de bande du bus mémoire, ce qui est fréquemment nécessaire pour les systèmes à multiples traitements. Ainsi qu'il sera décrit plus en détail, une autre fonction importante du système à cache secondaire est d'assurer un découplage au niveau de la vitesse entre le bus d'UC 14 et le bus mémoire 15 Le système de la figure est optimisé pour gérer l'UC 10 avec des états d'attente zéro jusqu'à des fréquences très élevées (supérieures à 50 M Hz par exemple), tout en assurant le découplage nécessaire pour permettre l'exécution de cycles plus lents sur le bus mémoire. Le bus mémoire 15 possède typiquement une largeur de 32, 64 ou 128 bits A titre de comparaison, la largeur du bus de l'UC est de 32 bits si l'UC est constituée par un microprocesseur 80486 Donc, le système à cache secondaire selon la figure 1 supporte facilement des largeurs de bus mémoire égales ou supé- rieures à la largeur du bus de l'UC Des largeurs du bus mémoire inférieures à celle du bus d'UC, peuvent être supportées par l'emploi de tampons externes. Le contrôleur de cache 12 représente l'élément de commande principal du système à cache secondaire, il contient les étiquettes et les états de ligne et prend les décisions relatives aux accès, présences ou absences (sur la base de variations d'un protocole MESI) Le contrôleur 12 traite complètement les demandes de bus UC et agit en coordination avec le CBM 11 lorsqu'un accès demande le contrôle du bus mémoire 15 Le contrôleur 12 commande également les voies de données du cache à mémoire morte statique (SRAM) 13, à la fois pour les présences et les absences, afin de fournir les données 3 D correctes à 1 'UC Il ajoute dynamiquement des états d'attente sur la base d'un mécanisme de prédiction dit "le plus récemment utilisé" (MRU pour "most-recently- used") et de conflits d'accès Le mécanisme MRU utilise la proximité temporelle Plus exactement, la voie la plus récemment utilisée d'un jeu de voies sera très vraisemblablement utilisée de nouveau L'inverse de MRU, "le moins récemment utilisé" (LRU pour "least-recently- used") est employé pour choisir la voie à remplacer, pour la même raison Le contrôleur de cache 12 adresse aussi des demandes de cycle au CBM IL et fournit 1 X l'adresse au bus mémoire 15 pour des discordances ou absences en cache. Le contrôleur de cache 12 est également responsable de l'exécution d'opérations de surveillance du bus mémoire pendant que d'autres dispositifs uti- lisent le bus mémoire 15 Le terme surveillance désigne ici une opération par laquelle le contrôleur de cache 12 surveille le bus mémoire 15, utilisé en commun, pour déterminer si oui ou non d'autres dispositifs partageant (utilisant en commun) le bus mémoire 15 détiennent une copie de la ligne de cache à laquelle il est accédé Le contrôleur de cache 12 surveille à la fois pour le cache de second niveau et pour le cache primaire contenu dans l'UC 10, sur la base du principe de l'inclusion. La logique de commande du cache secondaire SRAM 13 assure deux fonctions clé La première consiste à fournir des adresses de salve à la fonction de multi- plexeur et de tampon de la SRAM 13 pour des transferts par salve Ceci est essentiel pour porter à un maximum la vitesse de transfert pour des opérations de salve parce que l'on élimine ainsi une lente interface sur puce externe La seconde est de suivre les cycles du bus UC 14 et d'exécuter des opérations internes anticipant une présence en cache Cette dernière capacité conduit à une réduction du temps d'accès diminuant autant que possible la complexité de la stratégie à la SRAM 13 par l'UC 10 par la subdivision des fonctions de recherche et de consultation du contrôleur 12 et de la SRAM 13. Comme le cache SRAM 13 et le contrôleur de cache 12 répondent tous deux aux cycles du bus UC 14, le contrôleur de cache 12 peut effectuer la recherche d'étiquette dans une RAM (mémoire vive) à étiquettes 31, en parallèle avec la recherche de l'information corres- pondante par le cache SRAM 13, au lieu d'opérer des recherches segmentaires, et informer à la fois l'UC 10 0 et la SARM 13 au dernier moment du résultat de la recherche d'étiquette La RAM à étiquettes 31 contient toute la capacité de mémoire nécessaire pour les éti- quettes d'adresse, bits MRU et états et commandes de cache, de même que des comparateurs destinés à établir les présences/absences pour des surveillances à la fois du bus UC 14 et du bus mémoire 15 Ceci représente le chemin le plus critique dans le système à cache secon- daire pour obtenir un fonctionnement à état d'attente zéro Intérieurement, environ un intervalle d'horloge est disponible pour effectuer une recherche d'étiquette, comparer et actualiser l'état Ce fonctionnement paral- lèle du contrôleur de cache 12 et de la SRAM 13 élimine le fonctionnement séquentiel pour la recherche dans la RAM à étiquettes 31, suivie de l'extraction de données par la SRAM 13 à partir du chemin temporel critique. Le contrôleur de bus mémoire (CMB) 11 adapte le noyau du cache de l'UC au protocole de bus mémoire spécifique associé au bus mémoire 15 En ce faisant, il coordonne avec le contrôleur 12 les remplissages de ligne, les vidages, les réécritures, et ainsi de suite. Un loquet de validation d'octet (BE) 17, qui est un loquet externe commandé par le contrôleur de cache 12, est utilisé pour stocker un sousensemble de signaux de l'UC 10 ne passant pas par le contrôleur 12; ce loquet peut être considéré fonctionnellement comme faisant partie du contrôleur 12, bien qu'il n'y soit pas Incorporé physiquement dans le mode de réalisation actuellement préféré. Le contrôleur de cache 12 est réalisé sous la forme d'un seul circuit intégré qui comporte des bo- quets, des multiplexeurs (appelés également MUX), une logique et une mémoire vive (RAM) agissant comme le dispositif répertoire de cache Il s'agit d'un con- trôleur de cache de second niveau pour des unités centrales constituées par des Intel 80486 et i 860 XPTM. 1 I Il fournit les signaux de répertoire et de commande de cache aux dispositifs à RAM statique externes de la mémoire cache 13 Le jeu de puces formé par le contrô- leur 12 et la mémoire cache 13 constitue un cache unifié de données et d'instructions qui est transparent au logiciel système de l UC Le contrôleur de cache 12 comporte les étiquettes et les états de ligne et prend les décisions relatives aux accès, présences ou ab- sences. Des loquets émetteurs-récepteurs (XCR) ex- ternes 16 sont utilisables facultativement en tant qu'interface pour la transmission de données d'adresse du contrôleur de cache 12 et de données du cache SRAM 13 vers et depuis le bus mémoire 15. C Architecture interne du contrôleur de cache La figure 2 est un schémabloc détaillé de l'unité de contrôle de cache 12 du système à mémoire cache secondaire Elle établit des liaisons avec tous les éléments représentés sur la figure 1 Des interfaces spécifiques sont l'interface de bus UC 30, l'interface de CBM 35, l'interface de données de cache 37, le loquet d'adresse de bus mémoire 34 et une interface de surveil- lance 33. L'interface de bus UC 30 établit les con- nexions par broches d'entrée/sortie avec le bus 14 de 1 'UC Cette interface est conçue pour obtenir la vitesse la plus élevée possible sur le bus UC 14 pour le flux de données vers et depuis le cache SRAM 13 et le bus mémoire 15 Les signaux passant par l'interface de bus UC sont transmis par: trente lignes d'adresse (CFA 0-6. SET 0-10, TAG 0-11), cinq lignes de définition de cycle (W/Rf, D/C#, M/IO#, CACHE#, LEN), deux lignes d'attribut de page (PCD, PWT), une ligne d'accès atomique (LOCK#), cinq lignes de commande de cycle de bus (ADS#, BRDYC 1#, BRDYC 2 i, BLAST#, NA#) et cinq lignes de compatibilité de surveillance de cache (AHOLD, EAD 54, INV HITM#, BOFF$). De plus, dix-sept broches de commande d'initia- lisation et d'exécution sont prévues dans le mode de réalisation préféré: une broche d'horloge (CLK), une broche de remise à l'état initial (RESET), neuf broches de configuration (CFG 0-3, CPUTYP, SNPMD, FPFLDEN#, NCPFLD$, PLOCKEN, WWOR#, MEMLDRVI et quatre broches de test (TCK, TD 0, TD 1, TMC). L'interface de CBM 35 transmet des signaux vers et depuis le CBM 11 pour la commande du bus mémoire 15 et l'adaptation du contrôleur 12 et du cache SRAM 13 à un protocole de bus mémoire spécifique Les signaux entre le CBM 11 et l'interface 35 représentent des demandes de cycle sur le bus mémoire 15 par le contrô- leur 12 ou le CBM 11, des signaux de progression de cycle comprenant: unsignal salve prête (BRDY#), trois signaux d'échantillonnage d'adresse et de données (CADS#, SNPADS#, CDTS#), neuf commandes de cycle (CW/RU, CD/C#, CM/IO#, MCACHE#, CPLOCK#, KLOCK#, RDYSRC, CLEN 0-1), quatre attributs de cycle mémoire (NENE*, SMLN#, PALLOC#, CWAY), quatre signaux de validation du loquet d'adresse de bus mémoire 34 (MAOE#, MBAOE#, MALE, MBALE), cinq signaux de progression de cycle (BGT#, KWEND*, SWEND#, CRDY#, CNA#), un signal de commande (BLE*) pour le loquet BE 17 coordonné au CBM 11 et des signaux de commande d'étiquette (FLUSH*, SYNCS, FSIOUT 4) pour le dispositif répertoire de cache ou RAM à éti- quettes (Tag RAM) 31. L'interface de cache 37 assure la jonction avec le cache SRAM 13 pour la réalisation d'une commande de cycle d'entrée et de sortie de cache pour un cache à deux voies, la sélection des voies et de banques de données et la prise de décisions concernant des corres- pondances et des discordances dans la mémoire cache pour la sélection des voies de données mémoire et des banques de données en combinaison avec le dispositif répertoire de cache 31 Les signaux transmis par cette interface représentent: une commande de voie (WAY), deux commandes de dispositif (WRARR#, MAWEA#), et cinq commandes de tampon (MCYC, BUS#, WBWE#, WBA, WBTYP) pour le cache 1.5 SRAM 13. Une file d'attente d'adresse de bus mémoire 36 est une file d'attente interne utilisée pour planifier les demandes de cycles du bus mémoire 15 provenant de l'UC 10 ou du contrôleur 12 Une particularité capitale de la file d'attente 36 est la façon de traiter l'adresse de l'activité à exercer ensuite Le dernier étage de la file d'attente 36 est connecté à l'interface du contrôleur de bus mémoire et au loquet d'adresse de bus mémoire 34, lequel constitue un loquet d'adresse logiquement transparent, le CBM 11 fournissant à travers l'interface de contrôleur de bus mémoire 35 des signaux de validation de loquet (MALE, MBALE) et des signaux de validation de sortie (MAOE#, MBAOE#). La figure 3 montre plus en détail les loquets d'adresse à l'intérieur du contrôleur 12, c'est-à-dire le loquet de surveillance 33 et le loquet de bus mémoire 34 La file d'attente 36 du bus mémoire fournit des signaux TAG, SET et de sous-ligne d'UC (CF Ax) Les signaux de commande MALE (adresse de ligne de cache) et MBALE (adresse de sous-ligne de cache} commandent le loquet 21 pour les signaux TAG, SET et des signaux d'adresses configurables (CF Ax) respectivement La sortie du loquet 21 est validée/invalidée par des tampons de sortie à trois états 22 et 23, commandés par des signaux MAOE# (adresse de ligne de cache) et MBAOE# (adresse de sous-ligne de cache) respectivement De l'information d'adresse bidirectionnelle circule vers et depuis le bus mémoire 15 sur les lignes MTAG, MSET et MCF Ax. Le contrôleur de cache 12 traite la compati- bilité de cache sur le bus mémoire 15 en effectuant des surveillances en cas de demande En réponse à une demande de surveillance, la commande de surveillance 39 accède immédiatement au dispositif à étiquettes 31 et effectue une recherche A l'intérieur d'une période de temps déterministe, elle répond au CBM 11 par les résultats de la surveillance Des signaux sont prévus pour indiquer si une étiquette valable a été trouvée et, dans l'affirmative, si oui ou non l'information corres- pondante est dans l'état modifié lMI Le CMB 11 conver- tira ces signaux selon les besoins du protocole de bus mémoire spécifique. Si une correspondance ou présence est dé- tectée, la commande de surveillance 39 est responsable de la suite de l'action Le protocole de compatibilité du cache de l'UC est basé sur le principe de l'inclu- sion, selon lequel toutes les lignes contenues dans le cache primaire (c'est-à-dire dans le cache de 1 'UC) doivent également exister dans le cache secondaire (c'est-à-dire dans le contrôleur de cache 12) Il s'ensuit que si une ligne est changée dans le cache secondaire, une action est nécessaire dans le cache primaire Toute ligne invalidée dans le cache secondaire doit être invalidée dans le cache primaire par l'exécu- tion d'un ou plusieurs cycles d'invalidation Si la ligne du cache secondaire est à l'état modifié lMI, un ou plusieurs cycles d'interrogation (éventuellement avec Invalidation si le cache secondaire sera invalidé) doivent être exécutés si le cache de l'UC applique un protocole de réécriture et l'interface du contrôleur de bus mémoire a signalé qu'un cycle de réécriture de surveillance est nécessaire Il est à noter que dans certaines configurations, le contrôleur de cache 12 passera de multiples cycles d'invalidation ou d'inter- rogation puisque de multiples lignes de cache de l'UC peuvent être logées dans une ligne de cache du con- trôleur de cache 12 Ce paramètre est appelé rapport de lignes. Parce que la commande de surveillance 39 pour l'interface du bus mémoire 15 fait partie du contrôleur de cache 12, il est nécessaire de soutenir tous les modes de signalisation autorisés sur le bus mémoire 15. Plus précisément, des surveillances doivent être recon- nues pour des protocoles de bus mémoire à horloge et à échantillonnage, et les surveillances doivent pouvoir être effectuées à la fois dans des environnements synchrones et dans des environnements asynchrones Pour le support des environnements asynchrones, l'interface de surveillance comporte un synchroniseur incorporé Il s'agit là du seul synchroniseur dans le contrôleur de cache 12 qui est utilisé pendant le fonctionnement normal Il est prévu pour faire l'économie de la période d'horloge supplémentaire qui serait nécessaire pour un synchroniseur externe. Le loquet de surveillance 33, formé par un loquet d'adresse à deux étages, est représenté de façon plus détaillée sur la figure 4 et comprend un loquet asynchrone d'entrée 41 connecté à des lignes d'adresse du bus mémoire 15 et un loquet synchrone de sortie 43 qui reçoit des données du loquet 41 et transmet des données d'adresse au multiplexeur MUX 32. Le loquet transparent 41 est normalement ouvert Lorsqu'un événement de surveillance est activé sur le bus mémoire 15 par un autre CBM, l'adresse de surveillance est mémorisée par le loquet 41 Ce dernier se rouvre lorsque le loquet synchrone 43 se ferme Le loquet 43 se ferme après une demande de surveillance (SNPSTB# synchronisé) et s'ouvre lorsque la recherche de surveillance est terminée Le loquet 41 transmet égale- ment des signaux de commande pour la RAM à étiquettes 31: un signal d'invalidation de surveillance (SNPINV) faisant passer une correspondance en surveillance à l'état invalide lIl; un signal de validation de sortie de bus mémoire (MAOE#) qui autorise une surveillance lorsqu'il est actif; et un signal d'accès pour la surveillance d'un dispositif ne passant par le cache (SNPNCA) qui indique que le maître du bus est un agent ou correspondant ne passant pas par le cache, tel qu'un dispositif à accès direct à la mémoire (DMA), auquel cas l'état exclusif lEl est permis. Le loquet de surveillance 33 supporte trois modes de signalisation pour déclencher des surveillances et contrôler les loquets 41 et 42: le mode asynchrone à échantillonnage, le mode asynchrone à horloge et le mode synchrone Le premier utilise le flanc descendant du signal SNPSTB# Le mode asynchrone à horloge utilise SNPSTB# actif sur le flanc montant de SNPCLK en tant qu'événement de surveillance Suivant le mode choisi, le multiplexeur MUX 44 ferme le loquet 41 et fait passer le signal au synchroniseur 45 qui le transmet à MUX 42 Le mode synchrone utilise SNPSTB# actif sur le flanc montant du signal d'horloge CLK comme l'événement de30 surveillance SNPSTB# est également appliqué à MUX 42, ce qui procure une sélection de mode supplémentaire pour commander la fermeture du loquet 43 et le déclenchement d'un cycle de surveillance Il est à noter que le loquet 41 reste ouvert dans le mode de surveillance synchrone. La sélection de mode est prévue sur SNPCLK: "haut" pour le mode asynchrone à échantillonnage, "bas" pour le mode s-çachrone et "alternance" pour le mode asynchrone à horloge. Te multiplexeur MUX 32 constitue le moyen pour sélecter la source d'adresse à utiliser par la RAM à étiquettes 31; l'adresse est fournie, soit par l'UC 10 à travers l'interface de bus UC 30, soit par le loquet de surveillance 33. La RAM à étiquettes 31 constitue ensemble avec le cache SRAM 13 un cache associatif à fichiers et à deux voies Pour lancer un cycle de mémoire cache, la RAM à étiquettes 31 utilise les bits d'adresse de la série de 12 ( 11) bits d'adresse de fichier du loquet 51 pour sélecter l'un des 4 K ( 2 K) fichiers, comme repré- senté sur la figure 5 Les deux étiquettes échantil- lonnées dans les deux répertoires d'étiquettes du cache 52 et 53 sont comparées simultanément, par des compara- teurs 54 et 55, avec les bits d'étiquette de l'adresse afin de vérifier s'il y a concordance. Pour des cycles de lecture, la SRAM 13 re- cherche simultanément le fichier adressé par les bits de fichier et fournit des données basées sur le MRU 59 à travers le multiplexeur MUX 63 Si les comparateurs 54 et 55 détectent une concordance et s'il ne s'agit pas de la voie indiquée par le répertoire LR Ul MRU 58, l'infor- mation est utilisée Si le comparateur 54 ou 55 détecte une concordance et le répertoire 58 correspond, les répertoires 58 et 59 sont mis à jour par la commutation de MUX 63 dans SRAM 13 Si aucun des comparateurs 54 et ne détecte une concordance, le cycle est passé au bus mémoire 15. Pour un cycle d'écriture, les comparateurs 54 et 55 sont utilisés pour détecter les correspondances/ discordances et pour signaler à la SRAM 13 sur quelle voie elle doit écrire dans le cas d'une correspondance. Des présences ou correspondances pour l'écriture pro- duisent également l'actualisation des répertoires 58 et 59 en conséquence, mais pas nécessairement dans le même cycle d'horloge. Les surveillances et les remplacements uti- lisent la voie allant du contrôleur de cache 12 à la mémoire cache 13 pour des écritures semblables à des corrections afin de déterminer la voie à laquelle il faut accéder, mais ils n'affectent pas l'état MRU ou LRU. Dans le but de réduire statistiquement le 1-0 temps d'accès aux données dans la SRAM 13, la RAM à étiquettes 31 assure aussi une sélection prédictive de la voie à choisir pour un quelconque accès donné La prédiction est basée sur la règle de la voie la plus récemment utilisée (MRU) Dans une opération de lecture, la règle MRU prédit que la voie la plus récemment utilisée fournira l'information requise, de sorte que le multiplexeur MUX 63 dans la SRAM 13 (figure 5) est positionné pour sélecter la voie MRU indiquée par le bit dans le répertoire MRU 59 Si la prédiction est exacte, l'information requise est immédiatement disponible Si la prédiction n'est pas exacte, ce qui est déterminé par une logique de prédiction 56 qui compare les informa- tions de sortie des comparateurs 54 et 55 avec le bit MRU stocké dans le répertoire LRU/MRU 58, un état d'attente est introduit afin de laisser du temps au signal de correction de prédiction 57 pour produire la commutation de MUX 63 sur l'autre voie Par suite, le bit MRU dans les répertoires 58 et 59 est actualisé. Le bit LRU est utilisé aussi pour des rempla- 0 o cements en mémoire cache, sur la base de la supposition que l'information la plus récemment utilisée sera plus vraisemblablement nécessaire de nouveau, plutôt que l'information la moins récemment utilisée. La RAM à étiquettes 31 stocke aussi les quatre états de compatibilité de chaque entrée de cache dans une zone de quatre bits Les quatre états définissent si une liane est valable (correspondance ou discordance), si elle est partagée avec d'autres caches, si elle est attribuée exclusivement à un cache donnée ou si elle est modifiée par rapport au contenu de la mémoire centrale. Le dispositif comporte en plus un octet indicateur associé à chaque ligne du répertoire de cache et indi- quant l T état de compatibilité de la ligne concernée. D Broches d'entrée et de sortie La figure 6 est une vue de dessous de la configuration du brochage d'un mode de réalisation préféré de l'invention destiné à être utilisé avec le processeur Intel 80486 Les signaux et broches d'entrée/ sortie sur les quatre côtés sont principalement groupés comme suit: ceux de l'interface de bus UC le long des côtés inférieur et gauche, ceux de l'interface de bus mémoire le long du côté droit, et ceux de l'interface du contrôleur de bus mémoire et les broches de test le long du côté supérieur Les broches de l'interface de mémoire cache (C 8) partagent le côté inférieur La figure 7 est une table indiquant la correspondance entre des noms de signaux et des coordonnées d'emplacement Les broches d'alimentation (Vcc et Vss) sont réparties de façon *centrale sur les quatre côtés. D.l Broches de l'interface de bus UC Le système est initialisé par application du signal d'horloge CLK de l'UC, d'un signal de remise à l'état initial RESET et d'une série de neuf signaux de configuration représentant le rapport de lignes, la longueur des étiquettes, le nombre de lignes par sec- teur, la largeur du bus et la capacité de l'antémémoire. Le signal d'horloge CLK détermine la vitesse d'exécution et la chronologie de fonctionnement du contrôleur de cache 12 Le signal d'entrée RESET est asynchrone et fait passer le contrôleur 12 à un état connu Les signaux de configuration sont échantillonnés sur le flanc descendant du signal RESET et sont fonctionnel- lement multiplexés avec des signaux d'autres broches La figure 8 montre la relation dans le temps pour l'échan- tillonnage des signaux d'entrée de configuration Le temps de manipulation préalable est typiquement de trois cycles d'horloge suivis d'un maintien de moins d'un cycle d'horloge après le flanc descendant du signal RESET. Les signaux de configuration CFGO-CFG 3 four- nissent les paramètres de cache comprenant: le rapport de lignes, le nombre de lignes par secteur et le nombre d'étiquettes Le contrôleur 12 décode les signaux sur ces lignes et envoie l'information s'y rapportant à la 1 î mémoire cache 13 via les lignes d'interface de mémoire cache LRO, LR 1 et SEC 24, multiplexées chacune sur les broches MCYC 4, BUS# et WBA respectivement La figure 9 montre les huit options de configuration spécifiées par les signaux CFGO-CFG 3 en cas d'utilisation d'un Intel 80486 comme unité centrale Les paramètres de configu- ration contrôlés comprennent: le rapport des longueurs de ligne ( 1, 2; 4 ou 8), le nombre de lignes par secteur ( 1 ou 2) et le nombre d'étiquettes ( 4 K ou 8 K). Le rapport des longueurs de ligne indique la longueur de la ligne de cache par rapport à la longueur de ligne du cache sur la puce de l'UC Le contrôleur de cache 12 utilise cette information pour déterminer le nombre de cycles de rétro-invalidation ou d'interroga- tion nécessaires pour qu'une opération soit complète lors d'un accès au cache primaire dans 1 'UC Le nombre de lignes par secteur se réfère au secteur à une ou deux lignes de la mémoire cache pris en charge par le con- troleur de cache 12, chaque ligne du secteur étant associée à une seule étiquette et chaque ligne ayant un seul état Au cours d'un remplacement d'étiquette, tout le secteur (une ou deux lignes) est réinscrit, s'il est modifie, dans la mémoire centrale La figure 9 donne également la liste des états des signaux LR 0, LR 1 et SEC 2 * mentionnés précédemment De plus, la dernière colonne donne la liste des états du drapeau TAG 8 servant à indiquer au contrôleur de cache 12 si 4 K ou 8 K étiquettes sont supportées. Trois des cinq signaux de paramètres de configuration restants sont: CPUTYP, utilisant en commun la broche HITM# et indiquant le type de l'UC ( 80486 ou i 86 o O XPTM); SNPMD, utilisant en commun la broche SNPCLK 4 et indiquant si le mode de surveillance est synchrone ou asyndhrone à horloge ou à échantillonnage; et PLOCKEN, multiplexé avec CPLOCK*, qui est utilisé seulement avec l'UC 80486 pour le traitement d'écritures atomiques à 64 bits par I'UC 10 en imposant la fonction PLOCK* à l'UC 80486 Si le signal PLOCKEN est échantillonné au niveau haut à l'application du signal RESET, la fonction PLOCK# est validée et les demandes de PLOCK# sont représentées par la broche CPLOC Ke du contrôleur 12 S'il est au niveau bas, le contrôleur 12 ignore les demandes de PLOCKS de l'UC 80486 et CPLOCK# est invalidé Les deux derniers signaux de configuration sont: MEMLDRV, uti- lisant en commun la broche SYNC% et indiquant le choix de circuits de commande de bus mémoire de haute capacité s'il a un niveau bas à l'application de RESET, sinon il indique le choix de circuits de commande de bus mémoire de faible capacité s'il présente un niveau haut à l'application du signal RESET; et WWOR#, utilisant en commun la broche MALE# et indiquant le choix d'un classement faible pour l'écriture si son niveau est bas à l'application du signal RESET et le choix d'un clas- sement fort si son niveau est haut au signal RESET Le classement fort pour l'écriture empêche le contrôleur 12 de compléter un cycle d'écriture qui irait jusqu'à l'état lMl si une écriture différée est en attente (c'est-à-dire pour laquelle le bus mémoire 15 n'a pas eté accordé à l'application de BGT#) Donc, le classe- lent fort assure que les cycles d'écriture de 1 TUC 10 sont inscrits en mémoire dans le même ordre. Le mode de réalisation préféré du contrôleur de cache 12 comporte sept lignes d'adresse configurables qui changent de fonction suivant les signaux appliqués aux broches d'option de configuration décrites précé- demment La raison de la prévision de ces broches à plusieurs fonctions est de réduire le nombre de broches parce que plus la mémoire cache 13 est grande (large), plus petit est le nombre de bits drapeau nécessaire Les fonctions des lignes changent conformément aux lignes CFGO-CFG 3 et CPUTYP La figure 10 représente les fonc- tions des lignes d'adresse CFAO-CFA 6 et indique aussi quelle ligne d'adresse de l'UC (A 2-A 6, A 28-A 31) doit être connectée à ces lignes en cas d'utilisation de l'UC 80486. Les broches SETO-SET 10 forment la série de broches d'adresse qui sont connectées directement au dispositif à étiquettes 31 du contrôleur de cache 12 et aux lignes d'adresse de l'UC utilisées pour sélecter le fichier de mémoire cache auquel il faut accéder Cepen- dant, dans le mode à 8 K étiquettes, la broche CFA 6 sert de SET 1 l. Les lignes TAGO-TA G 11 sont des lignes d'éti- quette fixes connectées aux comparateurs d'étiquettes à deux voies de la mémoire associative, utilisés pour déterminer si une correspondance a été obtenue De plus, des lignes CF Ax inutilisées, suivant la configuration choisie, peuvent fonctionner aussi comme bits TAG Un maximum de 15 lignes TAG ou lignes d'étiquette peut être supporté, ce qui autorise la mise en antémémoire de la totalité de l'espace adresses de 4 gigaoctets pour la plupart des modes de fonctionnement. 35 Le contrôleur de cache 12 supporte trois broches de définition de cycle en conformité avec la -ithe technique de l'UC 80486: W/R#, DC# et MIO# Ces trois broches définissent le type de cycles de bus à effectuer: W/R# établit la distinction entre des cycles d'écriture et des cycles de lecture; DC# établit la distinction entre des cycles de données et des cycles de commande; et MIO# établit la distinction entre des cycles mémoire et des cycles d'E/S. Deux broches additionnelles sont définies conformément à la fiche technique du i 860 XPTM en cas d'utilisation de ce circuit intégré pour l'UC: CACHE 4 et LEN Un signal appliqué à CACHE# identifie l'intention de l'UC de mettre une information en antémémoire (cette particularité n'est pas prévue pour le 80486) La broche LEN est utilisée pour identifier un type d'information sur le bus UC demandant deux transferts de données Le signal PLOCKS sur le 80486 est redéfini pour constituer ce signal pour l'utilisation avec le contrôleur cache 12. PCD et PWT sont des broches d'attribut de page activées sur une base page par page par l'UC 10 Un signal sur PCD indique une adresse ne pouvant pas être mise en antémémoire, tandis qu'un signal sur PWT donne au contrôleur de cache 12 l'instruction d'attacher un attribut de double écriture à la ligne à laquelle il est accédé, ce qui entraîne l'inscription de la même infor- mation dans la mémoire centrale Cependant, l'état de cache du contrôleur 12 peut être prioritaire par rapport aux attributs PCD et PWT (Par exemple, en cas d'accès à une ligne de cache se trouvant dans un état valable quelconque (lSI, lEl, lMI) alors que la broche PCD est active, le contrôleur ignorera PCD et considère que la ligne est mise en antémémoire; lors de l'accès à des lignes se trouvant dans des états exclusifs (lEl, lMI) alors que PWT est active, PWT sera ignorée et l'état de la ligne restera exclusif, voir le chapitre E 1) Le contrôleur de cache 12 fournit à l'UC 10 le signal KEN# pour indiquer la possibilité de mise en antémémoire du cycle demandé Ce signal est normalement actif et passera à l'état inactif en cas d'obtention de présences pour la lecture d'adresses de lecture seule- ment ainsi que dans tous les cycles verrouillés Si un cycle ne donne pas une réponse pertinente (correspon- dance ou présence) et parce que la possibilité de mise en antémémoire peut être indiquée par le bus mémoire, le10 contrôleur de cache 12 attendra la fermeture de la fenêtre d'autorisation de mise en antémémoire (KWEND#) pour résoudre la possibilité de mise en antémémoire par référence à la broche MKEN# de l'interface du bus mémoire et la broche de lecture seulement MRO# du bus mémoire. Il y a un signal de verrouillage de cycle de bus de l'UC désigné par LOCK# et deux signaux de ver- rouillage de bus du CBM 11 Un signal LOCK# est utilisé pour la demande d'une séquence de lecture-modification-20 écriture Le contrôleur de cache 12 envoie cette demande au CBM 11 via la broche KLOCK# en vue de l'exécution d'une séquence de bus mémoire interrompue PLOCK# est utilisé pour refléter une demande d'écriture de 64 bits de l'UC 80486 Le cycle en cours, pour lequel CPLOCK# 2 est actif, et le cycle suivant, sont traités comme un transfert atomatique de deux mots de 32 bits (opérandes de 64 bits à virgule flottante) Le contrôleur de cache 12 peut invalider la fonction d'écriture atomique des 64 bits afin de diminuer l'attente de surveillance dans le pire des cas. L'interface du bus UC supporte cinq broches de commande de cycle: ADS#, BRDYC 1#, BRDYC 2#, BLAST 4 et NA# L'UC 10 fournit le signal d'état d'adresse ADS# pour indiquer la disponibilité d'un nouveau mot d'adresse et d'état sur le bus d'adresse/état; ce signal devient actif au premier signal d'horloge d'un cycle de bus et inactif au second signal d'horloge Les signaux BRDYC 1 et BRDYC 2 ie sont logiquement équivalents et prévus pour diminuer des effets de charge, ainsi que pour indiquer à l'UC 10 et au cache 13 que les données sur les broches de données sont valables et que la séquence suivante de la salve peut être déclenchée Ces signaux sont générés par le contrôleur de cache 12 lorsque l'accès à la mémoire centrale n'est pas néces- saire Le signal BLAST#, fourni par le contrôleur de 1 o cache 12, indique la fin de la salve et est utilisé par I'UC 10 et le contrôleur 12 en combinaison avec BRDY pour compléter le cycle de bus NA# est un signal de demande d'adresse suivante, émanant du contrôleur 12 et déclenchant un processus pipeline en indiquant que le contrôleur 12 est prêt à accepter l'événement du cycle suivant si la fin du cycle en cours n'a pas été complé- tée Si NA# est au niveau bas, l'adresse suivante est appliquée au bus UC 14 lorsqu'il est disponible. Le contrôleur de cache 12 a cinq lignes de compatibilité de cache, HITM#, BOFF#, INV, AHOLD et EADS#, pour démarrer un cycle de surveillance concernant 1 'UC Le signal AHOLD a pour conséquence que l'UC fait flotter ses lignes d'adresse, ce qui permet à l'inter- face de bus UC 30 d'appliquer l'adresse de surveillance au bus UC 14 Le signal EAD 54 indique que l'adresse de surveillance est valable et doit être échantillonée Ces deux signaux seulement sont nécessaires pour la sur- veillance avec 1 'UC 80486 Il est à noter cependant que l'UC invalidera sa ligne de cache si l'adresse sur- veillée correspond à une présence dans son cache in- terne, ce qui est un événement appelé cycle de rétro- invalidation L'UC i 86 QXPTM utilise le signal RITMZ pour indiquer l'obtention d'une correspondance sur une ligne ayant un état modifié lMI, le signal INV pour demander l'invalidation d'écritures et le signal BOFF# pour rompre des blocages. Il est à noter que le contrôleur de cache 12 surveille le cache de l'UC sur la base du principe de l'inclusion Des correspondances dans le cache de second niveau sont surveillées dans le cache primaire en présence de lignes se trouvant à l'état modifié lMI dans le cache de second niveau et supposées présenter l'état lMI dans le cache primaire pour l'UC i 86 QXPT. En plus des broches et signaux qui viennent d'être énumérés, trois broches de test d'entrée TCK, TDI et TMS et une broche de test de sortie TDO sont utili- sées pour permettre des tests exploratoires aux limites de la puce comprenant le contrôleur de cache en confor- mité avec un paragraphe de la norme recommandée de l'IEEE P 1149 1. 1 D D.2 Broches de l'interface du contrôleur de bus mémoire Le CBM 11 assure le transfert de la quantité convenable de données au bus mémoire, c'est-à-dire soit une ligne complète du contrôleur de cache C 5, soit la quantité de données demandée par 1 'UC 10 Le CBM 11 produit un signal "salve prête" BRDY# qui est envoyé au contrôleur de cache 12, à la mémoire cache 13 et à l'UC Ce signal BRDY# indique qu'une information valable est présente en réponse à une lecture, ou que le bus de la mémoire centrale a accepté des données en réponse à une écriture BRDY#, échantillonné sur le deuxième signal d'horloge et sur les signaux d'horloge consécu- tifs d'un cycle de salve, est utilisé par le contrôleur 12 à des fins de suivi de salves. L'interface du contrôleur de bus mémoire 35 délivre trois signaux d'échantillonnage d'adresse/ données: CADS#, SNAPDS#, et CDTS* CADS# (signal d'échantillon- nage d'adresse) est actif chaque fois qu'un cycle de bus mémoire est nécessaire et est complètement analogue au35 signal ADS# de l'UC, décrit précédemment Il indique qu'une information de commande de nouveau cycle (décrite ci-après) et des signaux d'attribut sont corrects. SNPADS# indique une demande de cycle de bus mémoire pour une correspondance en surveillance sur une ligne modi- fiée (état lMl) Ce signal d'adresse séparé est prévu pour faciliter la mise en application de CBM 11 dans la prise en charge de cycles de surveillance intermé- diaires L'activation de SNPAD 54 amène CBM 11 à sus- pendre tous ses cycles en attente, mais non pas les cycles en cod'exécution Si des cycles sont en cours d'exécution, le SNPADS# est retardé jusqu'à ce qu'ils soient terminés (comme expliqué par la suite) Les cycles en attente sont redémarrés par le contrôleur de cache 12, délivrant des signaux CADS# appropriés CDTS#, le signal d'échantillonnage de données du cache, indique que la voie de données de l'UC sera à la disposition du CMB 11 dans la période d'horloge suivante pour des cycles de lecture Pour des cycles d'écriture, il indique la mise à disposition de données pour le bus mémoire Cette mise en oeuvre assure l'indépendance complète entre les signaux d'échantillonnage d'adresse (CAD 59 ou SNPADS#) et le signal d'échantillonnage de données De cette manière, le contrôleur de cache 12 est libre pour déclencher en CBM 11 un nouveau cycle dès que des adresses sont disponibles et avant que des données ne soient prêtes. Le contrôleur de cache 12 produit neuf signaux de commande de cycle Lorsque le contrôleur 12 déclenche un cycle de bus mémoire au moyen de CADS#, le type de cycle demandé est défini par les états de trois signaux de définition de cycle: écriture/lecture cache (CW/R#), données/commande cache (CD/C#) et mémoire cache en- trée/ sortie (CM/IO#) Le décodage de ces signaux par CBM 11 est similaire au décodage des signaux W/R#, DC 4 et M/IO# de 1 'UC 10 Le cycle demandé est spécifié en plus par les signaux CLEN 0, CLEN 1, CPLOCK#, KLOCK 4, MCACHE# et RDYSRC. Le signal CPLOCK 4 est utilisé pour identifier des écritures atomiques de 64 bits pour l'UC 80486 Ce signal peut être invalidé afin de diminuer l'attente pour la surveillance KLOCK# est un signal par lequel le contrôleur de cache 12 demande au CBM 11 d'exécuter un cycle atomique de lecture-modification-écriture résul- tant d'une demande LOCKE de l'UC 10. Le signal MCACHE# donne au CBM 11 l'instruc- tion que la ligne de données à la quelle il est accédé doit être mise en antémémoire par le contrôleur 12, indiquant ainsi implicitement le nombre de transferts de salve pour le cycle de bus mémoire Il sert aussi à fournir de l'information quant aux possibilités de mise en antémémoire à d'autres agents ou correspondants sur le bus mémoire 15 Si MCACHE# est actif, CBM i 1 l peut rendre la ligne apte à être mise en antémémoire en renvoyant le signal MKEN#, le signal appliqué à la broche de validation de cache du bus mémoire RDYSRC indique au CBM 11 si lui- même ou le contrôleur de cache 12 produira des impulsions "salve prête" (BRDY 4 ou BRDYC 1#/BRDYC 2#) appliquées à l'UC 10 De l'information relative à la longueur du cycle de salve est fournie au CBM 11 par les lignes CLENO et CLEN 1 (partagées avec BOFF 4 et INV respectivement) dans l'interface du bus UC. La figure 11 montre le décodage par le CBM 11 de cycles de contrôleur de cache en cas d'utilisation d'une UC constituée par un 80486 La colonne marquée "longueur de cycle mémoire" indique le nombre d'impulsions "salve prête" générées par CBM 11 (Il est à noter que le symbole (X) signifie "sans importance" et que "non- cach " indique l'impossibilité de mise en antémémoire, par opposition à "cach ", utilisé dans la figure 13 par exemple). NENE#, SMLN#, PALLC# et CWAY sont quatre attributs à usage général pouvant être utilisés par CBM 11 pour optimiser les utilisations des bus NENE# signifie "le plus proche" et indique que l'adresse en cours se trouve dans la même page DRAM de la mémoire centrale que l'adresse précédente Cette information peut être utilisée pour faciliter la mise en application s de systèmes de mémoire DRAM paginés Le contrôleur 12 prend en charge une page DRAM de 2 K adresses SMLN#, constituant le signal "même ligne", indique que l'adresse de cycle en cours se trouve dans la même ligne de cache que la précédente Le contrôleur 12 peut utiliser cette information pour délivrer conditionnel- lement des signaux d'échantillonnage de surveillance sur le bus mémoire en activant sélectivement son signal SNPST Bf pour d'autres caches du système PALLC# est envoyé au CBM 11 par le contrôleur 12 pour indiquer que le cycle d'écriture en cours est potentiellement attri- buable, c'est-à-dire satisfait aux conditions: discor- dance pour l'écriture, LOCK# = 1, PCD = 0, PWT = O Le contrôleur 12 peut utiliser cette information pour réaliser des écritures pour des cycles de propriété si désiré CWAY, le signal de voie du cache, indique au CBM 11 la voie utilisée (ou à utiliser) par le cycle demandé et peut être employé par des dispositifs logiques externes pour suivre complètement le contenu de l'éti- quette du contrôleur de cache. BGT#, KWEND 4, SWEND#, CRDY 4 et CNA# sont fournis par CBM il et utilisés par le contrôleur 12 pour suivre le cycle de bus mémoire BCT# indique que le cycle demandé produira un transfert garanti en inhibant des surveillances dans le contrôleur 12 jusqu'à la fin de la fenêtre de surveillance KWEND# indique la ferme- ture de la fenêtre d'autorisation de mise en antémém- oire, c'est-à-dire le temps à partir du commencement d'un cycle sur le bus mémoire 15 jusqu'à ce que l'indi- cation de la possibilité de mise en antémémoire est supprimé MBC 11 informe le contrôleur 12 de la ferme- ture de la fenêtre d'autorisation de mise en antémémoire en activant le signal KWEN Df, ce qui a pour conséquence que le contrôleur 12 échantillonne les broches d'attri- but MKEN 4 et MRO 4 La broche MKEN# (de validation de cache pour le bus mémoire) fournit au contrôleur 12 un signal d'entrée indiquant la possibilité de mise en antémémoire du cycle de bus mémoire en cours Le signal sur la broche MRO 4 (de lecture seulement pour le bus mémoire) indique que la ligne à laquelle il est accédé doit être pourvue d'un attribut "lecture seulement", ce qui assure l'impossibilité d'introduction dans le cache de premier niveau et l'interdiction d'écriture dans le cache de second niveau De plus MRO est un bit dans chaque entrée d'étiquette C 5 SWEND# indique la ferme- ture de la fenêtre de surveillance et amène le con- trôleur 12 à échantillonner les broches MWB/WT# et DRCTM# de l'interface du contrôleur de mémoire 35. MIWB/WT#, représentant le signal de réécriture/écriture double est utilisé par le bus mémoire 15 pour informer le contrôleur 12 dynamiquement de la stratégie d'écri- ture à employer DRCTM# est le signal de bus mémoire "directement à l'état lMI", qui informe le contrôleur 12 de sauter l'état lE) et de passer directement à l'état lMl Les signaux MWB/WT# et DRCT Mf sont tous deux utilisés par le contrôleur 12 pour actualiser l'état d'étiquette (remplissages de ligne, attributions et écriture à l'état lSl Après SWEND#, CBM 11 peut com- mencer à fournir des données à l'UC 10 en sécurité. Cependant, le contrôleur 12 permet que de l'information de surveillance soit fournie au tout dernier moment d'un cycle, de sorte que la surveillance peut se dérouler parallèlement au garnissage du tampon de remplissage de ligne du cache SRAM 13 CRDY#, le signal "cache prêt", est un signal d'entrée à la fois du contrôleur 12 et de la mémoire cache 13, en provenance de CB 1 11, indiquant35 l'achèvement complet d'un cycle du bus mémoire 15, libérant le contrôleur 12 et le cache 13 pour la prise en charge du cycle suivant L'excitation de CRDY# permet au contrôleur 12 d'échantillonner des signaux de pro- gression de cycle (BGT 4, KWEND#, SWENDU) pour le cycle suivant en cas de traitement pipeline CRD Ye est néces- saire pour tous les cycles sur le bus mémoire, y compris les cycles de surveillance CNAM, constituant un signal d'entrée pour le contrôleur 12 en provenance de CBM 11 et utilisé pour faciliter le traitement pipeline de cycles de commande de bus, informe le contrôleur 12 que -le contenu du loquet d'adresse externe 34 a été utilisé et qu'une nouvelle adresse peut être chargée. Lorsqu'on se reporte à la figure 2, on voit que le contrôleur 12 comporte une file d'attente de bus mémoire 36 interne pour planifier des demandes de cycle de bus mémoire par l'UC 10 ou des demandes d'attribution et de réécriture émises par le contrôleur 12 Une particularité importante de l'emploi de la file d'at- tente 36 est son utilisation en combinaison avec l'em- ploi de l'adresse de l'activité suivante, en attente Le contrôleur 12 permet au CBM 11 de contrôler le dernier étage de la file d'attente 36 au moyen de loquets d'adresse logiquement transparents, ensemble avec des signaux de validation de loquet et de validation de sortie fournis par CBM 11 Deux séries de signaux de commande sont fournies: MALE, MAOE# et MBALE, MBAOE# La file d'attente 36 du bus mémoire peut être traitée en pipeline par CBM Il en combinaison avec le signal d'échantillonnage d'adresse CADS# Les signaux MALE et MAOE# pilotent la commande du loquet d'adresse de ligne 34 du contrôleur 12 en fonction du temps L'activation de MALE (validation loquets de bus mémoire) ouvre le loquet 34 et permet à l'adresse de ligne suivante de traverser CBM 11 MAOE#, constituant le signal de validation de sortie d'adresse du bus mémoire, commande le tampon de sortie du loquet d'adresse 34 du bus mémoire et, lorsqu'il est actif, permet au contrôleur 12 d'appliquer l'adresse du bus mémoire, tandis que, s'il est inactif, il passe à l'état de haute impédance Des cycles de surveillance peuvent se produire seulement lorsque MAOE# est inactif. MBALE et MBAOE# commandent la validation de loquet et la validation de sortie pour les adresses de sous-ligne (de salve) du contrôleur 12, d'une manière semblable à la commande par MALE et MAOES des adresses de ligne du contrôleur 12, sauf que le signal BMAOE# ne sert pas comme un qualificatif de surveillance comme c'est le cas pour MAOE# Ce dernier qualifie l'adresse de sous-ligne au cours de surveillances Si MBAOE# est actif, la sous-ligne est mise à 0 Si MBAOE# est inac- tif, la sous-ligne est échantillonnée à partir du bus mémoire 15. MSET 0-10, MTAG 0-11 et MCFA 0-6 constituent la série complète des signaux d'interface d'en- trée Jsortie d'adresse à 30 bits entre le contrôleur 12 et le bus mémoire 15 Ces signaux doivent passer par le loquet de sortie 34. La figure 12 définit quelles lignes de bus mémoire sont contrôlées par quelle série de signaux de commande La première colonne indique le numéro de configuration ( 1-8) comme défini par la figure 9, tandis25 que les colonnes suivantes indiquent quelles lignes d'adresse MCFA 0- MCFA 6, MTAG ( 0:10) ou MSET ( 0:10) sont contrôlées par les signaux de commande MALE et MAOE 4, comme indiqué par M Axx ou par MBALE, et MBAOE#, comme indiqué par M Bxx. BLE#, le signal de validation du loquet de validation d'octet, est généré par le contrôleur 12 et utilisé pour commander la validation du loquet BE 17 du CBM 11, déclenché par le flanc du signal d'horloge et utilisé pour saisir des signaux de 1 'UC 10 ne passant35 pas par le contrôleur 12, c'est-à-dire BE 0#-BE 3#, PWT et PCD BE 0-BE 3# sont des signaux de validation d'octet qui indiquent des octets de bus UC actifs lorsqu'ils sont au niveau bas pendant des cycles de lecture et d'écriture BE Of, BEI#, BE 2# et BE 3# appliquent à l'UC des octets de données DO-7, D 815, D 16-23 et D 24-31 5 respectivement PWT, qui est le signal de double écri- ture, et PCD, qui est le signal d'invalidation de cache de page, reflètent l'état des bits d'attribut de page d'UC Le loquet BE 17 se ferme typiquement une période d'horloge après ADS# d'un cycle d'UC non-bloqué, indi- o O quant qu'une nouvelle information correcte de définition d'adresse et de cycle est appliquée à ce moment par l'UC aux lignes d'adresse, de validation d'octet et de définition de cycle du bus UC 14 Le loquet BE 17 se ferme et se rouvre immédiatement pour des cycles donnant une correspondance et s'ouvre de nouveau soit avec CNA#, soit avec CRDY# pour des cycles donnant une discordance. FLUSH 4, SYNC# et FSIOUT# sont des signaux de synchronisation de cache FLUSH* et SYNC# sont générés par CBM 11 Lorsque FLUSH# est actif, il amène le contrôleur 12 à récrire complètement toutes ses lignes modifiées dans la mémoire centrale puis à invalider tous les emplacements d'étiquette Lorsqu'il est utilisé en combinaison avec 1 'UC 80486, le contrôleur 12 suppose que FLUSH# est activé pendant le vidage ou après que le vidage de l'unité centrale a été terminé, évitant ainsi au contrôleur 12 le besoin d'exécuter des cycles de rétro- invalidation Après FLUSH#, toutes les lignes de cache de l'UC 10 et du contrôleur 12 devraient être à l'état lIT SYNC#, le signal de synchronisation de cache du contrôleur 12, fourni par CBM 11, produit la syn- chronisation du dispositif à étiquettes 31 du contrôleur 12 avec la mémoire centrale par la réécriture de toutes les entrées modifiées dans la mémoire centrale A la fin du processus de synchronisation, toutes les lignes du contrôleur 12 et de l'UC 10 auront des états non modi- fiés La différence entre FLUSH# et SYNC# est que ce dernier n'invalide pas des entrées du dispositif à éti- quette 31 Toutes les entrées valables seront conservées et toutes les lignes modifiées deviendront des lignes exclusives (à l'état lEJ) FLUS Hf et SYNC# sont des signaux d'entrée asynchrones du contrôleur 12 A la fois pendant les séquences FLUSH# et pendant les séquences SYN Ci, le contrôleur 12 active AHOLD sur l'interface d'UC 30, mettant ainsi 1 'UC 10 dans le mode de demande de maintien d'adresse, mais le contrôleur 12 continue de surveiller le bus mémoire 15 sur la compatibilité des données FSIOUT#, représentant un signal de sortie du contrôleur 12, indique le début et la fin des séquences FLUSH#, SYNCE et RESET. D 3 Signaux d'interface du bus mémoire L'interface 38 du bus mémoire comporte des broches pour l'horloge de surveillance, l'adresse de bus mémoire, la sélection du mode de surveillance et la définition de l'attribut mémoire, en plus des broches de20 commande de ligne et de sous-ligne (MALE, MAOE#, MBALE et MBAOE*) évoquées précédemment. SNPCLK est une broche de signal d'entrée d'horloge de surveillance, destinée à être utilisée avec des bus mémoire cadencés par une horloge Dans ce mode, le contrôleur 12 suppose que les signaux en relation avec la surveillance sont en synchronisme avec SNPCLK. MCFAO-MCFA 6, MSETO-MSET 1 O et MTAG 0-MTA G 11 sont des lignes d'adresse du bus mémoire ayant la même fonctionnalité que les homologues du bus UC CFA 0-CFA 6, SETO-SET 1 O et TAGO-TAG 11 et doivent être reliées aux connexions pour les signaux A 2-A 31 (A 3-A 31 pour un bus de 64 bits) du bus mémoire 15 Ensemble avec les vali- dations d'octet, ces signaux définissent la zone phy- sique de mémoire ou d'E/S à laquelle il est accédé Du fait que ces signaux définissent la configuration du contrôleur 12, y compris la capacité de l'antémémoire, le rapport de lignes de l'UC et le nombre de lignes par secteur, les connexions qui s'y rapportent sont à réaliser exactement comme pour leurs signaux homologues recpetifs du bus UC 14 Les broches en question sont i bidirectionnelles: le loquet d'adresse bus mémoire du contrôleur 12 commande ces signaux dans les cycles de bus mémoire normaux et le loquet de surveillance 33 du contrôleur 12 les reçoit en tant que signaux d'entrée pendant la surveillance Comme décrit dans le chapitre précédent, MAOE* et MBAOE# valident les lignes d'adresse du bus mémoire, MBAOE# contrôlant seul la validation de l'adresse de sous-ligne (salve). Le contrôleur 12 permet trois modes de sur- veillance au choix: le mode asynchrone échantillonné, le mode asynchrone à horloge et le mode synchrone Les modes sont choisis à la remise à l'état initial par la configuration du signal SNPCLK comme suit: niveau haut pour le mode asynchrone à échantillonnage, niveau bas pour le mode synchrone et alternance pour le mode asynchrone à horloge Dans le mode à échantillonnage, le contrôleur 12 échantillonne les lignes d'adressel attribut au flanc descendant du signal d'échantillonnage de surveillance SNPSTB# Dans le mode cadencé (à hor- loge), le contrôleur 12 échantillonne des signaux d'adresse/attribut pendant le flanc montant du signal d'horloge de surveillance d'entrée SNPCLK, lorsque SNPSTB# est échantillonné actif Dans le mode synchrone, le contrôleur 12 échantillonne des signaux d'attribut d'adresse de CLK lorsque SNPSTB# est échantillonné actif Le signal de sortie SNPCYC# est activé pendant la période d'horloge au cours de laquelle la surveillance réalise effectivement la recherche d'étiquette. Le signal de validation du loquet de sortie d'adresse mémoire, MAOE#, décrit précédemment en Lvd CI O lon avec l'interface du CBM 11, doit être inactif afin de permettre une requête de surveillance. SNPNCA et SNPINV sont des signaux d'attribut de cycle de surveillance échantillonnés lors de SNPSTB*. Le signal SNPNCA indique que le maître actuel du bus mémoire opère un accès ne passant pas par le cache, ce qui permet au contrôleur 12 de maintenir des lignes exclusives pour des lectures SNPINV indique que la ligne surveillée doit être invalidée quand la sur- veillance est terminée. Lors d'une requête de surveillance, le con- trôleur 12 verrouille les lignes d'adresse et d'attribut de surveillance et effectue une recherche en anté- mémoire Les cycles de surveillance sont toujours prioritaires par rapport au dispositif à étiquettes 31 et entraînent un état d'attente de l'UC en cas de conflits d'utilisation Le contrôleur 12 active MTHIT# pour des cycles de surveillance tombant sur une ligne exclusive, partagée ou modifiée quelconque dans le cache SRAM 13 Le signal MHITM# est activé pendant un cycle de surveillance pour indiquer une correspondance sur une ligne modifiée Si ce signal est actif, le contrôleur 12 programme automatiquement une réécriture sur le bus mémoire 15 Si le contrôleur 12 excite MHITM#, il alerte le CBM Il demandeur en lui signifiant que le bus doit temporairement être cédé au surveillant qui a excité i.HITM#, de sorte que la ligne modifiée peut être ins- crite sur le bus mémoire SNPBSY#, l'indicateur "sur- veillance occupée" peut être activé également si une correspondance ou surveillance est tombée sur une ligne modifiée ou si une rétroinvalidation est nécessaire alors qu'une telle opération est déjà en cours Dans un cas comme dans l'autre, le contrôleur 12 n'effectuera pas la recherche pour une surveillance en attente jusqu'à ce que SNPBSY# soit désactivé Ce signal est désactivé quand le contrôleur 12 est prêt à accepter un autre cycle de surveillance La cadence de surveillance maximale est d'une surveillance toutes les deux périodes d'horloge dans le mode synchrone. Lorsque le signal MKEN 4 t, appliqué à l'entrée du contrôleur 12, est actif, il indique la faculté de l'UC 10 d'une mise en antémémoire par le bus mémoire dans le contrôleur 12 Quand ce signal est inactif ou ne peut pas être mis en antémémoire, le contrôleur 12 n'effectuera pas de remplissages ou d'attributions de 1 a ligne. MRO 0, constituant un attribut "ligne à lecture seulement", est un signal appliqué à l'entrée du con- trôleur 12 et ayant pour effet que la ligne adressée est protégée en écriture Toute écriture sur cette ligne produira une impossibilité ou discordance en écriture non-attribuable (PALLOC# inactif) Les lignes "à lecture seulement" ne pourront être mises en antémémoire que si MKEN^ est actif Cet attribut est utile pour la mise en antémémoire du contenu de dispositifs ROM (mémoire morte ou à lecture seulement). MWB/WT# est un attribut d'entrée de bus mémoire indiquant, soit un attribut de réécriture, soit un attribut de double écriture, et est échantillonné à la fermeture de la fenêtre de surveillance SWEND#. DRCTM#, constituant un signal d'attribut d'entrée du bus mémoire, indique un transfert d'état direct à lM 14 lorsqu'il est actif, ce qui autorise le contrôleur 12 de sauter l'état lEl et de faire passer la ligne à l'état lMI Cet attribut est utile pour per- mettre l'échange de propriété au cours de correspon- dances en de surveillance sur des données altérées et/ou pour autoriser le suivi de l'extérieur du cache du con- trôleur Il est échantillonné par le contrôleur 12 à la fermeture de la fenêtre de surveillance SWEND#. 4 Broches d'interface de la mémoire cache Le contrôleur 12 est en charge de neuf broches d'interface de mémoire cache ayant les fonctions sui- vantes: commande de voie (WAY': commande de dispositif (WRARR#, MAWEA 4#); et commande de tampon (MCYC, BU Sf, WBWE#, WBA, WBTYP). WAY, qui est un signal de sortie, est utilisé pur indiquer la voie correcte à utiliser par la mémoire cache 13 au cours de cycles d'écriture, remplissages de ligne et chargements de tampon pour la ré-écriture. Lorsqu'une discordance MRU (règle "le plus récemment utilisé") se produit avec une correspondance en lecture, WAY est utilisé pour actualiser, dans le contrôleur de cache 12 et la mémoire cache 13, le bit MRU indiquant la voie la plus récemment utilisée. WRAR Rfl constituant un signal de sortie, est utilisé pour contrôler des écritures en mémoire cache originaires du bus UC 14 et effectuées dans la mémoire cache RAM Il amène la mémoire cache 13 à positionner son multiplexeur de voies internes pour la sélection de la voie indiquée par WAY et à actualiser MRU de la mémoire cache lorsque cela est nécessaire Dans le cas de cycles de lecture à discordance, WRARR# est activé afin d'actualiser le bit MRU. MAWEA#, constituant un signal de validationl attribution d'écriture du dispositif sur le bus mémoire, indique à la mémoire cache 13, lorsqu'il est actif, qu'elle doit inscrire la ligne contenue dans sa mémoire tampon dans la RAM au cours de la période d'horloge Faisant suite à CRDY#, lequel est le signal "bus mémoire cache prêt" généré par CBM 11 Dans le cas de cycles d'écriture, lorsque MAWEA# est actif, cela indique que le cycle demande l'attribution d'une nouvelle étiquette. MCYC#, qui est un signal d'indication de cycle de bus mémoire et est généré par le contrôleur 12, indique à la mémoire cache 13 que le cycle UC en cours utilisera les tampons de mémoire Si le cycle en cours est une lecture et MCYC# passe à l'état actif, le cycle devient une lecture sur le bus mémoire 15 Si le cycle UC en cours est une écriture, l'excitation de MCYC# indique un cycle d'écriture sur le bus mémoire 15 Si le cycle d'écriture UC se termine avant que CRDY 4 ne soit excité, le tampon de mémoire est marqué plein et l'écri- ture est différée jusqu'à ce que CRDY#, terminant le cycle de bus mémoire, soit excité. BUS#, qui est un signal de sélection de bus/dispositif généré par le contrôleur 12, commande la sélection de données du tampon UC au cours d'opérations de lecture Lorsqu'il est actif, la mémoire cache 13 positionne un multiplexeur interne de manière que le bus mémoire 15 soit la source au lieu de son système RAM Le signal BUS# n'est pas activé pour des cycles de lecture verrouillés (double lecture), malgré le fait que le cycle demande le bus mémoire 15, si le cycle tombe sur une ligne à l'état lMl dans la mémoire cache 13 Au lieu de cela, des données seront alors fournies à partir du20 dispositif. WBWE#, constituant un signal d'autorisation d'écriture en tampon de réécriture et généré par le contrôleur 12, est utilisé en combinaison avec WBA (signal d'adresse de tampon de réécriture), pour charger les deux tampons de réécriture de la mémoire cache, un pour chaque ligne de secteur WBA, s'il est échantil- lonné lorsque WBWE# est actif, indique la première ligne dans le tampon de réécriture; lorsqu'il est inactif, il indique la seconde ligne.30 WBTYP, qui est un signal indiquant le type de cycle de réécriture, est généré par le contrôleur 12 en combinaison avec WBA Lorsqu'il est au niveau haut, il indique un cycle de réécriture à surveillance et désigne les deux tampons de surveillance de la mémoire cache 13;35 dans le cas contraire, il indique un cycle de remplace- ment ou de ré-écriture explicite dû à FLUSH# ou SYNC# et désigne les deux tampons de réécriture de la mémoire cache 13 Il est échantillonné par la mémoire cache 13 au moyen de l'activation de WBWE# ou de HITM# et ADS*. Donc, WBTYP est employé ensemble avec WBA pour spécifier 5 la première ou la deuxième ligne des tampons de sur- veillance ou de ré-écriture. E Protocole de compatibilité de cache Afin de maintenir la compatibilité des données 1 c dans un système à processeurs multiples, le contrôleur de cache 12 forme un cache "de réécriture" avec toute l'assistance requise pour maintenir la compatibilité des données lors de traitements multiples Du fait que n'importe quel contrôleur de cache peut, à un moment15 donné, contenir des données qui ne sont pas mises à jour en mémoire, un mécanisme de réécriture est prévu pour assurer que les données lues par un quelconque maître du bus système soient correctes et d'actualité. Une caractéristique clé pour les systèmes à traitements multiples est la réduction de l'utilisation du bus mémoire Celui-ci devient vite un goulot d'étran- glement pour les ressources à mesure que des processeurs sont ajoutés Le mécanisme de compatibilité de cache assure l'utilisation d'une largeur de bande minimale du25 bus mémoire. Le contrôleur de cache 12 permet de définir des parties de la mémoire centrale comme "non suscep- tibles d'être mises en antémémoire" Pour les zones susceptibles d'être mises en antémémoire, il permet de3 G définir des parties sélectionnées comme des emplacements de double écriture. Ce protocole est mis en oeuvre dans le con- trôleur de cache 12 en affectant des bits d'état à chaque ligne mise en antémémoire Ces états dépendent à35 la fois d'activités de transfert de données exercées par le contrôleur 12 en tant que maître ou gestionnaire de bus, et d'activités de surveillance exercées en réponse à des requêtes de surveillance générées par d'autres maîtres du bus mémoire. Le protocole de compatibilité est la série de règles permettant au contrôleur de cache 12 de contenir des données qui ne sont pas actualisées en mémoire centrale, tout en assurant que les accès en mémoire par d'autres dispositifs ne reçoivent pas de données dépas- sées Cette compatibilité est réalisée en affectant un état de compatibilité spécial à chaque entrée (ligne) mise en antémémoire dans le contrôleur 12 Les règles suivantes s'appliquent aux cycles de lecture et d'écri- ture en mémoire Tous les cycles d'E/S et spéciaux contournent le cache. Le protocole de compatibilité du contrôleur de cache 12 a 4 états Ils définissent si une ligne est valable (correspondance ou discordance), si elle est disponible en d'autres caches (à l'état partagé ou exclusif) et si elle est modifiée (a été modifiée) Les quatre états sont: lIl INVALIDE Cet état indique que la ligne n'est pas disponible dans le cache ou qu'elle n'est pas valable et qu'une copie valable se trouve ailleurs Une lecture sur cette ligne donnera une discordance ou absence et amènera lecontrôleur 12 à exécuter un remplissage de ligne (il va chercher toute la ligne et la dépose dans le cache SRAM 13) Une écriture sur cette ligne amènera le C 5 à exécuter un cycle d'écriture double sur le bus mémoire 15 et, dans certaines circonstances, à déclencher une attribution * (affectation d'une nouvelle valeur à une étiquette). lSI PARTAGE Cet état indique que la ligne en question est potentiellement partagée ou utilisée en commun avec d'autres caches (la même ligne peut exister en plusieurs caches) Une ligne partagée peut être extraite du cache SRAM 13 sans un accès en mémoire centrale, laquelle contient cependant une copie valable. écriture sur une ligne partagée actualise le cache, mais oblige également le contrôleur 12 de générer un cycle de double écriture sur le bus mémoire 15 En plus R de l'actualisation de la mémoire centrale, le cycle de double écriture invalidera cette ligne en d'autres caches Comme l'écriture sur une ligne partagée provoque un cycle de double écriture, le système peut imposer une 'stratégie de double écriture" sur des adresses sélec- tionnées en faisant passer ces adresses à l'état lSI. Ceci est réalisable en positionnant l'attribut PWT dans la table de page de l'UC ou en excitant la broche MWD/WT# chaque fois qu'il est fait référence à l'adresse en question. lEl EXCLUSIF Cet état indique une ligne qui est exclusivement disponible dans ce cache seulement et que la ligne n'est pas modifiée (la mémoire centrale possède également une copie valable) L'écriture sur une ligne exclusive la fait passer à l'état modifié, ce qui no est possible sans informer d'autres caches, de sorte qu'il n'en résulte aucune activité sur le bus mémoire. lMI MODIFIE Cet état indique une ligne qui est exclusivement disponible dans ce cache seulement et est modifiée (la copie de la mémoire centrale est dépassée ou non-actualisée) Une ligne modifiée peut être actualisée localement dans le cache sans acquisi- tion du bus mémoire. MESI est un acronyme utilisé pour se référer aux quatre états décrits cidessus et sera employé par commodité pour décrire les transitions d'état. E.1 Transitions d'état de base Les transitions d'état de base de lignes de cache peuvent être classées en deux parties: la première couvre les changements d'état MESI qui se produisent dans un noyau d'une unité centrale/cache sous l'effet de ses propres actions; la seconde décrit les transitions d'état MESI dans un noyau d'UC cache provoquées par les actions d'autres dispositifs, externes La figure 13 montre un diagramme d'état partiel du protocole de cohérence MESI qui comporte ces transitions d'état de base. L'état MESI de chaque ligne de cache change par suite de la prise en charge par le contrôleur 12 et le cache 13 de demandes de lecture et d'écriture émises par l'UC 10 Cependant, l'état de la ligne de cache (M, E ou S) reste inchangé par une opération de lecture trouvant une correspondance dans le cache 13. Lorsque l'UC 10 génère un cycle de lecture sur le bus UC 14 et la donnée n'est pas présente dans le 1 Dcache 13, il se produit une discordance ou absence en lecture Il se produit également une discordance en lecture si une correspondance est trouvée, mais la donnée en question est dans l'état lIl (invalide) Par conséquent, le contrôleur 12 génère un accès en mémoire GO centrale pour en extraire la donnée requise (à supposer qu'elle puisse être mise en antémémoire) et les données environnantes nécessaires pour remplir la ligne de cache La broche PCD (mise de page en antémémoire invalidée) est une borne d'entrée du contrôleur 12 alimentée par la sortie PCD de l'unité centrale, cor- respondant à un bit d'aptitude de mise en antémémoire dans l'élément de table de page d'une adresse virtuelle d'emplacement de mémoire Si le bit PCD est excité lorsque l'UC présente une adresse en mémoire, cet emplacement ne sera pas mis en antémémoire dans le contrôleur 12, ni dans l'UC 10 Le contrôleur 12 permet de déterminer l'aptitude à la mise en antémémoire à la fois sur une base page par page et sur une base ligne par ligne La fonction d'aptitude de mise en antémémoire de page est déterminée par logiciel, tandis que l'apti- tude de mise en antémémoire sur la base ligne par ligne Us régie par le matériel MKEN# est un signal appliqué à une borne d'entrée du contrôleur 12 connectée au contrôleur du bus mémoire ou au bus mémoire Si MKEN* est inactif, il empêche la mise en antémémoire de l'emplacement de mémoire à la fois dans le contrôleur 12 et dans l'UC 10 et affecte seulement l'adresse en cours. Si une discordance en lecture est qualifiée comme n'étant pas apte à être mise en antémémoire par l'un quelconque de ces signaux, la ligne n'est pas stockée dans le cache 13 ni dans le cache de 1 'UC 10 et aucun état de cache n'est modifié Lors d'une discordance en écriture, une indication de non-possibilité de mise en antémémoire de l'une quelconque de ces informations d'entrée impose une discordance en écriture sans attri- bution Il est à noter que si le cache 13 possède déjà une copie valable de la ligne, l'attribut PCD de 1 'UC 10 et l'attribut MKEN# du bus mémoire 15 sont ignorés. La broche DRCTM# (directement à l'état modi- fié) est une borne d'entrée dont le signal informe le contrôleur 12 de sauter l'état exclusif lE) et d'amener une ligne directement à l'état modifié lMI Le signal peut être excité pendant des lectures de la mémoire centrale pour des accès à des données spéciales du cache 13, tels qu'une lecture pour connaître la propriété et un transfert de cache à cache Le signal peut être excité aussi pendant des écritures à des fins de suivi de cache et également pour faire monter une ligne de l'état lSI à l'état lMI Les nouvelles données rem- placent une ligne invalide ou la ligne la moins récem- 3 o ment utilisée (LRU) Si la ligne LRU remplacée est à l'état modifié lMI, elle est réinscrite en mémoire. Lorsqu'une ligne est remplacée, le contrôleur de cache 12 est également responsable de l'invalidation de la même ligne dans le cache primaire afin de préserver le principe d'inclusion L'invalidation peut porter sur plusieurs lignes (rapport de ligne > 1) dans le cache "ri maire et impliquer éventuellement des réécritures a partir du cache primaire si des données ont été modi- fiées. La nouvelle ligne est placée à l'état exclusif LEl, à moins que l'UC 10 n'active sa broche PWT (double écriture de page), ce qui indique une demande de double écriture de l'unité centrale, ou que le bus mémoire 15 n'excite la broche MWD/WT# (double écriture sur bus mé- moire), auquel cas la nouvelle ligne est placée à l'état -0 partagé lSI par le contrôleur 12 La nouvelle ligne sera amenée à l'état modifié lMl au lieu de l'état exclusif lEl si DRCTM# est excité. Lorsque 1 'UC 10 génère un cycle d'écriture et la donnée est présente dans le cache 13, elle est actualisée et peut subir un changement d'état MESI. Si la ligne ayant donné lieu à une correspon- dance en écriture, se trouve au départ à l'état exclusif lEl, elle passe à l'état modifié lMI lors d'une écri- ture Si une telle ligne est à l'état modifié lMl, elle 0 y reste Aucun de ces cas ne provoque une quelconque activité sur un bus. Une écriture sur une ligne qui est dans l'état partagé lSI, amène le contrôleur 12 à sortir la donnée et à l'inscrire en mémoire centrale, ainsi qu'à actua-25 liser le cache 13 L'inscription en mémoire centrale sert aussi à invalider toute copie de la donnée résidant dans un autre cache L'état de la ligne du cache change selon l'activité sur les broches PWT et MWB/WT# Si aucune de ces broches n'est excitée, la ligne ayant donné lieu à une correspondance ou succès en écriture devient exclusive lEl Si l'une ou l'autre de ces broches est excitée, la ligne est forcée à rester à double écriture, de sorte qu'elle conserve l'état partagé lSI.35 Une discordance ou un insuccès en écriture se produit si 1 'UC 10 génère un cycle d'écriture et la usinée niest pas présente dans le cache 13 Dans le cas d'un insuccès en écriture simple, le contrôleur 12 assiste l'unité centrale 10 en délivrant la donnée à la mémoire, mais la donnée n'est pas placée dans le cache 13 Comme il n'y a pas d'affectation de lignes de cache, il ne se produit aucun changement d'état. Une discordance ou un insuccès en écriture avec attribution est un cas spécial d'un insuccès en écriture Il se produit lorsque l'emplacement de mémoire En inscrit par l'UC n'est pas dans le cache 13 à ce moment, mais est amené dans le cache 13 et actualisé Comme un insuccès en écriture normal, le contrôleur 12 assiste l'UC 10 à extraire la donnée et à l'inscrire en mémoire centrale Après cette inscription, le contrôleur 12 relit la même donnée en suivant les règles indiquées plus haut pour un insuccès en lecture La mémoire cache 13 permet que cette fusion de données se produit à l'intérieur, ce qui évite la nécessité d'une demande d'écriture sur le bus mémoire 15 Dans ce cas, DRCTM# doit être utilisé pour imposer l'état modifié lMI. L'aptitude à effectuer une attribution dépend de ce que toutes les conditions suivantes soient rem- plies: l'écriture est susceptible d'être mise en anté- mémoire; PWT n'est pas excité, ce qui impose la double écriture; l'écriture n'est pas verrouillée (LOCK); l'écriture s'effectue en mémoire (et non pas en E/S) et l'écriture n'est pas mise en antémémoire comme pour une lecture seulement Ces conditions sont signalées au CBM 11 par l'excitation de PALLOC#. Les transitions d'état MESI dans le contrôleur 12 et le cache 13 d'un noyau peuvent être induites par des actions déclenchées par d'autres noyaux ou disposi- tifs raccordés au bus mémoire 15 partagé Pour l'expli- cation suivante, il est supposé que le contrôleur 12, répondant à des actions d'autres dispositifs, ne dispose pas du bus mémoire 15 à ce moment et peut donc être cosildéré comme un "esclave" ou, dans le cas de sur- veillance, comme un "surveillant" Le contrôleur qui dispose à ce moment du bus est le "maître". Le maître qui accède à une donnée provenant de a la mémoire centrale sur le bus mémoire 15, envoie une demande à tous les dispositifs à cache sur le bus (surveillants) pour contrôler ou surveiller leurs caches sur la présence d'une version actualisée plus récemment de la donnée à laquelle il est accédé Si l'un des La surveillants détient une copie de la donnée requise, on appelle cette situation une "correspondance en surveil- lance" A la détection d'une correspondance en sur- veillance, le contrôleur de cache 12 doit actualiser -5 l'état de la ligne comme spécifié par SNPINV et SNPNCA. Le contrôleur 12 est également responsable du maintien de la compatibilité du cache primaire, contenu dans l'UC , sur la base du principe d'inclusion Plus spéciale- ment, toutes les lignes dans le cache primaire doivent se trouver dans le cache secondaire et toutes les lignes ayant éventuellement l'état lEl ou lMI dans le cache primaire doivent avoir l'état lMl dans le cache du second niveau, comme indiqué en détail dans les tables d'état du paragraphe E 3. Si un surveillant détient une version modifiée de l'information ("correspondance en surveillance sur une ligne modifiée"), il procède à la génération d'un "cycle d'interrogation" de l'UC 10, demandant à celle- ci si elle détient également une copie modifiée de la ligne, c'est-à- dire une ligne modifiée plus récemment. La ligne la plus actuelle est extraite et inscrite par le contrôleur de l'agent ou correspondant surveillant et inscrite sur le bus mémoire 15 puis en mémoire centrale ou directement dans le maître ayant émis la demande, dei 5 sorte que celui-ci peut l'utiliser. Les changements d'état selon le protocole MESI dans un cache surveillant ayant une correspondance en surveillance, dépendent des signaux d'entrée d'attribut SNPINV et SNPNCA, lesquels sont appliqués par le maître. Le signal d'entrée SNPINV indique à un con- trôleur surveillant d'invalider la ligne surveillée en cas de correspondance: le maître demandant la surveil- lance est sur le point d'écrire sa copie de cette ligne et possédera par conséquent la copie la plus récente. Lorsque SNPINV est excité à la demande de surveillance, toute correspondance en surveillance est placée dans l'état invalide lIl et une "rétro-invalidation" est générée, qui ordonne à l'unité centrale de contrôler son cache et d'invalider de façon analogue une copie de la ligne Lorsque le contrôleur surveillant a une corres- pondance en surveillance sur une ligne modifiée et SNPINV est excité par le maître du bus, la rétro-inva- lidation est combinée avec le cycle d'interrogation Les cycles d'interrogation s'appliquent seulement à l'UC formée par un i 860 XP, le contrôleur 12 effectuant les "rétro-invalidations" si l'UC est un 80486 puisqu'il s'agit dans ce cas d'un cache à double écriture qui ne contient jamais des données modifiées. Le signal d'entrée SNPNCA informe un contrô- leur surveillant si le maître ayant émis la demande est en cours d'effectuer un accès sans mise en antémémoire. Si le maître demandeur ne met pas la donnée en anté- mémoire, une correspondance de surveillance sur une ligne modifiée lMl ou exclusive lEJ peut amener celle-ci à l'état exclusif Parce que le demandeur ne met pas la ligne en antémémoire, il n'est pas nécessaire de dif- fuser une invalidation Si le maître demandeur met la donnée en antémémoire, une correspondance en surveil- lance sur une ligne modifiée ou exclusive doit amener celle-ci à l'état partagé, ce qui assure qu'un futur succès en écriture entraîne une invalidation en d'autres caches Il est à noter qu'en cas de correspondance en surveillance sur une ligne partagée, celle-ci doit rester à l'état partagé sans qu'il soit tenu compte de SNPNCA Il est à noter aussi qu'un SNPINV excité est toujours prioritaire par rapport à SNPNCA. La synchronisation de cache est effectuée pour actualiser la mémoire centrale par rapport au système à cache secondaire Les signaux de commande pour y parve- nir comprennent: FLUSH# et SYNC#. -L V Un vidage de cache est déclenché par l'exci- tation de la broche FLUSH# du contrôleur 12 Après ce déclenchement, le contrôleur 12 extrait du cache et inscrit en mémoire centrale toutes les lignes modifiées, en effectuant de nouveau des rétro-invalidations et des cycles d'interrogation sur l'UC 10 Lorsque le vidage est terminé, toutes les introductions de la RAM 31 à étiquettes du cache secondaire seront à l'état invalide. L'activation de la broche SYNC# entraîne également l'écriture en mémoire de toutes les lignes modifiées A la différence de ce qui se passe en cas d'excitation de la broche FLUSH#, les lignes de cache restent valables après que le processus SYNC# est terminé, les lignes modifiées passant à l'état exclusif. E 2 Transitions d'état supplémentaires En plus des transitions d'état de base dé- crites dans ce qui précède, plusieurs autres événements produisent des effets sur les états MESI, tels que: des cycles d'accès sans possibilité de mise en antémémoire, pour lecture seulement, verrouillés et à transfert direct imposé à l'état lMI. Le signal d'entrée MROS (lecture en mémoire seulement) du contrôleur 12 est appliqué par le bus mémoire pour indiquer qu'un emplacement de mémoire permet seulement une lecture Lorsque ce signal d'entrée MROS est excité au cours d'un remplissage de ligne consécutif à une absence en lecture, il a pour effet que la ligne dans le cache 13 est amenée à l'état partagé lSu et il positionne aussi un bit "lecture seulement" dans la RAM 31 à étiquettes du cache Des accès par MRO 4 ne sont pas mis en antémémoire dans 1 'UC 10 Lors de succès en écriture consécutifs sur une ligne pour lecture seulement, l'écriture est en fait réalisée (en double) en mémoire, sans actualisation de la ligne du cache 13, laquelle reste à l'état partagé lSI, avec le bit "lecture seulement" positionné. Le signal LOCK#, appliqué par l'UC 10, indique que le cycle demandé doit verrouiller l'emplacement de mémoire pour des accès en mémoire atomiques Parce que les cycles verrouillés sont utilisés pour la synchroni- sation entre processeurs et entre tâches, tous les cycles verrouillés doivent apparaître sur le bus mémoire Lors d'une écriture verrouillée, le contrôleur 12 traite l'accès comme un cycle à double écriture, en envoyant la donnée sur le bus mémoire pour mettre à jour la mémoire et invalider d'autres copies mises en anté- mémoire Si la donnée est également présente dans le cache 13, elle est actualisée, mais son état M, E ou S reste inchangé Pour des lectures verrouillées, le contrôleur 12 suppose une absence en cache et commence25 un cycle de lecture en mémoire Si la donnée réside dans la mémoire cache 13, l'état M, E ou S de la donnée reste inchangé Si la donnée demandée est contenue dans le cache 13 à l'état modifié lMl, lorsque le bus mémoire retourne la donnée, le contrôleur 12 utilisera la donnée du cache 13 en ignorant la donnée sur le bus mémoire. Les cycles de lecture et d'écriture verrouillés (LOCK) correspondant à une absence ou une discordance dans le cache 13, ne peuvent pas être mis en antémémoire, pas plus dans le cache 13 que dans 1 'UC 10. Il est possible d'améliorer la mise en oeuvre pour des verrouillages LOCR dans une ligne de cache en permettant la mise en antémémoire de la ligne et le blocage de surveillances sur la ligne en question pendant le cycle verrouillé Cette amélioration rédui- rait plus encore le trafic sur le bus mémoire en li- mitant les accès à la plupart des sémaphores au cache. E.3 Tables d'état Les lignes mises en antémémoire par le con- trôleur 12 peuvent changer d'état soit par suite de l'activité du bus UC 14 (qui demande parfois au con- trôleur 12 de devenir un maître du bus mémoire), soit par suite de l'activité du bus mémoire 15 générée par d'autres maîtres du système (surveillance) Les tran- sitions d'état sont affectées par le type des transac- > 5 tions de l'UC 10 et du bus mémoire 15 (lectures, écri- tures) et par une série de signaux d'entrée externes décrits précédemment et de variables produites à l'in- térieur et qui seront décrites ci-après En plus, le contrôleur 12 appliquera certains signaux d'UC/bus mémoire par suite du protocole de compatibilité. Les variables produites à l'intérieur et résultant de l'activité du bus UC 14 comprennent: PWT (double écriture de page; broche d'entrée PWT): cette variable ou ce signal indique une demande de double écriture sur le bus UC 14 Il est activé par la broche PWT de l'UC constituée par le 80486 ou le i 86 OXPTM Ce signal produit les remplissages de ligne et fera passer une ligne à l'état lSl s'il est actif Le contrôleur 12 n'exécutera pas d'attributions d'écriture30 pour des lignes à double écriture Si le signal PWT est excité, il est prioritaire par rapport à une indication de ré-écriture sur la broche MBB/WT#. PCD (invalidation de la possibilité de mise en antémé- moire d'une page; broche d'entrée PCD): ce signal indique que la ligne à laquelle il est accédé, ne peut pas être mise en antémémoire Si le signal PCD est excité, il est prioritaire par rapport à une indication de possibilité de mise en antémémoire venant d'un MKEN 4 excité. i 860 XPTM 1486 (indication du type de 1 'UC, 80486 ou i 86 OXPM, broche d'entrée CPUTYP, signal échantillonné pendant le flanc descendant de RESET): ce signal indique le type d'UC connecté à ce moment au contrôleur de cache 12 (protocole de cache primaire et longueur de ligne). NWT (indication de double écriture pour i 86 OXP T, broche lo de sortie WB/WT# de C 5): si ce signal est au niveau bas, il force le i 860 XPTM à maintenir la ligne à laquelle il est accédé à l'état partagé La notation l NWT indiquera le mode de réécriture (WB = 1) Dans ces cas, le i 8 60 XPTM est autorisé à passer aux états exclusifs lEJ, lMl La notation NWT est normalement active sauf indi- cation explicite du contraire. KEN (autorisation de mise en antémémoire dans l'unité centrale, broche de sortie YE Ni): lorsque ce signal est actif, il indique que la ligne demandée peut être mise en antémémoire par le cache primaire de l UC 10 Le signal KEN est normalement actif sauf indication expli- cite du contraire. L'activité du bus mémoire 15 affecte les variables internes suivantes: MWT (indication de double écriture sur le bus mémoire, broche d'entrée MWB/WT#): lorsque ce signal est actif; il force le contrôleur 12 à maintenir la ligne à la- quelle il est accédé dans l'état partagé lSI La nota- tion l MWT indiquera le mode de réécriture Dans ces cas,30 le contrôleur 12 est autorisé à passer aux états exclu- sifs lEl, lMI. DRCTM (indication "bus mémoire directement à lMI, broche d'entrée DRCTM#): lorsque ce signal est actif, il force le saut de l'état lEl et le transfert direct à l'état lMl. t 57 M 4 KEN (validation de la possibilité de mise en anté- mémoire sur le bus mémoire, broche d'entrée MKEN#): lorsque ce signal est actif, il indique que le cycle sur le bus mémoire peut être mis en antémémoire. MRO (indication de lecture seulement sur bus mémoire, broche d'entrée MRO#): lorsque ce signal est actif, il force la ligne à être "lecture seulement". MTHIT (correspondance d'étiquette, broche de sortie MTHIT#): ce signal est activé par le contrôleur 12 pendant des cycles de surveillance et indique que l'adresse surveillée à ce moment tombe sur une ligne valable (lEl, lSl ou lMl) dans le contrôleur 12 et le cache 13. MHITM (correspondance sur une ligne à l'état lMl, broche de sortie MHITM 4): ce signal est activé par les cycles de surveillance du contrôleur 12 et indique que l'adresse surveillée à ce moment tombe sur une ligne modifiée dans le dispositif à étiquettes du contrôleur 12. SNPNCA (accès d'un dispositif sans mise en antémémoire): Lorsqu'il est actif, ce signal indique au contrôleur 12 que le maître actuel du bus effectue un accès sans mise en antémémoire. SNPINV (invalidation): lorsqu'il est actif, ce signal25 indique au contrôleur 12 que le cycle de surveillance en cours doit invalider la ligne de cache adressée. D'autres variables internes comprennent: TRO (étiquette lecture seulement, bit drapeau): lors- qu'il est positionné, ce bit indique que la ligne ou les30 deux lignes associées à cette étiquette sont des lignes "lecture seulement". BINV: exécution d'un cycle de rétro-invalidation d'UC (surveillance avec INV actif ou UC 80486 avec cache WT) pour préserver le principe d'inclusion dans le cache primaire. INQR: exécution d'un cycle d'interrogation de i 860 XPTM (peut être exécuté alors que INV est actif, avec réali- sation d'une rétroinvalidation en même temps) pour préserver le principe d'inclusion dans le cache pri- i maire. WBCK (cycle de réécriture du contrôleur 12): il s'agit d'un cycle d'écriture sur le bus mémoire 15 généré lorsqu'une donnée ayant l'état lMI et se trouvant en cache dans le contrôleur 12 doit être recopié en mémoire10 centrale Un cycle de réécriture affecte une ligne complète du contrôleur 12. WTHR (cycle de double écriture de C 5): il s'agit d'un cycle d'écriture système en réponse à une écriture de l'UC Il peut ou il peut ne pas affecter le cache SRAM (actualisation) Dans un cycle de double écriture, le contrôleur 12 applique au bus mémoire 15 les mêmes signaux d'adresse, de données et de commande que ceux appliqués par l'UC 10 sur le bus UC 14 La mémoire centrale est actualisée et d'autres caches invalident leurs copies. RTHR (cycle de double lecture du contrôleur 12) Il s'agit d'un cycle spécial pour supporter des lectures verrouillées sur des lignes ayant une correspondance dans le contrôleur 12 Celui-ci demandera un cycle de25 bus mémoire 15 pour des motifs de synchronisation de verrouillage et des données seront fournies à partir du bus 15, sauf pour l'état lMI pour lequel des données seront fournies à partir de la mémoire 13. LFIL (remplissage de ligne): ce signal amène le con- trôleur 12 à générer des cycles sur le bus mémoire 15 pour extraire une nouvelle ligne et la déposer dans le cache 13. RNRM (cycle de lecture normal du contrôleur 12): il s'agit d'un cycle de lecture normal qui sera exécuté par35 le contrôleur 12 pour des accès sans possibilité de mise en antémémoire. SRUP (actualisation de la SRAM du cache 13): se produit chaque fois qu'une nouvelle information est placée dans la mémoire cache 13 Le cycle LFIL implique une actua- lisation. 5 ALLOC (attribution au contrôleur 12): il s'agit d'un cycle de discordance ou d'insuccès en écriture qui est susceptible d'être mis en antémémoire, ce qui amène le contrôleur 12 à émettre une lecture de ligne. Les figures 14 à 19 définissent les tran- sitions d'état à partir de l'état actuel, indiqué dans la première colonne, la condition existante et l'état suivant qui en résulte, dans la deuxième colonne, ainsi que les activités du bus mémoire et de l'UC (exprimées par les variables définies ci-dessus du mode de réali- l 5 sation préféré) indiquées dans les troisième et qua- trième colonnes respectivement Pour des raisons de commodité, le symbole "XP" est utilisé dans les figures 14 à 19 pour désigner une unité centrale constituée par le i 86 OXPTM et "CC" désigne le contrôleur de cache -O 12. F Chronologie de base des protocoles Le fonctionnement du système à cache secon- daire dépend dans une forte mesure de l'interaction du contrôleur de cache 12 et du CBM 11, représentant les deux éléments qui contrôlent le flux de données sur le bus mémoire 15 vers et depuis la mémoire centrale, ainsi que d'autres systèmes à cache et maîtres de bus. La figure 20 est un schéma-bloc plus détaillé du système à cache secondaire et fournit des détails supplémentaires sur les flux de contrôle, d'adresse et de données entre l'UC 10, le bus UC 14, le contrôleur 12 C 5, le cache SRAM 13 C 8, l'unité facultative d'émetteur- récepteur de bus (XVR) ou unité de verrouillage 16, le CBM il et le bus mémoire 15. s O Le contrôleur 12 demande le contrôle du bus mémoire 15 en envoyant un signal à CBM 11 Ce dernier est responsable de l'arbitrage et de l'octroi du bus au contrôleur 12 Une fois que le bus a été octroyé, CBM il est responsable de l'exécution du cycle demandé, de la surveillance des autres caches et de la terminaison du cycl'e Le contrôleur 12 supporte différents modes de surveillance, différents modes de fonctionnement du bus mémoire et diverses options quant au protocole de compatibilité de cache La conception du CBM 11 dicte l'emploi de ces fonctions et exactement de quelle manière elles sont utilisées. F.1 Attributs et progression de cycle Un cycle de bus mémoire estdéclenché par la production du signal d'échantillonnage d'adresse de cache CADS# par le contrôleur de cache 12 Lorsqu'il est excité, ce signal indique au CBM 11 que les signaux de commande de cycle de cache et d'attribut sont valables. Le contrôleur 12 fournit également le signal d'échan- tillonnage de données de cache CDTS# à CBM 1 l Le signal CDT Si suit CADS# et indique le commencement de la phase "données" du cycle S'agissant de cycles de lecture, il indique ce commencement dans la période d'horloge CLK suivante, le bus UC 14 étant en mode de lecture sous la commande du CB Il Jjusqu'à ce que le dernier BRDY# soit excité (ce qui est spécifié par les attributs de lon- gueur de cycle et de possibilité de mise en antémémoire fournis à CBM 11, attributs qui sont signalés sur le bus UC 14 par le contrôleur de cache 12 par un signal BLAST# excité) Dans les cycles de lecture, si le CBM 11 détient déjà le bus UC 14, le signal CDTS# sera activé avec CADS# Pour des cycles à attribution, le CMB 11 n'a pas besoin du bus UC 14, raison pour laquelle CDTS# est activé ensemble avec CADS#. S'agissant de cycles d'écriture, CDT 54 indique que le premier élément d'information est disponible sur le bus mémoire 15 Dans des cycles d'écriture d'une UC constituée par un 80486, ce signal est excité ensemble avec CAD 54 Pour des cycles de réécriture, CDT 54 indique que toutes les données sont disponibles, c'est-à-dire que le tampon de réécriture ou le tampon de surveillance est chargé avec des données de réécriture correctes. En réaction à la demande de cycle, le con- trôleur de bus mémoire 11 répond par les signaux de progression de cycle Tous les signaux de progression de cycle sont échantillonnés une fois après CDTS# et CRD Yj pour le cycle précédent, puis sont ignorés jusqu'à l'application du signal CRDY# du cycle correspondant. BGT# indique une transaction par le contrôleur de bus mémoire Il pour compléter l'exécution du cycle sur le bus mémoire 15 Jusqu'à ce point, le contrôleur de cache 12 est propriétaire du cycle Cela signifie que des réécritures de surveillance intermédiaires y mettront un 0 terme et que le contrôleur 12 est responsable de la réémission du cycle au CBM 11 si nécessaire Un cas particulier o le contrôleur de cache 12 émettra un cycle nouveau, non réémis, est le suivant: si l'opéra- tion CAD Sf d'origine est un cycle de réécriture et le cycle de surveillance interrompant produit une corres- pondance sur le tampon de réécriture concerné, l'opéra- tion CADS# consécutive portera sur un cycle complètement nouveau (et non pas sur une réémission de l'opération CADS# interrompue). Après que CBM 11 a envoyé au contrôleur 12 un signal BGT# indiquant qu'il garantit l'achèvement du cycle sur le bus mémoire 15, CBM 11 détient le cycle Le contrôleur 12 suppose que le cycle sera terminé et ne permettra pas de surveillances jusqu'à ce que des changements éventuels d'étiquette soient résolus BG Tf est suivi de KWEND#, lequel indique que la fenêtre de possibilité de mise en antémémoire est fermée et que le contrôleur 12 doit échantillonner les attributs MIKEN et MRO#, indiquant respectivement au contrôleur 12 la possibilité de mise en antémémoire et la fonction de lecture seulement (Ces attributs peuvent être déter- minés par le décodage de l'adresse du contrôleur) Sur la base de ces attributs, le contrôleur 12 exécute des affectations, remplissages de ligne, remplacements, etc. A la suite de KWEND#, SWEND# est activé Il indique que la fenêtre de surveillance est fermée Le contrôleur 12 échantillonne alors les attributs MWB/WT# et DRCTM# Ces attributs sont déterminés par la sur- veillance des autres caches dans le système A ce moment, le contrôleur 12 actualise l'état de sa RAM 31 à lc étiquettes suivant la progression de l'accès à la ligne. En dernier lieu, le CBM li émet CRDY#, lequel indique au contrôleur de cache 12 la fin du cycle sur le bus. Le contrôleur 12 permet le traitement pipeline sur le bus mémoire en excitant CNA# entre BGT# et CRD Yf, ce qui autorise le CBM 11 à demander une nouvelle phase d'adresse avant la conclusion de la phase de données en cours Le contrôleur de cache 12 supporte un traitement pipeline d'adresse ayant une profondeur d'un niveau sur le bus mémoire 15. Ces opérations sont représentées symbolique- ment sur la figure 21. F.2 Opérations de surveillance Le contrôleur de cache 12 produit des opéra- tions de surveillance sur le bus mémoire pour assurer la compatibilité de cache Une opération de surveillance consiste en deux phases: une phase de lancement et une phase de réponse Pendant la phase de lancement, le CBM 11 fournit de l'information d'adresse de surveillance au contrôleur 12 Pendant la phase de réponse, le contrôleur de cache i 2 fournit l'information d'état de surveillance. Les trois modes possibles pour lancer des surveillances sont: 1 A échantillonnage: on utilise le flanc des- cendant de SNPSTB#; 2 A horloge: SNPSTB# est échantillonné avec SNPCLK; et 3 Synchrone: SNPSTB# est échantillonné avec CLK. Ces trois modes de surveillances sont configurés comme suit: i A échantillonnage: le signal SNPCLK doit être branché au niveau haut; 1 S 2 A horloge: le signal SNPCLK doit être con- necté à la source d'horloge pour la sur- veillance; et 3 Synchrone: le signal SNPCLK doit être bran- ché au niveau bas. La figure 22 illustre la méthode à échantil- lonnage pour lancer une surveillance L'adresse en mémoire, SNPNCA, SNPINV et MBAO Ei sont verrouillés lors du flanc descendant du SNPSTB# Si MAOE# est échantil- lonné actif (niveau bas), le SNPSTB# ne provoquera pas une surveillance Le lancement de la surveillance est détecté par le contrôleur 12, synchronisé dans la période d'horloge suivante et provoque une surveillance dans la période d'horloge après. La figure 23 illustre la méthode à horloge pour le lancement d'une surveillance L'adresse en mémoire, SNPNCA, SNPINV et MBAOE# sont verrouillés lors du flanc montant du SNPCLK lorsque SNPSTB# est d'abord échantillonné à niveau bas SNPSTB# doit être échantil- lonné à niveau haut pour au moins un SNPCLK en vue du réarmement pour une autre surveillance Si MAOE* est échantillonné actif (à niveau bas), le SNPSTB# ne provoquera pas une surveillance Le lancement de la surveillance est détecté par le contrôleur 12, lequel est synchronisé dans la période d'horloge suivante et provoque une surveillance dans la période d'horloge après. La figure 24 montre le mode de surveillance synchrone L'adresse en mémoire, SNPNCA, SNPINV et MABO Ef sont verrouillés lors du flanc montant de CLK lorsque SNPST Bf est d'abord échantillonné à niveau bas. 13 SNPSTB* doit être échantillonné à niveau haut pour au moins une CLK en vue du réarmement pour une autre surveillance Si MAOE# est échantillonné actif (à niveau bas), le SNPSTB# ne provoquera pas une surveillance Le lancement de la surveillance est détecté par le con- trôleur de cache (C 5) 12 et provoque une surveillance dans la période d'horloge suivante. La phase de réponse d'une surveillance, produite par le contrôleur de cache 12, comporte deux parties: une indication d'état et un signal d'achèvement du traitement de la surveillance La phase de réponse est toujours en synchronisme avec l'horloge CLK de 1 'UC. L'indication d'état est présentée sur MHITM# et MTHIT# et reste stable jusuq'à la surveillance suivante Ces signaux indiquent l'état de la ligne du contrôleur de cache juste avant l'opération de surveillance CBM 12 peut prédire l'état final de la ligne du contrôleur de cache lorsqu'il connaît l'état initial et les signaux d'entrée SNPINV et SNPNCA L'information d'achèvement du traitement de la surveillance est déterminée par le 3 O signal de sortie SNPBSY# Lorsque le signal est inactif, cela indique que le contrôleur de cache 12 est prêt à accepter un autre cycle de surveillance. La figure 25 montre la réponse du contrôleur de cache 12 à des surveillances sans invalidation La première surveillance est opérée sur une ligne qui n'est pas stockée à ce moment dans le cache et ayant l'état lIl La surveillance suivante est effectuée sur une ligne se trouvant dans l'état lEl ou lSl et la dernière sur une ligne dans l'état lMl La figure 26 montre la réponse du contrôleur 12 à des surveillances avec invalidation. Le signal SNPBSY# sera activé pour l'une de deux raisons: une correspondance en surveillance sur une ligne modifiée (SNPBSY# restera actif jusqu'à ce que la ligne modifiée ait été réécrite) ou une rétro-invalida- tion est nécessaire alors qu'une rétro-invalidation est en cours Le temps actif minimal de SNPBSY# est de deux périodes CLK Ceci permet à la logique externe de capter SNPBSY# et de le maintenir actif au moyen d'une horloge asynchrone La logique externe doit d'abord détecter que i, SNPCYC# est actif, ce qui est une indication par le contrôleur 12 qu'une surveillance est en cours d'exécu- tion, puis capter et maintenir SNPBSY#. Le contrôleur de cache 12 permet au CBM 11 de traiter des opérations de surveillance en pipeline Il permet aussi la fourniture de l'adresse de surveillance suivante et la demande de la surveillance suivante avant que la dernière surveillance ne soit terminée Les règles qui gouvernent le déroulement de surveillances traitées en pipeline sont les suivantes: 1 Pour des surveillances en mode à échantillonnage, CBM Il ne peut pas provoquer un second flanc descendant de SNPSTB# jusqu'après le flanc descen- dant de SNPCYC#. 2 Pour des surveillances en mode à horloge, CBM 11 ne peut pas faire en sorte qu'un second SNPSTB# excité soit échantillonné par SNPCLK jusqu'après le flanc descendant de SNPCYC#. 3 Pour des surveillances en mode synchrone, CBM 11 ne peut pas faire en sorte qu'un second flanc descen- dant de SNPSTB* soit échantillonné par CLK jusqu'à ce que l P 'agnal d'horloge CLÉ faisant suite à SNPCYC# soit actif. Lres figures 27 et 28 montrent comment les opérations de surveillance les plus rapides peuvent être obtenues, en traitement pipeline, pour les modes syn- chrones et asynchrones respectivement. Le contrôleur de cache 12 permet que des surveillances soient effectuées en recouvrement avec des transferts de données vers et depuis la mémoire centrale par la division du cycle du bus mémoire en quatre secteurs, ainsi que le montre la figure 29. * Le secteur 1 fait suite à un cycle de bus mémoire précédent (et a donc lieu après CRDY*) et dure jusqu'au départ du nouveau cycle de bus mémoire (avant CAD Sf) Une surveillance dans cette région est recher- chée et gérée immédiatement. Le secteur 2 fait suite au départ d'un cycle de bus mémoire (CADS#), mais se termine avant l'octroi du bus au contrôleur 12 (BGT#) Une surveillance dans cette région est recherchée et gérée immédiatement. CADS* est réémis pour le cycle arrêté prématurément une fois que la surveillance est terminée, si nécessaire. Le secteur 3 fait suite à l'octroi du bus au contrôleur 12 et se poursuit jusqu'à ce que SWEND# soit terminé La recherche d'une surveillance dans cette région est bloquée jusqu'après SWEND# A ce moment, la réponse de la surveillance est donnée, mais aucune réécriture ne sera déclenchée jusqu'après CRDY#. Le secteur 4 fait suite à SWEND et se termine avant CRD Ye Une surveillance dans cette région est recherchée immédiatement, mais gérée après CRDY# Cette surveillance est traitée logiquement comme si elle s'était produite après CRDY# (Des correspondances en surveillance sur des données modifiées produiront la35 planification d'une réécriture qui sera exécutée après la conclusion du cycle en cours sur le bus mémoire) Il est à noter que le résultat de la surveillance (MHITM#, If THIT#) sera disponible immédiatement lors de la re- cherche. Le contrôleur de cache 12 emploie deux méca- nismes de solidarisation pour assurer que les surveil- lances soient identifiées dans le secteur convenable Le premier mécanisme de solidarisation assure qu'une fois un BGTI a été donné, les surveillances soient bloquées jusqu'après SWEND# Le second mécanisme de solidari- sation assure qu'une fois une surveillance a été démar- rée, BGT# ne puisse pas être donné jusqu'à ce que la surveillance ait été gérée. La figure 30 montre qu'une fois BGT# est actif, le contrôleur 12 bloque toutes les surveillances jusqu'après SWEND# Si une surveillance a été lancée et aucun SNPCY Ci n'a été émis avant l'excitation de BGT#, la surveillance est bloquée. La figure 31 montre une surveillance interve- nant avant BGT# Une fois que le contrôleur 12 a honoré une surveillance, il peut ignorer BGT# jusqu'à ce que la surveillance soit gérée Il ignorera toujours BGT# lorsque SNPCY Ci est actif Si le résultat de la surveil- lance est une correspondance sur une ligne modifiée (MHITM# actif), il ignorera BGT# tant que SNPBSY# et MHITM# restent tous deux actifs Dans ce cas, c'est la responsabilité de CBM 11 de maintenir BGT# jusqu'à SNPBSY# devienne actif, ou de le ré-exciter après que SNPBS Yi est devenu inactif Si le résultat de la sur- veillance n'est pas une correspondance sur une ligne modifiée (MHIT^ inactif), le contrôleur 12 est capable d'accepter BGT#, même si SNPBSY# est actif Ceci permet à CBM 11 de procéder à un cycle de bus mémoire en excitant BGT# pendant que le contrôleur 12 effectue des rétroinvalidations Même au cas o des surveillances sont retardées, le verrouillage d'adresse est réalisé à l'activation de SNPSTB# Ces deux mécanismes de solidarisation procurent une méthode souple pour assurer le traitement prévisible de surveillances à recouvre- ment. Pendant des surveillances se déroulant en même temps que des remplissages/attributions de ligne, les règles suivantes sont à observer afin d'assurer la compatibilité des données: 1 Si une surveillance se produit avant BGT#, c'est-à- dire si SNPCY Ce est actif avant BGT#, le système a la responsabilité de ne pas retourner des données dépassées dans les limites du remplissage de ligne/attribution. 2 Si une surveillance se produit après BGT*, c'est-à- dire si SNPCYC# est actif après BGT#, le C 5 assure la compatibilité des données en assurant des solidarisations avec I'UC qui évitent la mise en antémémoire de données dépassées. F.3 Règles d'interface du contrôleur de bus mémoire (CBM) La figure 32 montre la progression d'un cycle sur le bus mémoire en termes de signaux d'entrée et de sortie du contrôleur de cache 12. Pour commencer un cycle de cache, le contrô- leur 12 génère le signal CADS# L'adresse de cache et d'autres paramètres du cycle sont garantis stables lorsque CADS# est excité, jusqu'à l'excitation de CNA# ou CRDY# de ce cycle Après que CNA# ou CRDY# est excité, ces paramètres sont indéfinis. 0 Soit pendant, soit après CADS#, le signal CDTS# est excité, garantissant que les données sont stables, ou que la voie de données est disponible. BGT#, KWEND#, SWEND# et CRD Yi sont générés par CBM 11 en réponse à CDTS# BG Ti et CRDY# sont néces- saires pour tous les cycles (sans surveillance} KWEND#, nécessaire pour des remplissages de ligne et des cycles d'écriture avec attribution ou affectation potentielle, et SWEND#, indiquant l'achèvement d'une surveillance sur le bus mémoire, sont seulement nécessaires pour des cycles qui les échantillonnent. Une fois qu'une broche a été échantillonnée, elle est "sans importance" jusqu'au signal CRDY# de ce cycle En outre, ces signaux plus les attributs MRO#, MKEN#, MWB/WT# et DRCTM# doivent seulement suivre des temps de préparation et de maintien lorsqu'ils sont échantillonnés. Pour des cycles avec traitement pipeline, les attributs de cycle (BGT#, KWEND#4,) seront seulement échantillonnés après CRDY# du cycle précédent. Les cycles de réécriture de surveillance sont I 5 un sous-ensemble des cycles normaux Les cycles de réécriture de surveillance sont demandés comme une conséquence de correspondances en surveillance sur des lignes modifiées, ayant l'état lMl Il s'agit de cycles intercalaires demandés par l'activation de SNPADS# au lieu de CADS# Pour ces cycles, ainsi que le montre la figure 33, le contrôleur 12 échantillonne seulement la réponse CRDY# Il suppose que le CBM 11 détient le bus pour effectuer la réécriture intercalaire et qu'aucun autre agent ne surveillera ce cycle De même, il igno- rera CAN# pendant les réécritures de surveillance. F.4 Protocole de verrouillage LOCKE LOCK# est un signal d'entrée venant du bus UC 14 et indiquant que le cycle mémoire demandé doit verrouiller le bus mémoire pour une transaction ato- mique Les cycles de verrouillage sont utilisés pour la synchronisation de tâches interprocesseurs, de sorte qu'une demande de verrouillage est transmise au bus mémoire 15.35 En réponse à un signal LOCK de l'unité cen- trale, le contrôleur de cache 12 génère un signal appelé KLOCOK Celui- ci comme les autres attributs de cyclel est valable lorsque CADS# est excité. Quand 1 'UC 10 lance une opération LOCK, le contrôleur 12 déclenche toujours un cycle de bus mé- moire Les cycles LOCK ne sont pas susceptibles d'être mis en antémémoire à la fois dans le contrôleur 12 et dans l'UC 10, de sorte que l'information est envoyée à travers la mémoire cache 13 à l'UC 10 alors qu'un BRDY est généré par CBM 11 Si un cycle de lecture verrouillé (LOCK) tombe en cache sur un état lMl, le contrôleur 12 ignore la donnée qu'il reçoit et fournit les données de la mémoire cache 13 (en conformité avec les BRDY déli- vrés par le CBM 11) Les écritures verrouillées sont différées comme toute autre écriture Aussi bien les cycles de lecture que les cycles d'écriture verrouillés (LOCK) ne changent en aucun cas l'état d'étiquette du contrôleur de cache 12. En utilisant le traitement pipeline, il est possible que le signal KLOC Rf sur le bus reste actif 2 o d'une opération verrouillée à la suivante Si le CBM désire rendre le contrôle du bus entre des opérations verrouillées, il doit détecter une écriture suivie d'un cycle de lecture Tous les cycles verrouillés de l'UC sur le bus mémoire commencent par un cycle de lecture et se terminent typiquement par un cycle d'écriture. Au cours d'un cycle verrouillé (LOCK), CBM 11 doit empêcher d'autres maîtres de surveiller son con- trôleur de cache pour toute donnée impliquée dans l'opération verrouillée Plus spécialement, CBM 11 doit empêcher SNPSTB# entre BG Ti du premier transfert ver- rouillé et SWEND# du dernier transfert verrouillé, ainsi que le montre la figure 34 A moins que l'alignement de verrous sur des lignes de cache se tienne bien, les surveillances devraient être bloquées pour toutes les adresses Si des surveillances peuvent être limitées à une ligne de cache, il est possible de surveiller d'autres lignes au cours de l'opération verrouillée. F.5 Protocole de pseudo-verrouillage (PLOCK#) La broche de sortie de pseudo-verrouillage PLOCKR du Intel 80486 indique, lorsqu'elle est excitée, que la transaction en cours sur le bus demande plus d'un cycle de bus pour s'achever Des exemples de telles opérations sont des lectures et des écritures de 64 bits I O à virgule flottante et des remplissages de ligne de cache de 128 bits L'UC, s'il est constitué par un 80486, rendra le signal PLOCKS actif jusqu'à ce que les adresses pour le dernier cycle de bus de la transaction aient été appliquées, peu importe que BRDY# a été retourné ou non. Le contrôleur de cache 12 supporte le proto- cole PLOC Ki de l'UC 80486 en fournissant une borne d'entrée de configuration PLOCKEN (multiplexée avec la broche CPLOCK#) Si le signal PLOCKEN est détecté au niveau haut à l application du signal RESET, la broche CPLOCK# reflète un signal de sortie PLOC Ki modifié (LEN), dans le cas de l'UC 80486, pour des cycles d'écriture Le contrôleur 12 applique les règles sui- vantes pour PLOCK: les cycles de lecture ne génèrent jamais CPLOC Ki; si le signal PLOCKEN est détecté au niveau bas à RESET, le signal CPLOCK# n'est pas généré et les règles pour PLOCK ne sont pas appliquées. Le CBM 11 ne doit pas permettre le lancement de surveillances entre BGT 4 de la première écriture et BGT# de la dernière écriture d'une séquence avec PLOCK, comme le montre la figure 35. Au cours de cycles à correspondance avec PLOCK, lorsqu'il n'y a pas d'activité sur le bus, le contrôleur 12 bloque toute réécriture de surveillance jusqu'à ce que les cycles d'écriture avec PLOCK soient terminés. Une opération avec PLOCO consistera toujours en deux cycles d'écriture sur la même ligne de cache. Cette ligne peut se trouver dans l'un de quatre états possibles L'effet d'une opération avec PLOCK sur l'état MESI est décrit ci-dessous. lMl Les écritures avec PLOCK sur une ligne à l'état lMl sont achevées avant qu'une surveillance intercalaire quelconque ne puisse se produire Le contrôleur 12 assure cette impossibilité en retardant 1 o pendant ce temps les éventuelles réécritures (MTHIT# et MHITM# sont générés sans retard) Il retarde également l'excitation de AHOLD, de sorte que la deuxième écriture peut avoir lieu Bien qu'une surveillance intermédiaire puisse changer l'état d'étiquette, le contrôleur 12 Ir assure que la deuxième opération d'écriture "voit" l'état lMI. lEl La première écriture avec PLOCK relève l'état en le faisant passer à lMI Toute surveillance interca- laire est traitée comme dans le cas décrit ci-dessus pour l'état lMI. lSI La première écriture avec PLOCK tombe sur l'état lSl et devient une double écriture Le C 5 bloque le relèvement d'état (changement d'étiquette à lEl, de sorte que la deuxième écriture voit également lSl Le 2 Drelèvement se produit après la deuxième écriture PALLC# est inactif pour les deux écritures Au cas o une invalidation de surveillance intercalaire ferait passer l'état lSI à l'état lIl, une attribution ne serait pas permise pour l'un ni pour l'autre cycle. lIl Une séquence d'écriture avec PLOCK rencontrant l'état lIl, génèrera deux cycles d'écriture sur le bus mémoire, qui sont réunis par PLOCK Le contrôleur 12 bloquera l'attribution sur la première écriture, mais la permettra pour la deuxième écriture Ceci empêche l'exécution d'écritures pour connaître le propriétaire sur les cycles d'écriture avec PLOCK PALLC* est rendu actif à la première écriture, malgré le fait que le contrôleur 12 bloque l'attribution Par conséquent, une logique externe de suivi peut suivre les accès avec PLOCK à des lignes ayant les états lSl et lI|. F.6 Cycles consécutifs Comme une ligne de cache secondaire peut être plus longue qu'une ligne de cache de 1 UC, il y a des circonstances dans lesquelles un insuccès en lecture tombera sur une ligne qui est en cours de remplissage. Si cela se produit, le contrôleur 12 traite certaines situations comme une présence en lecture mais fournit les données après CRD Yfl pour le remplissage de la ligne. Les données sont fournies à partir de la SRAM 13. F.7 Fonctionnement simultané UC/bus mémoire Le contrôleur de cache 12 permet le fonction- nement simultané de l'UC et de bus mémoire Les cycles de bus UC seront soit gérés localement par le contrôleur 12 (correspondances), soit demanderont une gestion du bus mémoire Chaque fois qu'un cycle d'UC nécessite la gestion du bus mémoire, il sera planifié pour se dé- rouler sur le bus mémoire 15 et l'activité du bus UC 14 sera autorisée à se poursuivre. Des exemples de travaux simultanés com- prennent: des surveillances et des opérations de bus UC, des écritures différées avec des opérations de l'UC et du bus mémoire, le fonctionnement du bus UC à l'arrière de longs remplissages de ligne (ligne de cache secon-30 daire plus longue que la ligne d'UC) et les attributions et remplacements avec des opérations de l'UC et du bus mémoire. Dans certains cas, la compatibilité des données et la nécessité d'empêcher des impasses, ex- cluent le déroulement simultané d'opérations Des problèmes peuvent se poser lorsque le cycle de bus menmoj re en cours change l'état d'étiquette et affecte de ce fait le fonctionnement pour la demande de cycle UC suivante Dans ces cas, le contrôleur 12 inhibera des fonctionnements simultanés pour assurer la compatibilité : des données Le traitement de ces cas par le contrôleur 12 est complètement transparent au CBM 11. G Exemples du déroulement dans le temps de cycles du controleur de cache secondaire Il est à noter que le jeu fourni de signaux de commande et d'attributs générés par et appliqués au contrôleur de cache 12 autorise le traitement d'une grande variété de modes de fonctionnement de la mémoire cache secondaire Les chronogrammes représentés sur les figures 36-41 et décrits ci-après, font ressortir cette variété. La figure 36 illustre une séquence de cycles à correspondance en lecture Elle montre des cycles à concordance MRU (A, B, C) et des cycles à discordance (insuccès) MRU (D, E, F). Le premier cycle (périodes d'horloge CLK 1 à 2) est un cycle de lecture à transaction (longueur = 1). Le contrôleur 12 exécute une consultation de répertoire de cache (RAM à étiquettes) (périodes d'horloge 1-2) et détecte une présence avec une correspondance MRU En même temps, la SRAM '13 accède au dispositif à étiquettes et charge le tampon d'UC de la SRAM 13 avec les contenus des deux voies correspondant au jeu sélectionné Son multiplexeur de voies interne sélectionne la voie30 indiquée par le bit MRU (correspondant également au jeu sélectionné) Le signal W/R#f, échantillonné à niveau bas, autorise l'envoi des informations de sortie de la SRAM 13 sur le bus UC 14. Parce que le contrôleur 12 détecte une cor- respondance MRU, il active le BRDY# immédiatement après AD Sf, ce qui équivaut à un accès sans état d'attente Le signal BLAST# est échantillonné actif par SRAM 13 vers la fin de la période d'horloge 2 (en même temps que le BRDY#), ce qui indique la fin du cycle. Dans la période d'horloge 3, l'UC 10 émet un AD 54 (cycle B) avec une longueur de salve de deux transactions (lecture à virgule flottante), tandis qu'un remplissage de ligne (ou une pré-extraction de code) d'UC est exécuté (longueur = 4) au cours des périodes d'horloge 6-10. Dans la période d'horloge 11, l'UC 10 émet un nouveau ADS# (cycle D) En raison de la discordance MRU, le contrôleur 12 active WRAR Ri avec le WAY correct (période d'horloge 12) A l'échantillonnage actif de WRARR#, la SARM 13 mettra à jour son bit MRU interne avec l'information de voie présentée par le signal WAY. Cette information est utilisée aussi par la SRAM 13 pour sélectionner dans son tampon d'UC la donnée corres- pondant à la voie correcte La SRAM 13 commande le bus UC 14 vers la fin de la période d'horloge 13 De même, un état d'attente est inséré (période d'horloge 12) en raison de la discordance MRU. Deux et quatre présences en lecture, de transaction, avec des discordances MRU, sont repré- sentées dans les périodes d'horloge 14-23 (cycles E, F). Il est à noter que BLE^ est désactivé immé- diatement après ADS# pour tous les cycles Il est réactivé lors de la période d'horloge suivante parce que tous les cycles sont des succès. La figure 37 illustre des cycles de lecture O "cach " (avec possibilité de mise en antémémoire ou cache) déclenchés par l'UC qui produisent des discor- dances en cache secondaire et remplacement une ligne non-altérée (propre ou vide) dans le cache Lors de tels cycles, le contrôleur 12 ordonnera au CBM 11 d'effectuer un cycle de remplissage de ligne de cache sur le bus mémoire 15 Un remplissage de ligne de cache est une lecture d'une ligne de cache complète à partir de la mémoire centrale La ligne est ensuite inscrite dans la SRAM 13 et les données sont transférées selon la demande à 'UC 10 Si la ligne extraite de la mémoire centrale remplace une ligne de cache secondaire se trouvant dans un état valable non modifié (lEl ou lSl), un cycle de rétro-invalidation est effectué sur le bus UC 14 pour garantir que les données remplacées soient également retirées du cache de premier niveau de l'UC, ceci afin de préserver la propriété d'inclusion. L'UC déclenche le cycle de lecture sur le cache secondaire, o est recherché l'état d'étiquette du cache Une fois que le contrôleur 12 a déterminé que le cycle produit une discordance en cache, il émet CADS# (période d'horloge 2) et les signaux de commande de cycle associés (tels que CW/R#, CM/IO#, CD/Ci, RDYSRC, MCACHE#) et les envoie au CBM 11 en vue de la planifi- cation de l'opération de remplissage de la ligne de cache MCACHE# est actif, ce qui indique que l'insuccès en lecture est susceptible d'être mis en antémémoire par le contrôleur 12; RDYSRC est actif, ce qui indique que le CBM 11 doit fournir des BRDY# au noyau du cache de l'UC. L'adresse de bus mémoire (MSETl 10:0 l, MTAG lL 11:0 l, MCFAl 6:0 l) est valable avec CADS# (périodes d'horloge 2 et 13 pour les deux cycles dans cet exemple) et reste valable jusqu'après l'échantillonnage actif de CNA# par le contrôleur 12 (périodes d'horloge 5 et 16). MALE et MBALE peuvent être utilisés pour maintenir l'adresse selon les besoins. CBM 11 arbitre pour le bus mémoire et renvoie BGT# excité (période d'horloge 3), ce qui indique que l'achèvement du cycle sur le bus mémoire est garanti Une fois que le contrôleur 12 a échantillonné BGT# excité, il doit terminer le cycle en question sur le bus mémoire 15 Préalablement à ce point, le cycle peut être arrêté prématurément par une correspondance en surveillance en provenance d'un autre cache. CBM 11 excite (période d'horloge 4) CNA# pour indiquer qu'il est prêt à planifier un nouveau cycle sur le bus mémoire Il est à noter qu'après l'activation de CNA*, la validité des signaux de commande de cycle n'est pas garantie. Lorsque le CBM 11 a déterminé l'attribut d'aptitude de mise en antémémoire du cycle, il applique le signal MKEN# en conséquence A ce moment, le CBM 11 applique également le signal KWEND#, indiquant la fin de la fenêtre de possibilité de mise en antémémoire Le contrôleur 12 échantillonne le signal MKEN# en consé- quence Le CBM 11 applique également le signal KWEND# à ce moment, indiquant la fin de la fenêtre de possibilité de mise en antémémoire Le contrôleur 12 échantillonne MKEN# pendant KWEND# (période d'horloge 5) pour déter- miner que le cycle peut effectivement être mis en antémémoire. CBM 11 excite SWEND# à la fin de la fenêtre de surveillance sur le bus mémoire Le contrôleur 12 échantillonne MWB/WT# et DRCTM# pendant SWEND# (période d'horloge 7) et met à jour l'état d'étiquette du cache selon le protocole de compatibilité La fermeture de la fenêtre de surveillance autorise également CBM Il de commencer à envoyer à 1 'UC 10 des données qui ont été stockées dans le tampon de cycle de la mémoire cache secondaire Le CBM 11 fournit BRDY# à l TUC 10 (périodes d'horloge 7-10). Le contrôleur 12 édite un nouveau CADS#, dans la période d'horloge 13, qui produit également une discordance dans le cache secondaire Comme le contrô- leur 12 a déjà échantillonné CNA^ à l'état excité (période d'horloge 4), il édite un nouveau CADS* avant la réception du CRDY# du cycle en cours (ce qui veut dire que ce cycle est traité en pipeline à l'intérieur du CBM 11) Il est à noter qu'une fois les signaux de progression de cycle (BGT#, CNA#, KWEND#, SWEND#) d'un cycle ont été échantillonnés à l'état excité, le con- trôleur 12 les ignore jusqu'au CRD Yi de ce cycle Le contrôleur 12 ne traitera pas en pipeline les signaux de progression de cycle (c'est-àdire il ne les échantil- lonnera pas de nouveau jusqu'après le CRDY# du cycle en cours sur le bus-mémoire). Le premier cycle se termine lorsque CRDY# est rendu actif par le CBM 11 (période d'horloge 14) C'est à ce moment que les données contenues dans les tampons de cycle de la mémoire cache 13 sont chargées dans le cache SRAM. Les signaux de validation (MALE et MBALE) du k>J loquet d'adresse mémoire 21 du contrôleur de cache peuvent rester excités par CBM 11 pour placer les loquets d'adresse dans le mode de traversée Si le contrôleur 12 est le maître de bus actuel, les signaux de validation de sortie d'adresse mémoire (MAOE# et no MBAO Ef) doivent être excités par le CBM 11 MDOE# doit être inactif pour que les broches de données puissent être utilisées comme bornes d'entrée. Quelque temps après que l'adresse a été appliquée sur le bus mémoire, des données seront four- nies à partir de la mémoire centrale au cache SRAM 13 ( 8). Pour le mode de fonctionnement du bus mémoire à horloge, MSEL 4 t est rendu actif par le CBM 11 (période d'horloge 4) afin de permettre l'échantillonnage de Ai MBRDY# et la mémorisation de MZBT# pour le transfert. MZBT# est échantillonné sur tous les flancs de MCLK ou MSE Li est inactif Une fois que MSEL^ est échantillonné actif par le contrôleur 12, la valeur de MZBT#, échan- tillonée sur le MCLK précédent, est utilisée pour le35 transfert suivant MBRDY# est rendu actif par CBM 11 dans les périodes d'horloge 4 à 6 pour que le compteur de salve de mémoire soit incrémenté et que des données soient placées dans les tampons de cycle de la mémoire cache secondaire CBM 11 excite MEOC# (période d'horloge 7) pour terminer le cycle en cours sur le bus mémoire et D commuter les tampons-mémoire de cycle pour le nouveau cycle MZBT# est mémorisé à ce moment (lorsque MEOC# est échantillonné à l'état excité et MSE Li reste au niveau bas) pour le transfert suivant. MBRDY# est rendu actif par CBM 11 dans les périodes d'horloge 13 à 15 pour introduire des données dans les tampons-mémoire de cycle du cache secondaire. CBM 11 excite MEOC# (période d'horloge 16) pour terminer le deuxième cycle d'insuccès en lecture sur le bus mémoire et commuter les tampons- mémoire de cycle pour un15 nouveau cycle. Pour le mode de fonctionnement du bus mémoire à échantillonnage, MSEL* est rendu actif par CBM 11 (période d'horloge 4) pour permettre le fonctionnement MISTB et pour mémoriser MZBT# (sur le flanc descendant de MSEL#) en vue du transfert MISTB est alterné, pendant les périodes d'horloge 5 à 7, pour produire l'incrémentation du compteur de salve de mémoire et pour que des données soient introduites dans les tamponsmémoire de cycle du cache secondaire Il est à noter que25 MISTB provoque la mémorisation des données du bus mémoire à la fois sur les flancs montants et sur les flancs descendants Le CBM 11 excite MEOC# (période d'horloge 8) pour terminer le cycle en cours sur le bus mémoire 15 et commuter les tampons-mémoire de cycle pour30 le nouveau cycle MABT# pour le cycle suivant est échantillonné à ce moment sur le flanc descendant de MEOC#. MISTB est alterné par le CMB 11 (périodes d'horloge 15-17) pour l'introduction de données dans les tampons de cycle de la mémoire secondaire CBM 11 excite MEOC# (période d'horloge 18) pour terminer le deuxième SO cycle à insuccès en lecture sur le bus mémoire et commuter les tampons-mémoire de cycle pour un nouveau cycle. La figure 38 montre un cycle de lecture de l'UC produisant une discordance ou insuccès en cache secondaire et nécessitant le remplacement d'une ligne modifiée (par exemple par le remplacement d'étiquette, lignes/secteur = 1, rapport de ligne = 1) Lors de tels cycles, le contrôleur 12 ordonnera au CBM 11 d'effectuer un remplissage de ligne de cache sur le bus mémoire 15, ordonnera au cache SRAM 13 de remplir son tampon de réécriture avec le contenu de l'emplacement du disposi- tif correspondant à la ligne devant être remplacée, et effectuera une rétro-invalidation sur l'UC 10 afin de maintenir la compatibilité des caches du premier et du second niveau Une fois que le remplissage de ligne du cache est terminé, le cache secondaire récrira le contenu de la ligne remplacée en mémoire centrale à partir du tampon de réécriture de la SRAM 13. no L'UC déclenche le cycle de lecture sur le cache secondaire, o est recherché l'état d'étiquette du cache Une fois que le contrôleur 12 a constaté que le cycle produit une discordance en cache, il émet CADS# (période d'horloge 1) et les signaux de commande de cycle associés (tels que CW/R#, CM/IO#, CD/C#, RDYSRC, MCACHE ) et les envoie au CBM 11 en vue de la planifi- cation de l'opération de remplissage de la ligne du cache MCACHE# est actif, ce qui indique que le CBM 11 doit fournir des BRDY# à l'UC 10. 30 L'adresse de bus mémoire (MSETI 1 O:01, MTAG l 11:0 l, MCFAl 6:01 = est valable avec CAD Sf (périodes d'horloge 1 et 5 pour les deux cycles dans cet exemple) et reste valable jusqu'après l'échantillonnage actif de CNA# par le contrôleur 12 (périodes d'horloge 4 et 10). MALE et MBALE peuvent être utilisés pour maintenir l'adresse selon les besoins. CBEM il drbitre pour le bus mémoire et retourne BGTX à l'état axcité (période d'horloge 2), ce qui indique la garantie d'achèvement du cycle sur le bus mémoire 15 A ce moment, le tampon de réécriture de la 5 SRAM 13 est pré-rempli avec la ligne à remplacer Une fois que le contrôleur a échantilloné BGT# à l'état excité, il doit finir le cycle concerné sur le bus mémoire 15 Avant cet instant, le cycle peut être interrompu prématurément par une correspondance en i O surveillance provenant d'un autre cache. Le CBM Il excite CNA# (période d'horloge 3) pour indiquer qu'il est prêt à planifier un nouveau cycle sur le bus mémoire Il est à noter qu'après l'activation de CNA#, il n'est pas garanti que les15 signaux de commande de cycle soient valables. Lorsque CBM 11 a déterminé l'attribut de possibilité de mise en antémémoire du cycle, il applique le signal MKEN# en conséquence Il applique également le signal KWEND 4 à ce moment, indiquant la fin de la fenêtre de possibilité de mise en antémémoire Le contrôleur 12 échantillonne MKEN# pendant KWEND# (pé- riode d'horloge 4) pour déterminer que le cycle est en effet susceptible d'être mis en antémémoire. CBM 11 il excite SWEND# (période d'horloge 6) lorsque la fenêtre de surveillance sur le bus mémoire 15 se termine La fermeture de cette fenêtre autorise CBM il à commencer l'alimentation de l'UC en données qui ont été stockées dans le tampon-mémoire de cycle de la SRAM 13 Le CBM 11 fournit des BRDY# à l'UC 10 (périodes d'horloge 6-9) pour gérer le cycle de lecture Il est à noter que les données peuvent être fournies au cache secondaire immédiatement après l'activation de MSEL^ et qu'il n'est pas nécessaire d'attendre SWEND#. Sur le bus mémoire 15, le contrôleur 12 édite un cycle de réécriture (WB) CNA# est échantillonné actif au cours de la période d'horloge 3, ce qui amène le contrôleur 12 à éditer le CAD# (et aussi CDTS#) de la réécriture (période d'horloge 5) Le CBM 11 sait qu'il s'agit là d'un cycle de réécriture et non pas d'un cycle d'écriture déclenché par l'UC 10 en échantillonnant D MCACHE* à l'état excité Ceci informe le CBM 11 du nombre de transferts de données nécessaire. Les signaux BGT#, CNA# et KWEND# de la ré- écriture sont échantillonnés à l'état excité par le CBM 11 (période d'horloge 9) après le CRDY# du cycle d'in- 1 Q succès en lecture (période d'horloge 8) A ce moment, le contrôleur 12 peut évider un autre CADS# pour un cycle de bus mémoire nouveau (sans relation avec le précé- dent) De même, les données contenues dans les tampons de cycle de la mémoire cache sont chargées dans la SRAM. Les données à réécrire en mémoire centrale sont conte- nues dans les tampons de réécriture du cache SRAM 13. La fenêtre de surveillance pour le cycle de réécriture est fermée par CBM 11 lors de la période d'horloge 11 et le cycle est terminé par l'échantillon- nage à l'état éxcité de CRDY# dans la période d'horloge 13. Les signaux d'autorisation de verrouillage d'adresse mémoire (MALE ET MBALE> peuvent rester excités par CBM il pour placer les loquets d'adresse dans le mode de traversée Si le contrôleur 12 est le maître de bus actuel, les signaux de validation de sortie d'adresse mémoire (MAPE# et MBAOE*) doivent être excités par CBM 11. Quelque temps après que l'adresse a été appliquée au bus mémoire 15, des données seront fournies à partir de la mémoire centrale au cache SRAM 13. Pour le mode de fonctionnement à horloge du bus mémoire, MSEL# est rendu actif par CBM 11 ( période d'horloge 3) afin de permettre l'échantillonnage de35 MBRDY# et de mémoriser MZBT# en vue du transfert Ce dernier signal est échantillonné sur tous les flancs de MCLK o MSEL# est inactif Une fois que ce dernier est échantillonné actif par le contrôleur 12, la valeur de MZBT# échantillonnée sur le MCLK précédent est utilisée pour le transfert suivant MBRDY# est rendu actif par CBM 11 au cours des périodes d'horloge 3 à 5 pour provoquer l'incrémentation du compteur de salve mémoire et pour que des données soient placées dans les tampons de cycle de la mémoire cache secondaire CBM 11 excite MEOC# (période d'horloge 6) pour terminer le cycle en cours sur le bus mémoire 15 et commuter les tampons- mémoire de cycle pour le nouveau cycle MZB Tft est mis en mémoire à ce moment (lorsque MEOC# est échantillonné à l'état excité) pour le transfert suivant. CBM 11 excite le signal d'autorisation de sortie de données de mémoire (MDOE#, période d'horloge R) pour provoquer les sorties de données de la mémoire. MRBDY# est rendu actif par CBM Il au cours des périodes d'horloge 10 à 12 pour transcrire des données des tampons-mémoire de cycle du cache SRAM 13 sur le bus 2 o mémoire CBM 11 excite MEOC# (période d'horloge 13) pour terminer le cycle de réécriture sur le bus mémoire et commuter les tampons-mémoire de cycle en vue d'un nouveau cycle. Pour le mode de fonctionnement du bus mémoire à échantillonnage, CBM 11 rend actif MSE Lf (période d'horloge 4) pour permettre le fonctionnement MISTB et mémoriser MZBT# en vue du transfert (sur le flanc descendant de MSEL#) MISTB est alterné au cours des périodes d'horloge 5 à 7 pour provoquer l'incrémentation du compteur de salve mémoire et pour que des données soient placées dans les tampons-mémoire de cycle du cache SRAM 13 Il est à noter que MISTB produit la mémorisation des données du bus mémoire à la fois sur les flancs montants et sur les flancs descendants CBM 11 excite MEOC# (période d'horloge 8) pour terminer le cycle en cours sur le bus mémoire 15 et commuter les tampons-mémoire de cycle en vue du nouveau cycle MZBT* pour le nouveau cycle, est mémorisé à ce moment sur le flanc descendant de MEOC#. CBM 11 excite MDOE# (période d'horloge 9) pour déclencher les sorties de données de la mémoire. MOSTB est alterné par CBM 11 (périodes d'hor- loge 10 à 12) pour le transfert de données des tampons de cycle de la mémoire SRAM 13 sur le bus mémoire CBM 11 excite MEOC# (période d'horloge 13) pour terminer le cycle de réécriture sur le bus mémoire 15 et commuter les tampons-mémoire de cycle en vue d'un nouveau cycle. La figure 39 illustre une séquence de cycles d'écriture en mémoire par l'UC, qui rencontrent des introductions du contrôleur 12 marquées à l'état lEJ ou lMI De tels cycles sont gérés par le contrôleur 12 par l'écriture directe sur le dispositif du cache SRAM 13, sans aucune activité sur le bus mémoire 15. Le premier cycle d'écriture (A) de l'UC commence lors de la période d'horloge 1 Le contrôleur 12 consulte le répertoire de cache (RAM à étiquettes) et détecte une présence à l'état lEl ou lMI dans la période d'horloge 2 WRARR# est activé dans cette période d'horloge 2 en préparation de l'écriture ARRAY, et WAY indique la voie sur laquelle doit s'effectuer l'écri- ture Le contrôleur 12 excite BRDY# dans la période d'horloge 2 (état d'attente zéro) Du fait que le BLASTE est également actif dans cette période, SRAM 13 exécute un cycle d'écriture dans le dispositif lors de la première moitié de la période d'horloge 3. Les cycles B et C sont avec PLOCK Pour ces cycles, le contrôleur 12 assure que le deuxième ADS# (C) avec PLOCK est garanti d'être exécuté avant l'excitation de AHOLD, ce qui veut dire que l'excitation de AHOLD est retardée jusqu'à ce que l'UC 10 édite le second ADS#. La figure 40 illustre un cycle d'écriture déclenché par l'UC 10 qui produit une discordance dans le cache secondaire, suivie d'une écriture en mémoire centrale avec un cycle d'affectation ou d'attribution. Une attribution est effectuée lorsque le cache fait suivre un cycle d'insuccès en écriture par un remplis- i sage de ligne Cet exemple suppose que l'attribution de la nouvelle ligne nécessite le remplacement d'une ligne modifiée (c'est-à-dire une réécriture en mémoire cen- trale) L'UC 10 déclenche le cycle d'écriture sur le cache secondaire, o est recherché l'état d'étiquette du cache Une fois que le contrôleur 12 a déterminé que le cycle produit une discordance en cache, il assure l'application de CADS# (période d'horloge 1) et les signaux de commande de cycle associés (tels que CW/R#, CM/IO#, CD/C#, RDYSRC#, MCACHE#, PALLC#) au CBM 11 en vue de la programmation de l'opération d'écriture. MCACHE# n'est pas actif; RDYSRC n'est pas actif, ce qui indique que le contrôleur 12 fournira BRDY# à 1 'UC 10; PALLC# est excité, ce qui indique la possibilité d'un cycle d'attribution après le cycle de double écriture. Les données relatives à l'insuccès ou la discordance en écriture sont mises en attente dans le tampon-mémoire de cycle de la SRAM 13 et le cycle s'achève sans états d'attente pour l'UC 10 Celle-ci est libre d'éditer un autre cycle (qui n'est pas en rapport avec le précédent) en attendant que le contrôleur 12 finisse l'attribution Si ce nouveau cycle produit une correspondance en cache, il sera géré immédiatement par le contrôleur 12; par contre, s'il produit une discor- dance en cache, sa gestion attendra jusqu'au CRDY# de l'attribution. L'adresse de bus mémoire (MSET)l 10:01, MTAG l 11:0 l, MTAG l 11:0 l, MCFA l 6:01) est valable avec CADS# (périodes d'horloge 1, 5 et 10 pour les trois cycles dans cet exemple) et reste valable jusqu'après l'échan- tillonnage actif de CANE par le contrôleur 12 (périodes d'horloge 4, 10 et 15) Les signaux MALE et MBALE peuvent être utilisés pour maintenir l'adresse (ADDRESS) selon les besoins. Le CBM 11 arbitre pour le bus mémoire 15 et C renvoie BT 4 à l'état excité (période d'horloge 2), ce qui indique que l'achèvement du cycle de double écriture sur le bus mémoire 15 est garanti Une fois que le contrôleur 12 échantillonne BGT# à l'état excité, il doit terminer le cycle en question sur le bus mémoire 1 G 15 Avant cet instant, le cycle peut être interrompu prématurément par une surveillance en provenance d'un autre cache. CNA# est excité par le CBM 11 (période d'hor- loge 3) pour indiquer qu'il est prêt à planifier ou i D programmer un nouveau cycle sur le bus mémoire Il est à noter qu'après l'activation de CNA#, il n'est pas garanti que les signaux de commande de cycle soient valables. Quand CBM Il a déterminé l'attribut de possi- bilité de mise en antémémoire du cycle de double écri- ture, il applique le signal MKEN# en conséquence Il applique aussi le signal KWEND# à ce moment, indiquant ainsi la fin de la fenêtre de possibilité de mise en mémoire. Le contrôleur de cache 12 échantillonne MKEN# à l'état actif pendant KWEND (période d'horloge 4), ce qui indique que la ligne ayant donné une discordance * doit être attribuée dans son cache. Au premier instant disponible (période d'hor- loge 5), le contrôleur 12 excite CADS# pour demander un cycle d'attribution Les signaux de commande de cycle sont valables à cet instant: MCACHE# est actif, indi- quant la possibilité de mise en antémémoire du cycle de remplissage de ligne; RDYSRC n'est pas actif, indiquant que CBM 11 n'est pas obligé à fournir des BRDYE à 1 'UC (des BRDY# ne sont pas nécessaires pour un cycle d'attribution). CBM 11 excite SWEND# (période d'horloge 6) lorsque la fenêtre de surveillance du cycle de double écriture sur le bus mémoire 15 se termine. CBM 11 peut retourner CRDY# au contrôleur 12 du cache secondaire et à la SRAM 13 à n'importe quel moment après la fermeture de la fenêtre de surveillance. Dans cet exemple, CRDY# est édité par CBM 11 dans la période d'horloge 8 Les signaux de progression de cycle pour le cycle d'attribution peuvent également être édités par CBM 11 pour compléter le remplissage de ligne. Là encore, CBM 11 arbitre pour le bus mémoire 15 et renvoie BGTS à l'état excité (période d'horloge 9) pour le cycle d'attribution CBM 11 excite également CN Aj et KWEND# à ce moment Le contrôleur 12 rétro- invalide l'UC 10 pour maintenir la compatibilité des caches du premier et second niveau.20 Dans la période d'horloge 10, le contrôleur de cache 12 excite CADS# pour le cycle de réécriture (parce que l'insuccès concernait une ligne altérée) C=TS est excité par le contrôleur 12 deux périodes d'horloge plus tard (période d'horloge 12) Le CDTS# du cycle de réécriture n'est pas excité avec CADS# parce que la donnée n'est pas encore disponible dans le tampon de réécriture de la SRAM 13. CBM 11 excite SWEND# (période d'horloge 11) quand la fenêtre de surveillance du cycle d'attribution sur le bus mémoire 15 se termine. A ce moment, CBM Il peut exciter CRDY# sur le contrôleur 12 et la SRAM 13 pour le cycle d'attribution. L'excitation de CRDY# aura pour effet que les données stockées dans les tampons-mémoire de cycle de la SRAM 13 sont mémorisées dans le dispositif du cache. Au cours de la période d'horloge 14, BGT#, CAN# et SWEND# sont échantillonnés actifs pour le cycle de réécriture La fenêtre de surveillance est fermée deux périodes d'horloge plus tard (période 16) par CBM il lors de SWEND# et le cycle de réécriture est complété à l'excitation de CRDY# dans la période d'horloge 18. Les signaux de validation du loquet d'adresse mémoire 21 (MALE et MBALE) peuvent rester excités par CBM 11 pour placer les loquets d'adresse dans le mode de10 traversée Si le contrôleur est le maître actuel du bus, les signaux de validation de sortie d'adresse mémoire (MAOE# et MBAOE#) doivent être excités par CBM 11. Pour le mode de fonctionnement du bus mémoire à horloge, le signal de validation de sortie de données de mémoire (MDOE#) a été excité par CBM 11 pour déclen- cher les sorties de données de mémoire. MEOC# est excité par CBM 1 i (période d'horloge 4) en vue de la mémorisation de MZBT# pour le transfert et pour terminer le cycle en cours sur le bus mémoire (MBRDY# n'est pas nécessaire parce que cet exemple illustre un seul cycle de transfert pour un insuccès en écriture) MZBT# est amené au niveau haut par CBM Il pour forcer le cycle de lecture à commencer par l'adresse de salve correcte MFRZ# est rendu inactif par CBM 11, ce qui permet de placer la ligne dans l'état exclusif (lEl) et nécessite l'inscription des données en mémoire centrale. Pour le cycle d'attribution (remplissage de ligne), MSEL# est rendu actif par CBM 11 (période d'horloge 6) afin de permettre l'échantillonnage de BRM 4 DY# et la mémorisation de MABT# en vue du transfert. MZBT# est échantillonné sur tous les flancs de MCLX o MSEL 4 est inactif Une fois que MSEL# est échantillonné actif par le contrôleur 12, la valeur de MZBT# échan-35 tillonnée sur le MCLK précédent est utilisée pour le transfert suivant MDOE# est également désexcité, dans la période d'horloge 6, afin que les broches de données puissent être utilisées comme bornes d'entrée pour le cycle d'attribution. MBDRY# est rendu actif par CBM 11 dans les périodes d'horloge 7 à 9 pour provoquer l'incrémentation du compteur de salve mémoire et pour que des données soient placées dans les tampons-mémoire de cycle du cache SRAM 13 CBM 11 rend MEOC# actif (période d'hor- loge 10) pour terminer le cycle d'attribution sur le bus mémoire 15 et commuter les tampons-mémoire de cycle de la SRAM 13 en vue du nouveau cycle MZBT# est échan- tillonné et mémorisé à ce moment pour le transfert de données suivant. Le signal MDOE# est excité par le CBM (période d'horloge 12) pour déclencher les sorties de données de mémoire en vue du cycle de réécriture. CBM 11 excite de nouveau MBRDY# (périodes d'horloge 13 à 15) pour le cycle de réécriture afin d'incrémenter le compteur de salve mémoire et de pro-20 duire la lecture des données contenues dans les tampons- mémoire de cycle de la SRAM 13 Le cycle de réécriture se termine sur le bus mémoire 15 et les tampons-mémoire de cycle sont commutés à l'excitation de MEOC# (période d'horloge 16) MZBT# et MFRZ# pour le transfert suivant25 sont échantillonnés à ce moment Il nyest pas nécessaire que MFRZ# soit actif puisque le cycle n'est pas attri- buable potentiellement. Pour le mode de fonctionnement du bus mémoire à échantillonnage, le signal d'autorisation de sortie de données de mémoire (MDOE#) a été excité par CBM h 1 afin de déclencher les sorties de données de mémoire pour le cycle d'insuccès en écriture. MEOC# est rendu actif par CBM 11 (période d'horloge 4) afin de mémoriser MABTT pour le transfert et de terminer le cycle en cours sur le bus mémoire 15 (MOSTB n'est pas nécessaire parce que cet exemple se Lapporte à un cycle à transfert unique) MZBT* est amené au niveau haut par CBM 11 afin de forcer le cycle de lecture à commencer par l'adresse de salve correcte. MFRZ# est désexcité par CBM 11, ce qui permet d'amener la ligne à l'état exclusif (lEJ). Pour le cycle d'attribution (remplissage de ligne), MSEL# est rendu actif par CBM 11 (période d'horloge 6) afin de permettre le fonctionnement MISTB et de mémoriser MZBT# pour le transfert MISTB est alterné, dans les périodes d'horloge 8 à 10, pour produire l'incrémentation du compteur de salve mémoire et pour que des données soient placées dans les tampons- mémoire de cycle du cache SRAM 13 MISTBmémorise les données du bus mémoire à la fois sur les flancs montants et sur les flancs descendants MDO Ef est également désexcité, dans la période d'horloge 6, pour que les broches de données puissent être utilisées comme bornes d'entrée pour le cycle d'attribution. CMB 11 excite MEOC# (période d'horloge 11) pour terminer le cycle d'attribution sur le bus mémoire et commuter les tampons-mémoire de cycle pour le nouveau cycle A ce moment, MABT# pour le nouveau cycle est mémorisé, sur le flanc descendant de MEOC#. MDOE# est excité par CBM 11 (période d'horloge 14) pour déclencher les sorties de données de mémoire en vue du cycle de réécriture. CBM 11 alterne MOSTB (périodes d'horloge 15 à 17) pour le cycle de réécriture afin d'incrémenter le compteur de salve mémoire et pour que des données soient lues des tampons-mémoire de cycle de la SRAM 13. Le cycle de réécriture se termine sur le bus mémoire 15 et les tamponsmémoire de cycle sont commutés à l'excitation de MEOC# (période d'horloge 18) MZBT* et MFRZ 4 pour le transfert suivant sont échantillonnés à ce moment Il n'est pas nécessaire que MFRZ# soit actif parce que le cycle n'est pas attribuable potentielle- ment. La figure 41 illustre une correspondance en surveillance sur une séquence de ligne altérée, se produisant en même temps qu'un cycle à absence en lecture déclenché par l'UC 10 Cet exemple suppose le mode de surveillance synchrone (ce qui veut dire que les demandes de surveillances sont émises via SNPSTB# à partir de CBM 11, avec échantillonnage sur le signal d'horloge CLK du contrôleur 12). Dans la période d'horloge 1, SNPSTB# est excité par le CBM 11, ce qui indique une demande de surveillance du contrôleur 12 Ce dernier échantillonne MAOE# (qui doit être inactif) afin de reconnaître la demande de surveillance Ce signal est mémorisé ensemble avec l'adresse de surveillance (MSET l 0:10 l, MTAG l 0:111, MCFA l 0:61), SNPINV, MBAOE# et SNPNCA sur le signal d'horloge CLK du contrôleur 12 pendant l'excita- tion de SNPSTB# La recherche d'étiquette est effectuée immédiatement après que SNPSTB# est échantillonné actif puisque les opérations de surveillance ont la plus haute priorité dans l'arbitre d'état d'étiquette de cache Le contrôleur 12 émet SNPCYC# (période d'horloge 2), ce qui indique que la recherche de surveillance est en cours. Les résultats de la recherche sont appliqués au bus mémoire via MTHIT# et MHITM# dans la période d'horloge suivante après SNPCYC# Du fait que la surveillance est tombée sur une ligne modifiée, les deux signaux sont excités (période d'horloge 3) SNPBSY# est également délivré pour indiquer que le contrôleur 12 est occupé par des rétro-invalidations de l'UC 10 ou du tampon de surveillance de la SRAM 13 si celui-ci est plein, ou parce qu'une réécriture doit suivre Le contrôleur 12 acceptera seulement des surveillances lorsque SNPBSY#35 est inactif. Simultanément avec l'activité sur le bus mémoire 15 en raison de la demande de surveillance, l'UC déclenche un cycle à absence ou discordance en lecture Le contrôleur 12 émet une demande de bus mémoire (CADS#O, CDTS#) et des signaux de commande de cycle, appliqués au CBM 11 dans la période d'horloge 3. CBM 11 doit attendre que le cycle de surveillance à exécuter se termine sur le bus mémoire 15 avant de gérer ce cycle à absence en lecture. L'adresse du bus mémoire (MSET l 10:01, MTAG l 11:0 l, MCFA l 6:0 l) n'est pas valable jusqu'à ce que MAOE# devienne actif après que le CRDY# du cycle de réécriture de surveillance est échantillonné actif par le contrôleur 12 et que le CADS# est ré-émis (période d'horloge 13). Dans la période d'horloge 4, le contrôleur 12 émet SNPADS# et des signaux de commande de cycle, appliqués à CBM 11, pour indiquer une demande de vider une ligne modifiée hors du cache secondaire L'activa- tion de SNPADS# amène le CBM 11 à interrompre prématu- rément le cycle à absence en lecture à exécuter Le contrôleur 12 est responsable de la réémission de ce cycle interrompu après la fin de la réécriture parce que BT* n'avait pas été excité par CBM 11. Des données sont chargées dans le tampon de surveillance de la SRAM 13 Du fait que SNPINV avait été échantillonné à l'état excité par le contrôleur 12 (période d'horloge 1) au cours de l'excitation de SNPSTB#, il a rétro-invalidé le cache du premier niveau de l'UC 10. Le contrôleur 12 excite CDTS# (période d'hor- loge 8), ce qui indique au CBM 11 que des données sont disponibles dans le tampon de surveillance Lorsque CBM 11 termine le cycle de réécriture sur le bus mémoire 15, il active CRDY#, appliqué au contrôleur 12 du cache secondaire et à la SRAM 13 A ce moment, le contrôleur 12 désexcite SNPBSY* (période d'horloge 13) et ré-édite le cycle à absence en lecture qui a été interrompu prématurément (période d'horloge 13) en excitant CADS# et CDTS*. Pour le mode de fonctionnement à horloge du bus mémoire, le signal d'autorisation de sortie de données de mémoire (MDOE#) n'est pas activé par CBM Il afin que les broches de données mémoire puissent être utilisées comme bornes d'entrée.10 MSEL^ est rendu actif par CBM Il (période d'horloge 4) afin de permettre l'échantillonnage de MBRDY# et de mémoriser MZBT# pour le transfert d'absence en lecture MZBT* est échantillonné sur tous les flancs montants de MCLK o MSEL# est inactif Une fois que MSEL est échantillonné actif par le contrôleur 12, la valeur de MZBT# échantillonnée sur le MCLK précédent est utilisée pour le transfert suivant. Parce que le cycle à absence ou discordance en lecture est interrompu prématurément du fait que la surveillance a rencontré une ligne modifiée (ce qui nécessite un cycle de réécriture), aucun MEOC# n'est donné MSEL# est désexcité par CBM 11 (période d'horloge 6) et ré-excité (période d'horloge 8) afin de permettre la mémorisation de MZBT# pour le cycle de réécriture de surveillance et l'échantillonnage de MBRDY# pour ce cycle MFRZ# est également échantillonné à ce moment. Le signal d'autorisation de sortie de données de mémoire (MDOE#) est rendu actif par CBM Il (période d'horloge 7) pour déclencher les sorties de données de mémoire. MBRDY# est rendu actif par CBM 11 dans les périodes d'horloge 10 à 12 pour produire l'incrémenta- tion du compteur de salve mémoire et l'inscription de données à partir des tampons de surveillance du cache secondaire CBM 11 excite MEOC# (période d'horloge 13) afin de terminer le cycle de réécriture sur le bus mérmoire et de commuter les tampons-mémoire de cycle en vue du nouveau cycle MZBT# et MFRZ# sont échantillonnés et mémorisés à ce moment pour le transfert de données suivant. 5 IIMDOE# est désexcité par CBM 11 (période d'horloge 14} afin que les broches de données de mémoire puissent être utilisées comme bornes d'entrée pour le cycle de lecture ré-édité. Pour le mode de fonctionnement du bus à échantillonnage, le signal d'autorisation de sortie de données de mémoire (MDOEC) n'a pas été excité par CBM 11 afin que les broches de données de mémoire puissent être utilisées en tant que bornes d'entrée pour le cycle à absence en lecture.15 MSEL# est excité par CBM 11 (période d'horloge 4) dans le but de permettre l'échantillonnage de MISTB et la mémorisation de MZBT# (sur le flanc descendant de MSEL#) en vue du transfert à absence en lecture. Du fait que le cycle à absence ou discordance en lecture est arrêté prématurément parce qu'une surveillance est tombée sur une ligne modifiée (ce qui nécessite un cycle de réécriture), aucun MEOC# n'est donné MSEL# est désexcité par CBM 11 (période d'horloge 5) puis ré-excité (période d'horloge 6) afin de per- mettre la mémorisation de MZBT# pour le cycle de ré- écriture de surveillance et l'échantillonnage de MOSTB pour ce cycle MFRZ* est également échantilonné à ce moment. MOSTB est alterné, lors des périodes d'horloge 11 à 13, pour que le compteur de salve mémoire soit incrémenté et que des données soient lues des tampons- mémoire de cycle du cache secondaire MOSTB produit la mémorisation des données du bus mémoire à la fois sur les flancs montants et sur les flancs descendants CBM35 11 excite MEOC# (période d'horloge 24) pour terminer le cycle de réécriture de surveillance sur le bus mémoire et commuter les tampons-mémoire de cycle en vue du nouveau cycle MZBT# et MFRZ# pour le cycle suivant, sont mémorisés cette fois sur le flanc descendant de MEOC#.5 4 DOE# est désexcité par CBM 11 (période d'horloge 14) afin que les broches de données mémoire puissent être utilisées en tant que bornes d'entrée pour le cycle à absence en lecture ré-édité. REVENDI CATIONS 1 Système de mémoire cache de second niveau, connecté entre un bus d'entrée/sortie ( 14) d'une unité centrale ou UC ( 10) et un bus de mémoire centrale ( 15), 1 'UC ayant un système de mémoire cache de premier niveau, caractérisé en ce qu'il comprend: a) une mémoire cache à lecture/écriture ( 13) couplée à un contrôleur de cache ( 12) et au bus de mémoire centrale ( 15) et destinée à stocker des données et fournir des voies de données entre le bus UC ( 14) et le bus de mémoire centrale ( 15); b) un contrôleur de bus mémoire ( 11) couplé au bus de mémoire centrale ( 15) et un contrôleur de cache ( 12) et destiné à commander et effectuer des arbitrages pour le bus de mémoire centrale ( 15); et c) un contrôleur de cache ( 12) couplé au bus UC ( 14), au bus de mémoire centrale ( 15), à la mémoire cache ( 13) et au contrôleur de bus mémoire ( 11) et destiné à exécuter des demandes d'accès au cache secondaire ( 13) provenant de 1 VUC ( 10) ou du bus de mémoire centrale ou bus mémoire ( 15) par la commande du contrôleur de bus mémoire ( 11) et de la mémoire cache ( 13). 2 Système selon la revendication 1, dans lequel le bus mémoire ( 15) est utilisé aussi pour communiquer avec d'autres agents ou correspondants branchés sur le bus de mémoire centrale ( 15). 3 Système selon la revendication 1, dans lequel le contrôleur de cache ( 12) comprend en outre: a) une interface de bus UC ( 30) pour transmettre de l'information de commande et d'adresse vers et depuis le bus UC ( 14); b) une interface de bus mémoire ( 38) pour appliquer des informations d'adresse de bus mémoire et pour recevoir des informations d'adresse de surveillance; c) une interface de contrôleur de bus mémoire ( 35) pour fournir des informations de demande de cycle de bus mé;moire et recevoir des informations d'état de cycle de bus mémoire du contrôleur de bus mémoire ( 11); d) une file d'attente de bus mémoire ( 36) couplée à l'interface de contrôleur de bus mémoire ( 35) et des- tinée à planifier des demandes envoyées au contrôleur de bus mémoire ( 11) pour des cycles de bus mémoire, et à appliquer des adresses de bus mémoire sur le bus mémoire ( 15) sous la commande du contrôleur de bus mémoire ( 11); e) une interface de mémoire cache ( 37) couplée à la L O mémoire cache ( 13) et fournissant des signaux de com- mande pour la sélection de voies de données et de banques de données de cette mémoire cache; f) un dispositif répertoire de cache ( 31) pour fournir des décisions de présence et d'absence ou de 1 S correspondance et de discordance en vue de la sélection des voies de données et des banques de données de la mémoire cache ( 13); et g) un moyen (MUX 32) pour sélectionner la source de demande de l'adresse d'étiquette et de fichier pour ce répertoire de cache ( 31), provenant soit de l'interface de bus UC ( 30), soit de l'interface de bus mémoire ( 38). 4 Système selon la revendication 3, dans lequel le répertoire de cache ( 31) comprend en outre: a) une mémoire répertoire d'étiquettes (LRU/MRU 58) à plusieurs voies qui est adressable par les adresses de fichier; b) un dispositif comparateur ( 54, 55) pour comparer chaque étiquette pour chaque voie de la mémoire réper- toire d'étiquettes (LRU/MRU 58) avec une étiquette de référence fournie par la source demanderesse pour déterminer s'il en résulte une correspondance; et c) un moyen pour commander un sélecteur de voie (MUX 63) de la mémoire cache ( 13) afin de sélectionner la sortie de la voie pour laquelle une correspondance a été déterminée. J Système selon la revendication 3, dans lequel le dispositif répertoire de cache ( 31) comprend en outre: a) un répertoire "le plus récemment utilisé" ou répertoire MRU ( 59) associé au répertoire d'étiquettes et auquel il est accédé en même temps qu'à ce répertoire d'étiquettes, indiquant quelle voie d'un fichier donné a été sélectionnée en dernier; et b) un moyen pour décoder cet indicateur de voie et pré-positionner le sélecteur de voie (MUX 63) de la mémoire cache ( 13) en vue de la sélection de ladite voie. 6 Système selon la revendication 4, dans lequel la mémoire répertoire d'étiquettes à plusieurs voies est un répertoire à deux voies. 7 Système selon la revendication 6, dans lequel le répertoire d'étiquettes ( 31) comporte un bit indica- teur (MRU) pour indiquer la voie ayant donné une corres- pondance en dernier, de sorte que des remplissages de ligne de remplacement sont écrits sur la ligne de voie la plus récemment utilisée. 8 Système selon la revendication 4, dans lequel la mémoire cache ( 13) comprend en outre: a) une logique pour le suivi de demandes de l UC ( 10) de données du cache secondaire ( 13); b) un dispositif de répertoire avec une RAM (mémoire vive) à étiquettes ( 31) pour effectuer la recherche dans et l'extraction de données de la mémoire cache ( 13) en parallèle avec la recherche effectuée par un répertoire30 de contrôleur de cache (LRU/MRU 58); et c) un moyen pour délivrer en sortie la donnée de la mémoire cache ( 13) si le contrôleur de cache ( 12) détermine une correspondance en lecture. 9 Système selon la revendication 3, comprenant en outre un octet indicateur associé à chaque ligne du répertoire de cache ( 31) et indiquant l'état de compa- tibilité de cette ligne. Système selon la revendication 9, dans lequel l'état de compatibilité est définie par: a) un état modifié (lMl) indiquant que la ligne a été modifiée et est valable seulement dans la mémoire cache ( 13) associée et que la copie contenue dans la mémoire centrale n'est pas valable; b) un état exclusif (lEl) indiquant que la ligne est destinée à l'usage exclusif de l'UC ( 10) associée et que la copie contenue dans la mémoire centrale est valable; c) un état partagé (lSl) indiquant que cette même ligne est contenue dans un ou plusieurs systèmes à cache secondaire et que la copie contenue dans la mémoire centrale est valable; et d) un état invalide (lIl) indiquant que la ligne n'est pas valable et qu'une copie valable se trouve ailleurs. 11 Système selon la revendication 3, dans lequel l'interface de contrôleur de bus mémoire ( 35) comprend en outre un moyen pour générer indépendamment et fournir au contrôleur de bus mémoire ( 11) une impulsion de demande de cycle de bus mémoire et un signal d'échan- tillonnage de données de cache indiquant la disponi- bilité de données de la mémoire cache ( 13) au bus mémoire ( 15), permettant ainsi au contrôleur de bus mémoire ( 11) de déclencher un nouveau cycle dès que des adresses sont disponibles, indépendamment de la dispo- nibilité de données.30 12 Système selon la revendication 3, dans lequel l'interface de contrôleur de bus mémoire ( 35) comprend en outre un moyen pour générer indépendamment, à l'usage du contrôleur de bus mémoire ( 11), un signal d'échan- tillonnage d'adresses de surveillance de cache prélevée sur des cycles de réécriture de surveillance et un signal d'échantillonnage de données de cache indiquant la disponibilité de données de la mémoire cache ( 13) pour le bus mémoire ( 15), permettant ainsi au contrôleur de bus mémoire ( 11) de déclencher un nouveau cycle dès que des adresses sont disponibles, indépendamment de la disponibilité de données. 13 Système selon la revendication 3, dans lequel le contrôleur de cache ( 12) comprend en outre un moyen de répertoire destiné à accepter du bus mémoire ( 15) des attributs de ligne pour des cycles sur le bus mémoire 1-0 ( 15). 3.4 Système selon la revendication 13, dans lequel le moyen de répertoire destiné à accepter les attributs de ligne est également capable de stocker ces attributs et comprend: a) un moyen pour contrôler des attributs de possi- bilité de mise en antémémoire, permettant la mise en cache de données marquées susceptibles d'être mises en antémémoire; b) un moyen pour contrôler des attributs "lecture seulement" afin de maintenir protégées contre l'écriture les données ainsi marquées; c) un moyen pour contrôler des attributs de stratégie d'écriture afin que soit effectué un cycle de double écriture pour des données marquées "double écriture" et afin que soit effectuée une réécriture pour les données marquées "réécriture"; et d) un moyen pour contrôler des attributs "directement à l'état modifié", lequel est activé lorsque le libellé d'attribut indique au répertoire de cache de placer la ligne concernée directement à l'état modifié. Système selon la revendication 13, dans lequel le répertoire de cache comprend en outre: a) un moyen pour stocker et coordonner l'attribut "lecture seulement" à la ligne de cache correspondante; et 1 01 a) un moyen pour empêcher une tentative d'écriture sur une telle ligne "lecture seulement". 16 Système selon la revendication 11, dans lequel le contrôleur de bus mémoire ( 11) comprend des moyens pour réaliser un cycle de bus mémoire. 17 Système selon la revendication 16, dans lequel les moyens pour réaliser un cycle de bus mémoire sont capables de déclencher un cycle d'écriture sur le bus mémoire ( 15) et comprennent: a) un moyen pour signaler que le contrôleur de bus mémoire ( 11) demande un cycle de bus mémoire; b) un moyen pour signaler au contrôleur de bus mémoire ( 11), après le signal demandant un cycle de bus mémoire et avant la détection d'un signal d'achèvement d'un cycle de bus mémoire, que des données sont prêtes à être transmises sur le bus mémoire ( 15); c) un moyen pour détecter un signal de garantie de transfert sur le bus mémoire, provenant du contrôleur de bus mémoire ( 11); d) un moyen pour détecter un signal du contrôleur de bus mémoire ( 11) indiquant que la fenêtre de possibilité de mise en antémémoire a expiré, entraînant l'échan- tillonnage et la prise en charge de tous les attributs de possibilité de mise en antémémoire et de lecture25 seulement; e) un moyen pour détecter un signal du contrôleur de bus mémoire ( 11) indiquant que la fenêtre de surveil- lance a expiré, entraînant l'échantillonnage et la prise en charge des attributs de stratégie d'écriture et des30 attributs "directement à l'état modifié" générés par des surveillances; et f) un moyen pour détecter un signal du contrôleur de bus mémoire ( 11) indiquant qu'un cycle sur le bus mémoire ( 15) est terminé.35 18 Système selon la revendication 16, dans lequel les moyens du contrôleur de bus mémoire ( 11) pour réaliser un cycle sur le bus mémoire ( 15) comportent des moyens destinés à déclencher un cycle de transfert de données sur le bus mémoire ( 15) et comprenant: a) un moyen pour signaler que le contrôleur de bus mémoire ( 11) demande un cycle de bus mémoire et pour indiquer qu'une commande de cycle et des signaux sont valables; et b) un moyen pour signaler au contrôleur de bus mémoire ( 11), après son signal demandant un cycle de bus mémoire et avant la détection d'un signal d'achèvement sur le bus mémoire ( 15), que la commande du bus mémoire peut déclencher un cycle de lecture; c) un moyen pour détecter un signal de garantie de transfert sur le bus mémoire, provenant de la commande du bus mémoire; d) un moyen pour détecter un signal, provenant de la commande du bus mémoire, indiquant que la fenêtre de possibilité de mise en antémémoire a expiré, ce qui entraîne l'échantillonnage et la prise en charge de tous les attributs de possibilité de mise en antémémoire et de lecture seulement; e) un moyen pour activer l'adresse suivante afin de produire un traitement en pipeline d'adresses en amenant le moyen pour signaler une demande de cycle de bus25 mémoire à déclencher une nouvelle demande de bus mé- moire; f) un moyen pour détecter un signal, provenant de la commande du bus mémoire, indiquant que la fenêtre de surveillance a expiré, ce qui entraîne l'échantillonnage et la prise en charge de tous les attributs de stratégie d'écriture et les attributs "directement à l'état modifié", générés par des surveillances; et g) un moyen pour détecter un signal, provenant de la commande du bus mémoire, indiquant qu'un cycle sur le bus mémoire ( 15) est terminé. 103 J 19 Système selon la revendication 16, dans lequel le contrôleur de bus mémoire ( 11) comprend en outre: a) un moyen pour détecter une demande de 1 'UC ( 10) pour une transaction atomique "lire- modifier-écrire" sur le bus mémoire ( 15); et b) un moyen pour générer un signal de verrouillage d'attribut de cycle, appliqué à la commande du bus mémoire et signalant cette demande de l'UC; et c) un moyen pour détecter une correspondance en lecture sur des données modifiées dans le cache secon- daire et pour, en conséquence, amener la mémoire cache secondaire ( 13) à fournir les données concernées à l'UC ( 10) à la place des données fournies au bus mémoire ( 15). 20 Système selon la revendication 16, dans lequel les moyens du contrôleur de bus mémoire ( 11) pour réaliser un cydle sur le bus mémoire ( 15) sont capables de réaliser un cycle d'écriture atomique de double longueur sur la même ligne de cache et comprennent: a) un moyen pour détecter une demande de l'UC ( 10) pour la mise en antémémoire d'un cycle d'écriture atomique de double longueur; et b) un moyen pour contrôler l'état de la ligne de cache et déclencher les actions suivantes: i) si la ligne est à l'état modifié (lMl), compléter le cycle double avant de déclencher une réécriture en mémoire pour une surveillance, ii} si la ligne est à l'état exclusif (lEl), changer l'état de la ligne en le faisant passer à l'état modifié (lMl) après le premier cycle d'écriture, et compléter le second cycle d'écriture avant de déclencher une réécriture en mémoire pour une surveillance, iii) si la ligne est à l'état partagé (lSI), déclencher, après le premier cycle d'écriture, une double écriture sur le bus mémoire ( 15), à la fois pour le premier et pour le second cycle d'écriture, et ulieilger l'état de la ligne sur la base de la stratégie d'écriture avec référence à des attributs des passage direct à l'état modifié (lMI) pour le second cycle d'écriture, et iv) si la ligne est à l'état invalide (lIl), produire deux cycles d'écriture sur le bus mémoire ( 15) avec attribution au cache après le second cycle d'écri- ture si l'attribution est autorisée. 21 Système selon la revendication 16, comprenant en outre un moyen pour réaliser un cycle d'attribution "lecture de mémoire au cache" par suite d'une discor- dance en écriture sur la même ligne par l'écriture en mémoire de cette discordance en écriture et par l'extraction de mémoire de la ligne mise en antémémoire et contenant lesdites données inscrites. 22 Système selon la revendication 16, comprenant en outre un moyen pour réaliser un cycle d'écriture fictif suivi de la lecture de la ligne de cache à l'adresse d'écriture spécifiée, en combinaison avec l'attribut "directement à l'état modifié" pour obliger la ligne de cache à passer à l'état modifié (lMl). 23 Système selon la revendication 17, comprenant en outre un moyen de verrouillage pour bloquer des surveillances après la détection d'un signal de garantie de transfert sur le bus mémoire ( 15), signal qui pro- vient de la commande du bus mémoire, jusqu'à la détec- tion d'un signal indiquant la fin de la fenêtre de surveillance. 24 Système selon la revendication 16, dans lequel les moyens du contrôleur de bus mémoire ( 11) pour réaliser des cycles sur le bus mémoire ( 15), comprennent des moyens pour planifier simultanément des activités sur le bus mémoire ( 15) et sur le bus ( 14) de l'UC ( 10) chaque fois que l'activité de 1 'UC ( 10) ne demande pas l'utilisation du bus mémoire ( 15), l'activité sur le bus d'UC ( 14) comprenant des correspondances en lecture sur des lignes à l'état exclusif (lEJ), partagé (lSl) ou modifié (lMI), activité qui peut se dérouler en même temps que toute activité sur le bus mémoire ( 15), laquelle comprend des réécritures et des attributions,5 pouvant se dérouler en même temps que toute activité sur le bus d'UC ( 14) sauf en cas de conflits pour des accès à une ligne de cache ou une interface.