Brevet FR2698188A1 — publié le 19940520

i La présente invention concerne de façon générale le domaine des systèmes d'ordinateur et plus spécifiquement, des mémoires cache de second niveau qui représentent le niveau de la hiérarchie de mémoire dans un système d'ordinateur situé entre le cache de l'unité centrale de traitement (CPU) et la mémoire principale. Historiquement, les recherches de performances pour la technologie des microprocesseurs ont progressé à un rythme plus rapide que les recherches de performances pour les technologies des supports d'information tels que les DRAM (mémoires vives dynamiques) et que les logiques (TTL)/programmables (Logiques Transistors- Transistors/programmables) Les récentes tendances aggravent encore davantage cette non correspondance des manières suivantes Tout d'abord, les vitesses d'horloge des microprocesseurs se sont rapidement approchées, et dans certains cas ont dépassé les vitesses d'horloge des logiques de support d'information standard En outre, le nombre d'impulsions d'horloge par instruction a diminué rapidement, amenant ainsi une exigence d'une bande passante très élevée pour les mémoires Des conceptions plus récentes telles que les architectures RISC nécessitent même une bande passante de la mémoire plus grande pour exécuter la même quantité de travail. L'exigence de bande passante de la mémoire a été encore davantage augmentée par la nécessité d'un accès mémoire direct (DMA) dans des dispositifs tels que des dispositifs à coprocesseurs ou à multiprocesseurs Pour finir, la vitesse à laquelle les nouveaux dispositifs sont introduits sur le marché s'accélère, ce qui rend encore plus critiques les problèmes qui précèdent. Il résulte de ces tendances que des goulots d'étranglement sont apparus au niveau des performances et ils continuent à influencer la façon dont les systèmes sont conçus La bande passante de mémoire, en tant que limiteur de performance, a déjà entraîné l'utilisation de mémoires caches dans bon nombre de systèmes de microprocesseurs A titre d'exemple, l'utilisation des mémoires caches est d'un usage courant dans la génération des microprocesseurs 386 (marque déposée) fabriqués par Intel Corporation Par ailleurs, les processeurs Intel 486 (marque déposée) et i 860 (marque déposée) (également appelés i 860 XP (marque déposée)) de Intel incluent des caches sur groupements de puces dans le but d'augmenter la performance Il est clair que d'autres modifications dans la hiérarchie des mémoires (cache primaire, cache secondaire, architectures DRAM, etc) seront nécessaires pour soutenir les augmentations de performance dans les générations futures. (Intel, 386, Intel 486, i 860 et i 860 XP sont tous des marques déposées de Intel Corporation). Une description didactique des concepts de mémoire cache peut être trouvée dans la publication intitulée "Cache Tutorial" disponible auprès de Intel Corporation, à l'adresse suivante: Literature Sales, P O Box 7641, Mt Prospect, IL 60056-7641, U.S A Les mémoires caches connues sont conçues en deux niveaux: cache de premier niveau et cache de second niveau Un cache de premier niveau est une unique couche de mémoire haute vitesse entre les microprocesseur et la mémoire DRAM du système principal Les caches de premier niveau conservent des copies des codes et des données les plus fréquemment utilisés par le microprocesseur Les caches de premier niveau présentent typiquement une petite taille ( 4 K-octets à 64 K-octets) Le cache de premier niveau peut être soit interne soit externe au dispositif (qui est par exemple un microprocesseur) qui constitue le processeur. Un cache de second niveau est une seconde couche de mémoire haute vitesse située entre le cache de premier niveau et la mémoire DRAM du système principal Les caches de second niveau conservent également des copies des codes et des données les fréquemment utilisés par le microprocesseur Les caches de second niveau sont typiquement externes au dispositif qui constitue le processeur Un cache de second niveau manipule davantage de requêtes mémoire vive que celles que le cache de premier niveau laisse passer ou manque Afin de simplifier la manipulation des requêtes que le cache de premier niveau manque, le cache de second niveau inclut typiquement toutes les données du cache de premier niveau et et en inclut aussi d'autres Il résulte de cela qu'un cache de second niveau est toujours plus grand ( 64 K-octets à 512 K- octets) qu'un cache de premier niveau. Afin d'obtenir une performance optimale, il est souhaitable que le cache réalise un fonctionnement avec zéro état d'attente L'absence d'état d'attente à zéro implique que le processeur n'a pas à attendre des données en provenance de la mémoire cache Par exemple, le cadencement selon lequel la mémoire cache produit des données valides sur le bus de données ne doit pas entraîner que le processeur gaspille des cycles d'attente de données valides Les systèmes connus assurent un fonctionnement avec zéro état d'attente en utilisant un type particulier de mémoire vive statique (SRAM) appelée "SRAM à salve" ou "SRAM synchrone" ou en utilisant des groupes entrelacés de SRAM qui sont accédés en alternance Un aspect négatif de l'utilisation d'une "SRAM à salve" est son coût Une "SRAM à salve" est plus coûteuse qu'une SRAM asynchrone classique. Les groupes entrelacés de SRAM entraînent l'ajout d'une certaine quantité de logique et de circuit de commande à un contrôleur de cache En outre, l'utilisation d'une structure entrelacée conduit à des conflits de bus de données lors d'une commutation entre les groupes Ce phénomène de conflit a des effets sur le cadencement du système du fait que pendant la durée pendant laquelle un groupe donné est désactivé et un autre groupe est activé, les deux groupes peuvent être amenés à entraîner des données sur la même ligne de bus Ceci réduit la fiabilité à long terme des composants de SRAM eux- mêmes En outre, des caches mis en oeuvre en utilisant des groupes de SRAM entrelacés coûtent plus que ceux qui utilisent des groupes non entrelacés bien que leur coût soit inférieur à celui d'une SRAM à salve. Ainsi, un objet essentiel de la présente invention consiste à proposer un contrôleur cache présentant un fonctionnement avec zéro état d'attente sans le coût élevé des SRAM à salve et sans une fiabilité réduite d'une structure cache entrelacée. Un autre objet de la présente invention consiste à proposer un système de cache qui utilise des dispositifs de SRAM asynchrones classiques, ce qui réduit le coût global du système. Une mémoire cache système avec zéro état d'attente destinée à être utilisée dans des systèmes d'ordinateur est décrite La présente invention utilise des groupes de mémoires vives statiques (SRAM) asynchrones non entrelacées qui sont chacune commandées indépendamment Les composants utilisés sont des puces SRAM asynchrones de niveau classique. L'utilisation d'un schéma d'accès à des données non entrelacées élimine les conflits de données En outre, une commande indépendante des groupes de mémoires permet au contrôleur cache de supporter des tailles de cache plus importantes tout en laissant augurer des économies plus importantes puisque tous les groupes n'ont pas à être utilisés. Un fonctionnement avec zéro état d'attente est obtenu en corrélant les signaux de commande de mémoire cache relatifs à l'horloge et des signaux de commande utilisés par le processeur. Dans le mode de réalisation présentement particulier de la présente invention, la corrélation est réalisée en 1) cadençant des opérations de cache à deux fois la fréquence d'horloge du microprocesseur et 2) en corrigeant la dissymétrie des signaux de commande résultant des voies de circuit différentes prévues pour chacun des signaux de commande de cache La correction de la dissymétrie des signaux de commande est réalisée en identifiant le signal ou les signaux de commande présentant des retards maximum puis en introduisant un circuit de retard dans la voie de circuit des signaux de commande et d'horloge moyennant des retards moindres. Un accès par salve de processeur à une mémoire est supporté par un séquenceur interne qui prédit des adresses de salve suivantes sur la base des adresses initiales produites par le processeur. La présente invention sera mieux comprise à la lumière de la description qui suit que l'on lira en relation avec les dessins annexés parmi lesquels: la figure 1 est un schéma fonctionnel d'un système d'ordinateur dans lequel le mode de réalisation présentement particulier de la présente invention peut être mis en oeuvre; la figure 2 est un schéma fonctionnel d'un circuit implanté sur groupement de puces qui peut être utilisé pour constituer une base pour un système d'ordinateur tel que représenté sur la figure 1, le mode de réalisation présentement particulier de la présente invention étant un composant de ce circuit implanté sur groupement de puces; la figure 3 représente les interfaces des signaux pour un composant de contrôleur de DRAM cache (CDC) du mode de réalisation présentement particulier de la présente invention; la figure 4 est un schéma fonctionnel qui représente les interfaces des signaux du contrôleur de cache lorsque l'on utilise des groupes de mémoires vives statiques (SRAM) du mode de réalisation présentement particulier de la présente invention; la figure 5 est un schéma fonctionnel de la fonctionnalité du contrôleur de cache du mode de réalisation présentement particulier de la présente invention; la figure 6 est un schéma de cadencement pour expliquer une intervention de lecture, moyennant un fonctionnement avec zéro état d'attente, et un mode écriture en double ou écriture retour différée, dans le mode de réalisation présentement particulier de la présente invention; la figure 7 est un diagramme temporel pour expliquer une intervention d'écriture moyennant un fonctionnement avec zéro état d'attente dans le mode écriture en double dans le mode de réalisation présentement particulier de la présente invention et la figure 8 est un diagramme temporel pour expliquer une intervention d'écriture moyennant un fonctionnement avec zéro état d'attente dans le mode écriture différée dans le mode de réalisation présentement particulier de la présente invention. Un circuit qui met en oeuvre un contrôleur pour un système de cache est décrit Dans la description qui suit, de nombreux détails spécifiques sont mis en exergue, tels que les nombres spécifiques d'octets, de bits, de dispositifs, etc afin d'assurer une compréhension approfondie du mode de réalisation particulier de la présente invention Il apparaîtra à l'homme de l'art que la présente invention peut être mise en oeuvre sans ces détails spécifiques Par ailleurs, des circuits bien connus ont été représentés sous forme de schéma fonctionnel au lieu de l'être de façon détaillée afin d'éviter de compliquer de façon non nécessaire la description de la présente invention. Au cours de la description de la présente invention, une référence fréquente peut être faite à l'utilisation du contrôleur de cache inventé en conjonction avec certaines architectures de CPU spécifiques et/ou avec certains types de microprocesseurs spécifiques tels que le microprocesseur Intel 486 DX de Intel. Ces mises en oeuvre reflètent tout simplement le mode de réalisation présentement particulier de la présente invention Il est bien entendu que les concepts mis en oeuvre dans la présente invention peuvent s'appliquer ou peuvent être étendus à d'autres types de processeurs ainsi qu'à d'autres types d'architectures. En outre, lors de la description de la présente invention, référence est faite à des noms de signaux spécifiques au mode de réalisation présentement particulier Une description de chacun de ces signaux est produite dans le texte et dans l'annexe A Une référence faite à ces noms de signaux spécifiques ne doit pas être considérée comme limitant le cadre de la présente invention. APERCU GENERAL D'UN SYSTEME D'ORDINATEUR DU PRESENT MODE DE REALISATION Le mode de réalisation présentement particulier de la présente invention peut être mis en oeuvre en vue d'une utilisation dans un système d'ordinateur tel que celui représenté sur la figure 1 La présente invention peut être mise en oeuvre sur un micro-ordinateur à usage général tel que l'un des membres de la famille des ordinateurs personnels compatibles IBM (marque déposée) ou sur l'un des nombreux dispositifs de stations de travail ou d'ordinateurs graphiques qui sont présentement disponibles commercialement Un système d'ordinateur tel qu'utilisé éventuellement par le mode de réalisation particulier comprend de façon générale un bus ou d'autres moyens de communication 101 permettant de communiquer une information, un moyen de processeur 102 couplé audit bus 101 pour traiter une information, une mémoire vive (RAM) ou tout autre dispositif de stockage 103 (classiquement appelé mémoire principale) couplé audit bus 101 pour stocker une information et des instructions pour ledit processeur 102, une mémoire morte (ROM) ou tout autre dispositif de stockage statique 104 couplé audit bus 101 pour stocker une information statique et des instructions pour ledit processeur 102, un dispositif de stockage de données 105, tel qu'un disque magnétique et qu'une unité de disque, couplé audit bus 101 pour stocker une information et des instructions, un dispositif d'entrée alphanumérique 106 incluant des touches alphanumériques ou autre, lequel dispositif est couplé audit bus 101 pour communiquer des sélections d'information et de commandes audit microprocesseur 102, un dispositif de commande de curseur 107 tel qu'une souris, une bille de déplacement, des touches de commande de curseur, etc, lequel dispositif est couplé audit bus 101 pour communiquer des sélections d'informations et de commandes audit processeur 102 et pour commander le déplacement du curseur En outre, il est utile que le système inclue un dispositif de copie sur support papier 109 tel qu'une imprimante pour produire des copies permanentes de l'information Le dispositif de copie sur support papier 109 est couplé au processeur 102 par l'intermédiaire du bus 101. Il est à noter que dans la description qui précède, le bus 101 est utilisé dans un sens générique afin d'indiquer un couplage entre les divers composants contenus dans le système d'ordinateur Comme il sera décrit de manière davantage détaillée ci-après, le bus 101 peut être de fait constitué par une pluralité de structures de bus dont chacune est interconnectée aux autres et dont chacune est utilisée pour supporter une classe spécifique de dispositifs. APERCU GENERAL DU MODE DE REALISATION DU SYSTEME Le mode de réalisation présentement particulier de la présente invention est mis en oeuvre dans un composant de système d'ordinateur appelé contrôleur de DRAM de cache (CDC). Le terme DRAM est un terme bien connu qui se rapporte à des dispositifs de mémoire connus en tant que mémoires vives dynamiques Les DRAM sont classiquement utilisées en tant que mémoires principales des systèmes d'ordinateur Quel que soit le cas, le CDC fait partie d'un groupement de puces Un groupement de puces se rapporte à une collection de circuits intégrés conçus en étant liés de façon intime, lesquels circuits remplissent la fonctionnalité du coeur d'un système d'ordinateur L'utilisation de groupements de puces réduit de manière significative l'effort mis en jeu lors de la conception, de la fabrication et du test d'un système d'ordinateur. Le groupement de puces du mode de réalisation présentement particulier est décrit par report à la figure 2 Les composants d'un groupement de puces sont un CDC 202, un microprocesseur 201, une unité de voie de donnée (DPU) 203 et une unité d'entrée/sortie système (SIO) 204 Le groupement de puces de la présente invention interconnecte trois structures de puces différentes Un bus hôte est conçu de façon interne pour des dispositifs spécifiques, par exemple le processeur, le coprocesseur et la mémoire système Un bus d'interface de composants périphériques (PCI) est destiné à coupler des dispositifs d'entrée/sortie (I/O) adaptés pour le PCI au système. Pour finir, un interface de bus dont l'architecture correspond à l'architecture standard dans l'industrie (ISA) est prévu pour permettre une connexion d'une classe existante de dispositifs d'l/O au système De façon générale, le bus PCI fonctionne plus rapidement que le bus ISA et assure une fonctionnalité différente Il est en outre à noter que chacun de ces bus comporte des sous-bus de données, d'adresses et de commandes. La DPU 203 assure des connexions de bus de données pour le microprocesseur, pour le bus local et pour le bus de données de DRAM La SIO 204 sert de pont entre le bus local PCI et un bus ISA En outre, elle intègre un contrôleur de DMA compatible ISA, une minuterie/compteur et un contrôleur d'interruption et elle intègre également une logique d'arbitrage de bus local PCI Le microprocesseur 201 du mode de réalisation présentement particulier est l'un des microprocesseurs à 25 ou 33 M Hz i 4865 X, i 487 SX, i 486 DX, i 486 DX 2 ou d'autres microprocesseurs Intel compatibles vis-à-vis du bus ou de processeurs de classe supérieure, tous ces processeurs étant disponibles auprès de Intel Corporation, Santa Clara, Californie et constituant des désignations de marques déposées. Dans le mode de réalisation présentement particulier, le CDC 202 inclut un contrôleur de DRAM à port double qui interface la DRAM 206 vis-à-vis du bus de CPU hôte et du bus PCI Le contrôleur de DRAM envoie des adresses 213 et des signaux de commande 214 à la DRAM 206 ainsi que des signaux de commande de DPU 215 à la DPU 203 Ceci aboutit au transfert de données jusqu'à la DPU 203 et ensuite jusqu'au processeur 201 Le CDC 202 supporte une organisation de DRAM entrelacées à communication bidirectionnelle Le CDC 202 intègre également un contrôleur de cache qui supporte 64 K-octets, 128 K-octets, 256 K-octets ou 512 K-octets d'un cache secondaire qui utilise des SRAM asynchrones standards Le contrôleur de cache intégré du CDC supporte soit des protocoles de cache d'écriture en double soit des protocoles de cache d'écriture différée Le CDC assure d'autres fonctionnalités vis-à- vis du système d'ordinateur, y compris une génération d'horloge système et la production d'une logique de remise à l'état initial du système. Comme il est décrit de manière davantage détaillée ci-après, la génération d'horloge système joue un rôle lors de l'obtention du fonctionnement du cache avec zéro état d'attente. Par report à nouveau à la figure 2, un bus hôte 205 est utilisé pour coupler le processeur 201 à des composants système critiques tels que la DRAM 206, l'agencement de mémoire cache 207 et un coprocesseur 208 Il est à noter que l'agencement de mémoire cache inclut la totalité des étiquettes (dénommées TAG) et des données (DATA) ainsi que d'autres zones de stockage nécessaires pour le système de cache Un second bus, soit ici un bus PCI 209, est utilisé pour coupler des composants de second rang Dans l'architecture PCI, les composants peuvent être soit des dispositifs maîtres 210 soit des dispositifs esclaves 211 Un dispositif maître est un dispositif qui peut piloter et commander le bus PCI 209 Un dispositif esclave est un dispositif qui répond à des requêtes en provenance d'un dispositif maître sur le bus PCI 209 ou en provenance d'un autre composant défini en tant que composant maître qui peut être physiquement placé sur un autre bus Pour finir, un bus ISA 212 est utilisé pour coupler des dispositifs compatibles ISA. La présente invention concerne la partie de contrôleur de cache du CDC 202 Cependant, il apparaîtra à l'homme de l'art que la présente invention peut être mise en oeuvre en tant que composant discret ou peut être conditionnée en tant que composant présentant une fonctionnalité plus importante La présente invention peut être mise en oeuvre soit en tant que cache de premier niveau, soit en tant que cache de second niveau. 1 1 En outre, la présente invention concerne un système de cache qui est externe au microprocesseur Dans le mode de réalisation présentement particulier, le cache est un cache de second niveau Ceci est dû au fait que le microprocesseur supporté dans le mode de réalisation particulier inclut un cache de premier niveau interne Cependant, il apparaîtra à l'homme de l'art comment mettre en oeuvre la présente invention en tant que cache de premier niveau. Interfaces de signaux La figure 3 représente les modules d'interface et les interfaces de signaux pour le composant CDC du mode de réalisation présentement particulier. Par report à la figure 3, un module d'interface de CPU hôte 301 est utilisé pour réaliser un couplage au processeur hôte Les signaux spécifiques sont produits sur un processeur de classe supérieure via un module d'interface de processeur de classe supérieure 302 Un processeur de classe supérieure est un processeur qui remplace un processeur original Un processeur de classe supérieure réalise une performance augmentée par rapport à celle du processeur original L'interface de commande de cache 303 est utilisé pour réaliser un interface avec les groupes de mémoires caches Un interface de commande de DRAM 304 est utilisé pour réaliser un interface avec la DRAM système. Un interface de bus local PCI 305 constitue un interface vis-à- vis du bus local Un module de remise à l'état initial et d'horloge 306 produit des signaux d'horloge système tout en recevant le signal d'horloge 2 X Pour finir, un interface de commande de DPU 307 constitue un interface vis-à-vis de l'unité DPU du groupement de puces Une description complète de tous les signaux est produite dans l'annexe A. La figure 4 est un schéma fonctionnel qui représente le couplage des signaux d'interface de contrôleur de cache avec les divers autres composants Les signaux de validation d'écriture de cache (CWE 3#, CWE 2#, CWE 1#, CWEO#) et le signal de validation de sortie de puce (COE#) sont respectivement couplés à chaque groupe pris parmi les groupes de SRAM, au groupe 401 et au groupe 402 Un signal de sélection de puce (respectivement CC 51# et CC 52#) est couplé pour valider chacun des groupes 401 et 402 La partie d'étiquette de chacun des groupes de SRAM, ici représentée en 403, ainsi que des bits valides 404 sont couplés pour recevoir les signaux de validation d'écriture (TWE#) et de validation de sortie (TOE#) Le signal de validation d'écriture permet la mise à jour de la partie d'étiquette Le signal de validation de sortie permet la lecture et l'utilisation du contenu de la partie d'étiquette Les parties d'étiquette 403 et les bits valides 404 sont également couplés à des zones d'étiquette de l'adresse produite par le processeur (HAl 31: 2 l). Des bits de modification 406 correspondant à des lignes contenues dans les groupes de SRAM sont utilisés pour signaler qu'une ligne correspondante dans la SRAM a été modifiée Ceci est commandé par les signaux DWE#, DIRTYD et DIRTYQ. En outre, des adresses de cache CA( 3: 2), CA( 18: 4) sont couplées aux groupes 401 et 402 pour accéder à des emplacements dans les groupes de caches Pour finir, le signal de validation de dispositif de verrouillage de cache 405 (CALE) est couplé à un dispositif de verrouillage qui est utilisé pour créer des adresses sur un bus d'adresse de cache (CAl 18: 4 l). Système de cache du mode de réalisation présentement particulier Dans le mode de réalisation présentement particulier, un système de cache de premier niveau est intégré dans le microprocesseur i 486 présentement particulier L'organisation du cache est un jeu de 4 voies: associatives et chaque ligne de cache présente une largeur de 16 octets La mémoire cache de premier niveau est physiquement séparée en 4 blocs à 2 K-octets dont chacun contient 128 lignes Des étiquettes de 12821 bits sont associées à chaque bloc de 2 K-octets Les étiquettes sont utilisées pour identifier le contenu d'une entrée correspondante dans la mémoire cache La stratégie d'écriture utilisée est une écriture en double D'autres détails sur le cache de premier niveau Intel 486 peuvent être trouvés dans la publication Microprocessors Volume I disponible auprès de Intel Corporation via Intel Literature Sales, P O Box 7641, Mt Prospect, IL 60056- 7641. Le cache de second niveau est une implantation directe dans laquelle chaque ligne de cache présente une largeur de 16 octets Le cache peut présenter une dimension de 64 K-octets à 512 K-octets La stratégie d'écriture peut être soit une écriture en double soit une écriture différée Les stratégies d'écriture font l'objet d'une discussion brève ci-après. Dans le mode de réalisation présentement particulier, la stratégie d'écriture pour le cache de second niveau peut être différente de celle pour un cache de premier niveau Cependant, une mise en oeuvre de caches de premier et de second niveau qui utilise des stratégies d'écriture différée n'est pas supportée. Dans la stratégie d'écriture en double, chaque opération d'intervention sur le cache s'accompagne d'une écriture des mêmes données dans la mémoire principale Dans une stratégie d'écriture différée, le cache est mis à jour pendant l'opération d'écriture mais la mémoire principale réelle est mise à jour lorsque la ligne est déconnectée du cache. La partie de contrôleur cache du CDC produit des signaux de commande indépendants pour les groupes de dispositifs de mémoires vives statiques (SRAM) asynchrones Les dispositifs SRAM sont souhaitables pour une utilisation dans les systèmes de cache du fait de leur vitesse d'accès élevée à des données Il est souhaitable d'utiliser des SRAM asynchrones du fait de leur coût plus faible En outre, puisque les groupes ne sont pas entrelacés et sont commandés de façon indépendante, le même contrôleur peut être utilisé pour supporter diverses tailles de cache Afin d'obtenir un fonctionnement avec zéro état d'attente, moyennant des groupes non entrelacés de SRAM, le contrôleur de cache corrèle les signaux de commande appliqués sur les groupes de SRAM avec l'horloge système On rappelle que le CDC est utilisé pour dériver le signal d'horloge système. La figure 5 est un schéma fonctionnel de la fonctionnalité du contrôleur de cache Comme mentionné ci-avant, le CDC produit le cadencement pour l'horloge système Comme noté sur la figure 5, un signal d'horloge 2 X 501 est produit sur le CDC 510 o il est converti en un signal 1 X par un convertisseur 2 X en 1 X 504 Des moyens pour convertir un signal d'horloge 2 X en un signal d'horloge 1 X sont connus de l'art N'importe lequel de ces moyens bien connus peut être utilisé Le signal en provenance du convertisseur 504 est alors produit sur un élément égaliseur de retard 505 L'élément égaliseur de retard 505 introduit les retards prescrits afin de créer un signal d'horloge 1 X 502 qui comporte des retards à zéro par rapport à des signaux de commande de cache 507 Le signal d'horloge 1 X est ensuite appliqué sur un microprocesseur 503. Le signal d'horloge 2 X est utilisé pour piloter des signaux de commande 507 pour la mémoire cache 506 Le signal d'horloge 2 X est appliqué sur un moyen de génération de signal de commande de cache 508 Le moyen degénération de signal de commande de cache 508 génère des signaux de commande de cache La sortie du moyen de génération de signal de commande de cache 508 est appliquée ensuite sur un élément égaliseur de retard 509 L'élément égaliseur de retard 509 est utilisé pour corriger une dissymétrie de signaux de commande émis en sortie depuis le moyen de génération de signal de commande de cache 508. Bien que le mode de réalisation présentement particulier de la présente invention utilise un signal d'horloge 2 X pour piloter le moyen de génération de signal de commande de cache 508, il apparaîtra à l'homme de l'art qu'il est possible d'utiliser d'autres signaux d'horloge de différentes fréquences Le point clé est que les signaux de commande de cache présentent un retard de zéro par rapport à l'horloge système Ce point clé est appelé schéma d'horloge corrélée La façon selon laquelle le schéma d'horloge corrélée est réalisé dans le mode de réalisation présentement particulier fait l'objet d'une discussion ci-après. Schéma d'horloge corrélée Le schéma d'horloge corrélée assure une correction de la dissymétrie qui peut se produire en relation avec l'émission en sortie de signaux de commande hors du CDC Cette dissymétrie se produit du fait de retards inhérents résultant de la voie de circuit des divers signaux de commande traversant la puce CDC. Afin d'améliorer la performance, ces dissymétries doivent être corrigées Au moyen de la correction de ces dissymétries, un cadencement de signaux peut être commandé de façon davantage précise Du fait de cette commande précise et au moyen d'un cadencement des signaux de commande d'horloge selon une horloge 2 X, un retard de zéro au niveau de la fourniture d'un signal d'horloge système et du signal de contrôleur de cache est obtenu. Le schéma d'horloge corrélée comporte plusieurs contraintes Ceci inclut: 1 La génération de l'horloge système est effectuée sur la puce. 2 Le retard entre une quelconque entrée et une sortie résultante sur une puce de circuit intégré peut varier largement en tant que résultat du processus de fabrication, de la température de fonctionnement et de la tension. 3 Toutes les voies de signal d'entrée/signal de sortie situées sur la même puce présentent les mêmes variations du fait du processus de fabrication, de la température de fonctionnement et de la tension. 4 Les signaux de sortie qui partagent les circuits communs ou similaires et qui sont dérivés d'un signal d'entrée commun présentent des caractéristiques de retard identiques et une dissymétrie minimum les uns par rapport aux autres Cette dissymétrie résulte de faibles variations de processus, de température et de tension du fait que des retards de circuit intrinsèques se "suivent" les uns les autres dans les circuits donnés. En utilisant les contraintes, les voies de circuit des signaux de commande sont modifiées afin d'éliminer la dissymétrie lors de la fourniture des signaux de commande La dissymétrie est non souhaitable puisqu'elle provoque des retards de cadencement, ce qui nécessite l'introduction d'états d'attente. Les états d'attente dégradent la performance du système. Une corrélation des signaux de cadencement du mode de réalisation présentement particulier a été obtenue par l'intermédiaire d'itérations de simulations de cadencement et de l'introduction de retards de porte dans les voies de circuit particulières Tout d'abord, le signal de commande qui présente le retard le plus long est déterminé Lorsque ce signal est déterminé, la voie de circuit pour d'autres signaux de commande peut être rallonge selon les besoins Ce rallongement peut être réalisé par exemple en introduisant des paires d'inverseurs dans la voie de circuit des signaux de commande Ces moyens sont illustrés ci-avant sur la figure 5 en tant qu'éléments égaliseurs de retard 505 et 509. Prédiction de l'ordre des adresses Une prédiction de l'ordre des adresses produit un transfert de mode salve des données cache Il est à noter que le mode salve de transfert est une caractéristique de la famille Intel i 486 des microprocesseurs Essentiellement, ce mode réalise un transfert rapide de données sur la base d'une adresse produite Il est à noter que dans les mises en oeuvre connues, le dispositif doit toujours lire l'adresse de toutes les données auxquelles il doit accéder depuis le bus d'adresse. Dans l'idéal, le mode de fonctionnement salve utilise 5 cycles d'horloge, deux pour obtenir les premières données et chacune des données suivantes produites lors du cycle suivant Un problème concernant le fait de supporter un transfert de mode salve est qu'une adresse produite par la CPU peut retarder l'instant nécessaire pour lire ou écrire les données Une prédiction de l'ordre des adresses élimine la nécessité de consulter chaque adresse Une prédiction est effectuée sur la base d'une observation des motifs d'adressage de données au moyen du système Intel i 486 Ce sont les second et troisième bits d'adresse d'ordre inférieur (c'est-à-dire A 2 et A 3) de la première adresse qui sont examinés Ceci est dû au fait que les bits A O et Ai sont ignorés par les microprocesseurs du mode de réalisation présentement particulier (par exemple Intel 486) à des fins d'adressage de ligne cache Pour les valeurs particulières de A 2 et de A 3, un premier motif d'adresse correspondant est identifié Cette correspondance est la suivante 00 = O 01 = 4 = 8 1 i = C On rappelle que le cache est adressé en tant que lignes de mots doubles (c'est-à-dire 4 octets) Ainsi, le premier mot double est aux emplacements d'adresse de ligne 0, le second mot double est aux emplacements d'adresse de ligne 4, le troisième mot double est à l'emplacement d'adresse de ligne 8 et le quatrième mot double est aux emplacements d'adresse de ligne C. A partir de la première adresse identifiée, la séquence correspondante d'adresses suivante est obtenue 0 4 8 C 4 O C 8 8 C O 4 C 8 4 O Ces séquences sont obtenues du fait qu'une adresse mémoire peut se produire en un quelconque point de la ligne cache Les données appropriées sont ensuite accédées conformément à la séquence d'adresses appropriée et sont produites pour chaque cycle de processeur suivant. Schémas de cadencement Les descriptions de schémas de cadencement de diverses opérations caches suivent Elles n'entendent pas être exhaustives mais seulement représentatives des opérations du système de code Il est à noter qu'afin de convoyer complètement la séquence d'opérations, des signaux non générés dans le contrôleur cache ont été inclus Par ailleurs, tous les signaux destinés au contrôleur cache sont représentés mais ils peuvent ne pas être utilisés pour une opération particulière A nouveau, ceci est proposé par souci de présenter une description complète. La figure 6 est un schéma de cadencement pour une lecture d'intervention de cache de niveau deux, avec zéro état d'attente Les lectures d'intervention de cache de niveau deux sont manipulées de la même façon selon que le cache de niveau deux est dans une écriture en double ou écriture différée Le cycle est initialisé par ADS# 601 et il est terminé par BRDY# 602 Le signal ADS# 601 est produit par le processeur tandis que le signal BRDY# 602 est généré par la partie d'interface de CPU du CDC (comme représenté sur la figure 2) Il est à noter que le signal BRDY# 602 est utilisé pour des accès en mode salve Une comparaison d'étiquette est terminée avant le front descendant du cycle d'horloge T 2 603 afin de déterminer si oui ou non il s'agit d'une intervention de cache ou d'un manque de cache S'il s'agit d'une intervention de cache, le signal BRDY# 602 est généré au milieu du cycle d'horloge T 2, sur le front descendant du signal CLK 1 604, et il est échantillonné par la CPU à la fin du cycle d'horloge T 2 603 Les DWORDS suivant lors de la lecture par salve sont échantillonnés à la fin d'un cycle d'horloge consécutif afin de terminer la lecture par salve selon les cycles d'horloge 2-1-1-1 Pendant les lectures d'intervention de cache de niveau deux, les bits étiquette, valide et modifiés correspondant aux DRAM contenues dans la mémoire cache qui sont lues restent inchangés Le signal CALE 605 est utilisé pour verrouiller l'adresse de CPU dans des dispositifs de verrouillage transparents externes Les bits d'adresse inférieurs CA ( 3: 2) 606 sont pilotés directement par le CDC en utilisant la prédiction de l'ordre des adresses décrite ci-avant. La figure 7 est un diagramme temporel d'une écriture d'intervention de cache de niveau deux avec zéro état d'attente dans le mode écriture double de niveau deux Le cycle est initialisé par ADS#701 et il se termine avec zéro état d'attente du fait d'un enregistrement d'écriture au niveau de la DPU (depuis laquelle des données sont ensuite écrites dans la mémoire DRAM) et le signal RDY#704 est envoyé en retour à la CPU lors du cycle d'horloge T 2 702 Comme dans le cas de la lecture d'intervention, la comparaison d'étiquette est terminée avant le front descendant du cycle d'horloge T 2 701 et elle est utilisée pour déterminer si oui ou non les signaux CWE l 3: 0 l#703 doivent être activés lors du cycle d'horloge T 2 702 S'il s'agit d'une intervention, CWE l 3: O l# sont produits pendant la seconde moitié du cycle d'horloge T 2 et la ligne cache de niveau deux est mise à jour au même instant que celui auquel elle est enregistrée dans la DPU Le CDC initialise alors un cycle d'écriture de DRAM qui est terminé peu de cycles d'horloge après en utilisant l'adresse enregistrée dans le CDC et les données enregistrées dans la DPU (le cadencement du cycle d'écriture de DRAM n'est pas représenté). La figure 8 est un schéma de cadencement d'une écriture d'intervention de cache de niveau deux avec zéro état d'attente dans le mode écriture différée de niveau deux Le cycle est très similaire au cas de l'écriture en double de niveau deux à ceci près que le CDC n'initialise pas un cycle d'écriture de DRAM immédiatement Les nouvelles données sont écrites dans la ligne cache de niveau deux et le bit modifié correspondant à cette ligne est repéré par "DIRTY" afin d'indiquer que les données sont différentes des données contenues dans la DRAM Les signaux DIRTYD 801 et DWE#802 sont utilisés à cette fin Le signal DWE#802 présente le même cadencement que les signaux CWE l 3 : 0 l#803 en ce qu'il ne peut pas être produit avant que l'information d'intervention/manque de cache ne soit valide et en ce qu'il doit également être abandonné avant la fin du cycle avec zéro état d'attente Aucune donnée n'est enregistrée dans la DPU pour ce type de cycle. Comme il apparaît au vu des schémas de cadencement présentés ci-avant, les signaux de commande de cache doivent être alignés précisément avec le signal CLK 1 système Bien que ceci ne soit pas représenté, les signaux de commande de cache sont déclenchés en relation avec le signal d'horloge 2 X appliqué sur le CDC Moyennant cette horloge ainsi que la corrélation de signal intime décrite ci-avant, un fonctionnement avec zéro état d'attente peut être obtenu. Ainsi, un cache mémoire système avec zéro état d'attente qui utilise des groupes non entrelacés de SRAM a été décrit. ANNEXE A SIGNAUX DE CONTROLEUR DE DRAM CACHE Sicinaux d'interface de CPU hôte Nom de Type Description broche/ Sig nal CPURST Sortie Le signal de remise à l'état initial de CPU force la CPU à démarrer une exécution pour un état connu Le signal CPURST est appliqué chaque fois que le signal PWROK est à un niveau bas ou que le signal CPURST est validé par l'intermédiaire du registre TRC Lorsque le CDC est programmé pour un type de CPU autre qu'un processeur de classe supérieure, ce signal synchrone est également appliqué chaque fois que le signal SRESET# est actif ou qu'un cycle de coupure est détecté Le CDC assure au moins en utilisation une impulsion de signal CPURST d'une largeur de 1 mais cependant, une exigence de largeur d'impulsion de remise à l'état initial de mise en route de 1 milliseconde pour la CPU doit être satisfaite par la durée inactive du signal PWROK. Entrée/ sortie Al 31 2 l sont les lignes d'adresse de la CPU. Al 31 2 l ainsi que BEl 3: O l# de validation d'octet définissent la zone physique de la mémoire ou espace d'entrée/sortie accédé. Al 31: 4 l sont utilisés pour piloter des adresses dans la CPU et dans le cache secondaire afin de réaliser des cycles d'écoute (interrogation) de cache Al 3: 2 l ne sont pas utilisés par la CPU pendant des cycles d'écoute mais cependant, ils sont pilotés à un niveau bas par le CDC au lieu que ces signaux soient autorisés à flotter. BEl 3: O l# Entrée Les signaux de validation d'octet indiquent des octets actifs pendant des cycles de lecture et d'écriture BE 3# s'applique à Dl 31 : 24 l, BE 2# s'applique à Dl 23: 16 l, BE 1# s'applique à Dl 15: 8 l et BEO# s'applique à Dl 7: O l. Al 31: 2 l HLOCK# Entrée PLOCK# | Entrée Le signal de verrouillage de bus indique que le cycle de bus de CPU courant est verrouillé HLOCK#, piloté par la CPU, devient normalement actif pendant la première horloge du premier cycle de bus verrouillé et devient normalement inactif pendant la dernière horloge du dernier cycle verrouillé HLOCK# devient actif pendant les opérations de lecture-modification- écriture Les opérations verrouillées sont une combinaison d'un ou de plusieurs cycles de lecture suivie par un cycle d'écriture ou plus. Pour le processeur de classe supérieure, avant qu'un cycle verrouillé ne soit généré, le processeur de classe supérieure vérifie si la ligne est dans un état M Si c'est le cas, le processseur de classe supérieure effectue une écriture différée puis applique le cycle verrouillé sur le bus externe. Le signal de pseudo-verrouillage indique que la transaction de bus de CPU courante nécessite plus d'un cycle de bus pour se terminer Des exemples de ces opérations sont des lecture et écriture longues flottantes ( 64 bits), des lectures de descripteur de table de segments ( 64 bits) et des cycles de lecture et d'écriture différées de ligne cache de processeur de classe supérieure ( 256 bits) Le signal PLOCK# est rendu actif jusqu'à ce que les adresses pour le dernier cycle de bus de la transaction soient pilotées. Les lignes de mémoire/entrée-sortie, de données/commandes et d'écriture/lecture sont des signaux de définition de cycle de bus primaire Le tableau qui suit décrit les cycles de bus. M/10 D/C# bas bas bas bas haut haut haut haut bas bas haut haut bas bas haut haut WR_# Cycle de bus initialisé bas Interruption accusé de réception haut Arrêt cycle spécial bas Lecture 1/0 haut Ecriture 1/0 bas Lecture de code haut Réservé bas Lecture mémoire haut Ecriture mémoire ADS# Entrée L'entrée d'adresse indique qu'une définition de cycle de bus valide, des validations d'octet et des adresses sont disponibles sur leurs broches correspondantes. RDY# Entrée La sortie prêt avec absence de salve indique que le cycle de bus courant est terminé. RDY# indique que le système a présenté des données valides à la CPU en réponse à une lecture ou que le système a accepté des données en provenance de la CPU en réponse à une écriture. M/10# D/C# W/R# Entrée Entrée Entrée BRDY# Entrée La sortie prêt avec salve réalise la même fonction pendant un cycle de salve que RDY# réalise pendant un cycle de non salve. BRDY# indique que le système a présenté des données valides en réponse à une lecture ou que le système a accepté des données en réponse à une écriture. BOFF# Sortie Le signal de sortie d'interruption avec point de reprise force la CPU à faire flotter son bus pendant l'horloge suivante La CPU reste dans un état de maintien de bus jusqu'à ce que BOFF# soit rendu négatif BOFF# est utilisé pour mettre fin à un cycle CPU lorsque la ressource système qui est accédée n'est pas facilement disponible et qu'il y a une éventualité d'interblocage Si un cycle de bus est en train de se dérouler lorsque BOFF# est produit, le cycle est redémarré par la CPU depuis le point o il est interrompu. Pour le processeur de classe supérieure, si une écriture différée de ligne modifiée due à une écoute externe est en souffrance dans le processeur, elle est émise en sortie après que BOFF# est rendu négatif mais avant que le cycle interrompu ne soit redémarré. Sortie Le signal de sortie maintien d'adresse force la CPU à faire flotter son bus d'adresse pendant l'horloge suivante Le CDC applique ce signal en préparation de la réalisation d'une invalidation de cache (i 4865 X, i 487 SX, i 486 DX, i 486 DX 2) ou de cycles (processeur de classe supérieure) d'interrogation de cache Le CDC pilote toujours l'adresse sur le bus hôte en partant de la troisième horloge sur laquelle AHOLD est appliqué et il continue à piloter les adresses jusqu'à ce que AHOLD soit rendu négatif. EADS# Sortie Ce signal indique qu'une adresse externe valide a été pilotée sur les lignes d'adresse de CPU Cette adresse sera utilisée pour réaliser une invalidation de cache interne ou un cycle d'interrogation de cache. KEN# Sortie Le signal de sortie validation de cache est utilisé pour indiquer si oui ou non le cycle courant peut être caché dans le cache interne de CPU (cache primaire ou de premier niveau). PWT Entrée Le signal d'entrée écriture en double de page indique que le cycle de mémoire courant peut être caché dans le cache secondaire s'il est validé dans le mode écriture en double. AHOLD PCD/ Entrée La broche d'entrée invalidation de cache de page, lorsqu'elle est active, indique que le cycle courant ne peut pas être caché dans le cache secondaire pendant une opération de remplissage de ligne cache Lorsque PCD est appliqué, le lien n'est pas caché dans Ll ou L 2. HITM# Entrée La broche d'entrée d'intervention de cache /DIRTYQ modifié indique qu'une intervention sur un cache de données modifié est survenue. HITM# est échantillonné deux horloges après que EADS# est appliqué. PCD/ Entrée La broche cache est active simultanément CACHE# au premier ADS# jusqu'au premier transfert Lors de remplissages de lignes, la fonctionnalité du signal CACHE# est identique à celle du signal PCD CACHE# est appliqué pour chaque demi-remplissage de ligne cache Pendant des cycles d'écriture différée, CACHE# est appliqué seulement pendant la première moitié du remplissage de ligne Le début d'un cycle d'écriture différé est identifié uniquement par ADS#, W/R# et CACHE# ensemble Le commencement d'une écriture différée d'écoute est identifié par ADS#, W/R#, CACHE# et HITM# qui sont activés ensemble. INV Sortie Le signal de sortie invalidation spécifie /DWE quel état final (invalide ou partagé) une ligne cache subit de façon transitoire jusqu'à l'éventualité d'une intervention de cache pendant un cycle d'interrogation de la CPU. Sortie Le signal d'initialisation force la CPU à démarrer une exécution pour un état connu. L'état interne du processeur est le même que l'état après RESET à ceci près que les caches internes, les registres de vérification machine et les registres de virgule flottante retiennent les valeurs qu'ils avaient avant INIT INIT est appliqué par le CDC chaque fois que SRESET# est échantillonné comme étant actif et qu'un cycle de coupure est détecté ou qu'une séquence de remise à l'état initial chaude est initialisée par l'intermédiaire du registre TRC Le CDC assure une largeur d'impulsion minimum de 4 horloges pour le signal INIT. Niveau 2 Interface de commande de cache Nom de Type Description broche/ Signal LCAl 3:2 l Sortie Les signaux l 3:2 l d'adresse de cache génèrent la séquence de salve requise par la HCAl 3:2 l CPU pendant des accès de cache secondaire. Le CDC verrouille l'adresse de salve qui débute et génère de façon interne des adresses de mot suivantes pour la totalité de la ligne cache Ces signaux sont corrélés à l'horloge Un jeu séparé de signaux CAl 3:2 l est produit pour le groupe inférieur et pour le groupe supérieur de manière à maintenir la constante de chargement captive sur LCAl 3:2 l et HCAl 3:21. INIT CC 51# Sortie Les signaux de sortie de sélection de puce de cache de groupe inférieur indiquent que le groupe de données de cache inférieur est sélectionné pour l'opération cache courante. Dimension du cache Plage d'adresses pour LCCS# actif 64 K 0-32 K 128 K 0-128 K 256 K 0-128 K 512 K 0-512 K CC 52# Sortie Les signaux de sortie de sélection de puce de cache de groupe supérieur indiquent quel groupe de données de cache est sélectionné pour l'opération cache courante La dimension de cache secondaire sélectionnée définit la plage d'adresses dans laquelle ces signaux sont pilotés à l'état actif. Dimension du cache Plage d'adresses pour LCCS# actif 64 K 32 K-64 K 128 K non actif 256 K 128 K-256 K 512 K non actif CWEl 3:0 l Sortie Les signaux de sortie de validation d'écriture de cache procurent une capacité d'écriture importante d'octets dans le cache secondaire pendant des remplissages de ligne cache ou des interventions d'écriture cache. COE# Sortie Le signal de sortie de validation de sortie de cache est utilisé pour réaliser les cycles de lecture à partir des SRAM de données de cache Ce signal est connecté aux broches de validation de sortie des SRAM de données de cache. CALE Sortie Le signal de sortie de validation de verrouillage d'adresse de cache assure le cadencement de commande approprié pour les dispositifs de verrouillage qui créent le bus d'adresse de cache CAl 18:4 l à partir du bus d'adresse de CPU hôte Al 18:4 l. TWE# Sortie Le signal de validation d'écriture d'étiquette est connecté à la broche de validation d'écriture de SRAM d'étiquette (WE#) TWE# est actif pendant des cycles de manque de lecture de CPU lorsque le cache est mis à jour. TOE# Sortie Le signal de validation de sortie d'étiquette commande la broche de validation de sortie des SRAM d'étiquette Lorsqu'il est actif, l'adresse d'étiquette et les bits valides sont pilotés dans le CDC Ce signal est normalement actif et il est piloté dans l'état inactif seulement pendant une mise à jour d'étiquette. VALID Entrée/ Le signal valide indique la validité des Sortie données dans les SRAM de données de cache sur une base ligne par ligne VALID est utilisé ensemble avec l'adresse d'étiquette pour rendre la décision intervention/manquement de cache par le CDC S'il est échantillonné à un niveau bas pendant un cycle de lecture de mémoire CPU, les données ne sont pas valides dans le cache Pendant un cycle d'invalidation, le signal VALID est forcé à un niveau bas, ce qui indique que les données ne sont pas valides. Lorsque VALID est échantillonné à O pendant le front croissant du signal PWROK, alors le CDC entre dans le mode test défini par les lignes TAl 7:4 l Lorsque VALID est échantillonné à un niveau haut pendant le front croissant du signal PWROK, le CDC entre dans le mode fonctionnement normal. DIRTYD Sortie Le signal de sortie d'entrée de modification indique si oui ou non les données contenues dans le cache secondaire sont repérées comme étant modifiées Ce signal est connecté à l'entrée de donnée de la SRAM modifiée. HITM# Sortie Le signal de sortie de modification indique /DIRTYQ si oui ou non les données contenues dans le cache secondaire sont repérées comme étant modifiées Ce signal est connecté à la sortie de donnée de la SRAM modifiée. INV Sortie Le signal de sortie de validation d'écriture /DWE# de bit modifié devient actif lorsque la CPU réalise un cycle WRITE (écriture) dans le cache d'écriture différée secondaire Ce signal est connecté à l'entrée WE# de la SRAM modifiée. Les signaux d'adresse d'étiquette sont directement connectés au bus de données de SRAM d'étiquette La table qui suit définit la relation qui lie une adresse d'étiquette et une adresse de CPU en fonction de la dimension du cache secondaire Ce mappage est réalisé par le CDC sur la base de la configuration dimensionnelle du cache. * Dimension du cache TAl 7:0 l correspond à 64 K-octets Al 23:16 l 128 K-octets Al 24:17 l 256 K-octets Al 25:18 l 512 K-octets Al 26:19 l Ces broches sont également utilisées en tant qu'entrées pour définir des options de branchement et des modes test du CDC Les niveaux de signal TAl 7:4 l sont échantillonnés lors du front croissant du signal PWROK afin de définir le mode test. Se reporter à la section 5 "Testability Considerations" pour une description des modes test supportés par le CDC De façon similaire, les niveaux de signal TAl 2:0 l sont échantillonnés lors du front croissant du signal PWROK pour définir les options de branchement décrites ci-après: Siagnal Options de branchement TAl 1:0 l Vitesse du CPU hôte, bits du TA 2 registre HCSl 1:0 l. Etat d'attente de lecture/ /écriture de cache, bit SCC l 2 TAl 7:0 l Entrée/ Sortie Interface de commande de DRAM Nom de Type Description broche/ Signal EMAO, Sortie Le bus d'adresse de DRAM multiplexé OMAO, Sortie produit l'information d'adresse de rangée de MAl 10:1 l Sortie colonne pour les DRAM Un tamponnage externe est requis Deux signaux constituent les lignes d'adresse de DRAM multiplexées les moins significatives, une pour le mot pair (EMAO) et une pour le mot impair (OAMO). RASl 3:0 l# Sortie Chaque signal de sortie de synchronisation d'adresse de rangée correspond à une rangée de DRAM de huit octets Ces signaux sont utilisés pour verrouiller les adresses de rangée sur EMAO, OMAO et sur le bus MAl 10:1 l dans les DRAM Ces signaux pilotent les DRAM directement sans de quelconques tampons externes. CASl 7:0 l# Sortie Les signaux de sortie de synchronisation d'adresse de colonne sont utilisés pour verrouiller les adresses de colonne sur EMAO, OMAO et sur le bus MAl 10:1 l dans les DRAM CASl 7:0 l# correspond aux lignes d'octet 7:0 du réseau de DRAM entrelacées bidirectionnelles présentant une largeur de huit octets Ces signaux pilotent les DRAM directement sans de quelconques tampons externes. WE#/ Sortie Le signal de sortie de validation d'écriture MR/W# est tamponné de façon externe afin de piloter les entrées de validation d'écriture (WE#) des DRAM. La remise à l'état initial du bus PCI force les interfaces PCI de chaque dispositif dans un état connu La totalité des trois états de CDC de ses signaux PCI bidirectionnels et à collecteur ouvert pilotent les signaux REQ# et MEMACK# dans leurs états inactifs. PCIRST est piloté pendant une mise en route et lorsqu'une séquence de remise à l'état initial par action électrique est initialisée par l'intermédiaire du registre TRC. Signaux d'adresse PCI Lorsque le CDC joue le rôle de maître sur le bus PCI, les signaux ADl 31:0 l sont dans le mode sortie, pendant la première période d'horloge PCI d'un cycle de bus local ADl 31:0 l contiennent une adresse physique Pendant des horloges suivantes, les lignes ADl 31:0 l sont mises à l'état flottant par le CDC Lorsque le CDC joue le rôle de cible sur le bus PCI, les signaux ADl 31:0 l contiennent l'adresse pendant la première horloge et pendant des horloges suivantes de données mais la voie de données pour les cycles initialisés PCI jusqu'au CDC ne traverse pas le CDC ADl 31:0 l SortieEntrée/ Sortie C/BEl 3:0 l # Entrée/ Sortie Signaux de commande de bus et de validation d'octet qui sont multiplexés sur les mêmes broches Pendant la phase d'adresse d'une transaction, C/BEl 3:0 l# définit la commande de bus pendant la phase, des signaux C/BEl 3:0 l# sont utilisés en tant que validations d'octet Les validations d'octet déterminent quelles voies d'octet sont porteuses de données empreintes de sens Un codage de commande de bus local PCI et des types de commandes sont listés ci-après. C/BEl 3:0 l# Type de commande Interruption accusé de réception Cycle spécial Lecture I/O Ecriture I/O Réservé Réservé Lecture mémoire Ecriture mémoire Réservé Réservé Configuration Ecriture configuration Réservé Ecriture et invalidation mémoire Lecture mémoire longue Ecriture mémoire enrecgistrable FRAME# Entrée Séquence de cycle est une sortie lorsque le Sortie CDC joue le rôle de maître sur le bus PCI. FRAME# est piloté par le CDC afin d'indiquer le début et la durée d'un accès. FRAME# est appliqué pour indiquer qu'une transaction de bus commence Tandis que FRAME# est appliqué, les transferts de données se poursuivent Lorsque FRAME# n'est plus appliqué, la transaction est dans la phase de données finale FRAME# est une entrée lorsque le CDC joue le rôle d'esclave PCI Lorsque le CDC joue le rôle de cible sur le bus PCI, il verrouille les signaux C/BEl 3:0 l et ADl 31:0 l sur le front d'horloge sur lequel il échantillonne FRAME# à l'état actif. TRDY# Entrée/ Prêt cible est une entrée lorsque CDC joue Sortie le rôle de maître sur le bus PCI. L'application de TRDY# indique la capacité d'action de cible pour terminer la phase de données courante de la transaction Pour des cycles de lecture, TRDY# indique que la cible a piloté des données de lecture valides sur le bus local PCI Pour un cycle d'écriture, TRDY# indique que la cible est préparée à accepter des données d'écriture en provenance du bus PCI TRDY# est une sortie lorsque le CDC joue le rôle d'esclave PCI. IRDY# Entrée/ Initiateur prêt est une sortie lorsque CDC Sortie joue le rôle de MAITRE PCI L'application de IRDY# indique la capacité de maître du bus PCI courant à terminer la phase de données courante de la transaction Pour des cycles de lecture, IRDY# indique que le maître PCI est préparé à accepter les données de lecture sur le front croissant suivant de l'horloge PCI Pour un cycle d'écriture, IRDY# indique que le maître a piloté des données d'écriture valides sur le bus PCI. IRDY# est une entrée lorsque le CDC joue le rôle d'esclave PCI. LOCK# Entrée/ Verrouillage indique une opération de bus Sortie exclusive et peut nécessiter de multiples transactions pour se terminer Lorsque LOCK# est appliqué, des transitions non exclusives peuvent se dérouler. L'autorisation de démarrer une transaction sur le bus local PCI ne garantit pas la commande du signal LOCK# La commande de LOCK# est obtenue sous son propre protocole en conjonction avec le signal GNT# Il est possible que différents agents utilisent le bus local PCI tandis qu'un unique maître reste propriétaire du signal LOCK#. STOP# Entrée/ Arrêt indique que le maître bus courant doit Sortie immédiatement terminer son cycle de bus local courant lors du front d'horloge suivant et doit libérer la commande du bus local. Arrêt# est utilisé pour des séquences de déconnexion, de re-tentative et d'arrêt prématuré sur le bus PCI. REQ# Sortie Requête indique que le bus local PCI arbitre le fait que le CDC souhaite utiliser le bus PCI. GNT# Entrée Autorisation indique qu'un accès au bus local PCI a été autorisé au CDC. PAR Entrée/ Parité est piloté par le CDC lorsqu'il joue le Sortie rôle de maître PCI pendant des phases d'adresse et de données pour des cycles d'écriture et pendant la phase d'adresse pour un cycle de lecture Lorsque le CDC joue le rôle d'esclave PCI, une parité est pilotée par le CDC pour la phase de données pour un cycle de lecture PCI La parité est une parité paire sur ASl 31:0 l et C/BEl 3:0 l. Le CDC n'effectue pas un quelconque contrôle de parité. SERR# Collec- teur ouvert broche de sortie Signal d'erreur système, lorsque piloté par le CDC, indique que soit des erreurs de parité sur une DRAM ou sur un cache se sont produites ou qu'un CDC a reçu une interruption prématurée cible Le CDC reçoit l'indication d'erreur de parité en provenance de la DPU (DPUPE#), la qualifie avec le type de cycle et s'il y a une erreur de parité, elle est signalée par l'intermédiaire du signal SERR# SERR# est également pulsé si le CDC reçoit une interruption prématurée cible sur un cycle PCI initialisé par le CDC. DEVSEL# Entrée/ Sélection dispositif, lorsqu'actif, indique Sortie qu'un dispositif esclave PCI a décodé son adresse en tant que cible de l'accès courant. Le CDC pilote DEVSEL# sur la base de la plage d'adresse de DRAM qui est accédée par un maître PCI En tant qu'entrée, il indique si oui ou non un quelconque dispositif sur le bus a été sélectionné. FLSHREQ Entrée Le signal requête de justification donne instruction au CDC de justifier ses tampons d'écriture enregistrés CPU à PCI et d'invalider tout autre enregistrement dans ces tampons tant que le signal FLSHREQ# reste actif Le CDC donne accusé réception de la fin de l'opération de justification de tampon d'écriture en appliquant le signal MEMACK# Ce signal est piloté par le pont de bus d'expansion et il est utilisé pour éviter des conditions d'interblocage sur le bus PCI. MEMREQ# Entrée Le signal requête mémoire donne instruction au CDC de justifier son hôte vis-à-vis de la DRAM et son hôte vis-à-vis des tampons d'écriture enregistrés PCI et de maintenir la CPU hôte sous un blocage d'adresse (AHOLD) tant que le signal MEMREQ# reste actif Le CDC donne accusé réception de la fin des opérations de justification en appliquant le signal MEMACK# Ce signal est piloté par le pont de bus expansion et il est utilisé pour produire une latence d'accès minimum pendant des cycles maîtres ISA de DRAM. MEMACK# Sortie Le signal accusé de réception mémoire indique la fin des opérations dont il a été donné requête par des signaux FLSHREQ# et/ou MEMREQ# actifs. Interface de commande de DPU Nom de Type Description broche/ Signal DPUPE# Entrée Le signal d'erreur de parité de DPU indique qu'une erreur de parité de données de DRAM ou cache s'est produite pendant une opération de lecture de données DPUPE# est actif pendant une période d'une horloge depuis le front d'horloge au niveau duquel des données de lecture sont échantillonnées par le maître CPU ou PCI Une erreur de parité sur l'un quelconque des quatre octets est indiquée en tant que DPUPE# actif. Le signal de parité de données PCI est une entrée sur le CDC Pendant des cycles de lecture PCI depuis la mémoire ou pendant une écriture CPU sur le PCI, la DPU génère une parité paire pour les données PCI avant cette information sur le CDC par l'intermédiaire de la broche PCIDP Le CDC combine cette information de parité de données à l'information de parité BEl 3:l# et génère la parité PCI, soit le signal PAR. Le signal bus hôte sur mémoire/PCI est le signal de sélection de source/distension de données pour l'interface hôte du DPU. HM/P#, lorsqu'il est à un niveau bas, indique que des données doivent être lues ou écrites sur le bus PCI Lorsque ce signal est à un niveau haut, les données sont lues ou écrites dans la mémoire Ce signal, avec les signaux HSTB# et HW/R#, commande le verrouillage de données dans les tampons d'enregistrement hôte et la sélection de données depuis la mémoire ou depuis les tampons de lecture PCI. HM/P# Entrée Sortie HW/R# Sortie Le signal écriture/lecture bus hôte est utilisé pour effectuer un distinguo entre des cycles de lecture et d'écriture de CPU hôte HW/R#, lorsqu'il est à un niveau bas, indique un cycle de lecture pour la CPU hôte Lorsque ce signal est à un niveau haut, il indique un cycle d'écriture pour la CPU hôte Ce signal ainsi que les signaux HM/P# et HSTB# commandent le verrouillage des données dans les tampons d'enregistrement hôte et la sélection des données dans les tampons de lecture PCI mémoire. HSTB# Sortie Le signal d'échantillonnage de données de bus hôte est utilisé pour commander le verrouillage des données dans les tampons d'enregistrement hôte pendant des cycles d'écriture et pour sélectionner des données dans la mémoire ou dans les tampons de lecture PCI pendant des cycles de lecture. Lorsque ce signal est appliqué pendant un cycle d'écriture, le verrouillage de tampon d'enregistrement approprié est validé sur le front croissant de CLK 1 s'il est sélectionné par HM/P#. Pendant un cycle de lecture, HSTB# est appliqué lors du front croissant de CLK 1 pour sélectionner l'une de deux bascules de lecture. PM/H# Sortie Bus PCI pour signal mémoire/hôte est la source/destination sélectionnée pour l'interface PCI de la CPU PM/H#, lorsqu'il est à un niveau bas, indique que les données doivent être lues ou écrites par le bus hôte. Lorsque ce signal est à un niveau haut, les données sont lues ou écrites dans la mémoire Ce signal ainsi que les signaux PSTB# et PW/R# commandent le verrouillage des données dans les tampons d'enregistrement PCI et la sélection des données dans les tampons de lecture mémoire ou tampons d'enregistrement hôtes. PW/R# Sortie Signal d'écriture/lecture bus PCI est utilisé pour effectuer un distinguo entre les cycles d'écriture et de lecture PCI. PW/R#, lorsqu'il est à un niveau bas, indique un cycle de lecture PCI Lorsque ce signal est à un niveau haut, il indique un cycle d'écriture PCI Ce signal ainsi que des figures PM/H# et PSTB# commandent le verrouillage des données dans les tampons d'enregistrement PCI et la sélection de données dans les tampons de lecture mémoire ou les tampons d'enregistrement hôtes. PSTB# 1 Sortie MH/P# Sortie Le signal échantillonnage de données bus PCI est utilisé pour commander le verrouillage des données dans les tampons d'enregistrement PCI pendant les cycles d'écriture et pour sélectionner des données dans les tampons de lecture mémoire ou dans les tampons d'enregistrement hôtes pendant des cycles de lecture Lorsque ce signal est actif pendant un cycle d'écriture, le verrouillage des tampons d'enregistrement appropriés est validé sur le front d'horloge croissant Pendant un cycle de lecture, PSTB# dans l'état actif provoque la sélection de données de lecture appropriées sur le front d'horloge croissant. Lorsque PSTB# est désactivé, aucune modification n'est effectuée quant à la commande de verrouillage ou quant aux données de lecture sélectionnées. Bus mémoire pour signal hôte/PCI est la source/destination de d onnéôe s sélectionnées pour un interface mémoire de la DPU MH/P#, lorsqu'il est à un niveau bas, indique que des données doivent être lues ou écrites par le bus PCI Lorsque ce signal est à un niveau haut, les données sont lues ou écrites par le bus hôte Pendant des cycles de lecture mémoire, ce signal ainsi que le signal MSTB# commandent le verrouillage des données dans le tampon de lecture de mémoire Pendant des cycles d'écriture mémoire, les signaux MH/P#, MR/W# et MSTB# sélectionnent soit les tampons de CPU hôtes soit les tampons d'enregistrement PCI. WE#/ Sortie Le signal lecture/écriture bus mémoire est MR/W# utilisé pour effectuer un distinguo entre des cycles de lecture et d'écriture MR/W#, lorsqu'il est à un niveau bas, indique un cycle d'écriture mémoire Lorsque ce signal est à un niveau haut, il indique un cycle de lecture mémoire Ce signal ainsi que le signal MSTB# commandent le verrouillage des données dans les tampons de lecture mémoire et la sélection des données dans les tampons hôtes ou d'enregistrement PCI. MSTB# Sortie Le signal échantillonnage de données bus mémoire est utilisé pour commander le verrouillage de données dans les tampons de lecture mémoire pendant des cycles de lecture et pour sélectionner des données dans les tampons hôtes ou tampons d'enregistrement PCI pendant des cycles d'écriture Lorsque ce signal est actif pendant un cycle de lecture mémoire, le verrouillage du tampon de lecture approprié est validé Pendant un cycle d'écriture mémoire, les données du tampon d'enregistrement approprié sont sélectionnées telles que déterminées par le signal MH/P# et sont pilotées sur le bus MD. Lorsque MSTB# est désactivé, aucune modification n'est effectuée quant à la commande de tampon de lecture ou quant à la sélection de données de tampon d'enregistrement. Signaux de remise à l'état initial et d'horloge Nom de Type Description broche/ Signal PWROK Entrée L'entrée de l'alimentation force tous les registres internes et toutes les machines dans leur état défaillant Cette entrée est asynchrone mais elle doit répondre à des spécifications d'établissement et de maintien en vue d'une reconnaissance lors de n'importe quelle horloge de spécification SRESET# Entrée L'entrée remise à l'état initial par logiciel force toutes les machines internes de CDC dans leur état défaillant; cependant, les contenus des registres de configuration restent non modifiés Cette entrée est asynchrone mais elle doit répondre à des spécifications d'établissement et de maintien en vue d'une reconnaissance lors d'une quelconque horloge spécifique. CLK 2 Entrée L'entrée d'horloge 2 X est divisée de façon interne par deux afin de générer des horloges de dispositif CPU, DPU et PCI et elle est produite à partir de six signaux de sortie d'horloge (CLK 1 A-CLK 1 F) Un signal d'horloge de niveau CMOS qui fonctionne à deux fois la vitesse de fonctionnement du CDC doit être produit sur ce signal. CLK 1 Entrée L'entrée d'horloge 1 X produit le cadencement fondamental et la fréquence de fonctionnement interne pour le CDC Ce signal est typiquement connecté en tant que retour depuis l'une des six broches de sortie d'horloge du CDC (CLK 1 A-CLK 1 F) Le CDC fonctionne à des fréquences d'horloge de 25 ou 33 M Hz La plupart des paramètres de cadencement externes sont spécifiés par rapport au front croissant ou décroissant de CLK 1 Une dissymétrie maximum entre les horloges de CDC et de CPU vaut 1 ns. Une dissymétrie d'horloge maximum entre les agents CDC et PCI vaut 2 ns. CLK 1 A Sortie Ces six signaux de sortie d'horloge 1 X CLK 1 F constituent la référence d'horloge pour les dispositifs CPU, DPU et PCI du système Le CDC divise l'horloge produite sur CLK 2 par deux pour générer ces signaux Le signal d'entrée CLK 1 doit être connecté à l'un de ces signaux, de préférence à celui utilisé pour l'horloge CPU. REVENDICATIONS 1 Système d'ordinateur caractérisé en ce comprend: a) une unité de processeur comportant un cach E premier niveau interne; b) une mémoire vive système ( 206) c) un ou plusieurs dispositifs d'entrée de données d) un ou plusieurs dispositifs de sortie de données e) un moyen de génération d'horloge système ( 202) f) un cache de second niveau ( 207) comprenant: un ou plusieurs groupes de mémoires ca qu'il e de ches asynchrones; un contrôleur de cache ( 202) comprenant des moyens de commande indépendants pour ledit ou pour chacun desdits groupes de mémoires caches asynchrones; et un moyen pour produire des signaux de commande sur ledit ou sur chacun desdits groupes de mémoires caches asynchrones de telle sorte qu'ils soit corrélés audit signal d'horloge système. 2 Système d'ordinateur selon la revendication 1, caractérisé en ce que ledit contrôleur de cache ( 202) est en outre constitué par un moyen pour prédire une adresse de lecture suivante à partir d'une première adresse de lecture produite. 3 Système de cache caractérisé en ce qu'il comprend a) un ou plusieurs groupes de moyens de mémoire cache non entrelacés ( 202); b) un moyen de génération d'horloge système pour générer un signal d'horloge système; c) un moyen (LCA) pour corréler des signaux de commande audit ou auxdits groupes de moyens de mémoire cache avec ledit signal d'horloge système; et d) un moyen (BRDY) pour produire des données de salve depuis ledit ou lesdits groupes de moyens de mémoire cache non entrelacés. 4 Système de cache selon la revendication 3, caractérisé en ce que ledit ou lesdits groupes de moyens de mémoire cache non entrelacés sont constitués par des dispositifs de mémoire vive dynamique statique asynchrone. Système de cache selon la revendication 4, caractérisé en ce que ledit moyen de génération d'horloge système est constitué en outre par un moyen permettant de générer un signal d'horloge 1 X à partir d'un signal d'horloge 2 X. 6 Système de cache selon la revendication 5, caractérisé en ce que ledit moyen permettant de corréler des signaux de commande audit ou auxdits groupes de moyens de mémoire cache avec ledit signal d'horloge système est constitué par: un premier signal de commande présentant un retard intrinsèque supérieur à celui d'un second signal de commande; et un moyen ( 505) de retard pour retarder ledit premier signal de commande de telle sorte que le retard dudit premier signal de commande soit égal au retard dudit second signal de commande. 7 Système de cache selon la revendication 6, caractérisé en ce que ledit moyen de retard est en outre constitué par un nombre pair d'inverseurs insérés dans la voie de circuit dudit premier signal de commande. 8 Système de cache selon la revendication 5, caractérisé en ce que ledit moyen pour produire les données de salve à partir dudit ou desdits groupes de moyens de mémoire cache non entrelacés est constitué par: a) un moyen pour prédire des adresses suivantes à partir d'une première adresse produite; et b) un moyen pour produire des données à partir desdites adresses suivantes prédites lors de cycles de signal d'horloge système consécutifs. 9 Système de cache selon la revendication 8, caractérisé en ce que ledit moyen pour prédire des adresses suivantes à partir d'une première adresse produite est en outre constitué par: a) un moyen pour extraire une pluralité de bits à partir de ladite première adresse produite; et b) un moyen pour identifier une séquence prédéterminée d'adresses associée au contenu de ladite pluralité de bits extraits. 10 Procédé de production de signaux de commande de cache dans un sous-système de cache, caractérisé en ce qu'il comprend les étapes de: a) génération d'un signal d'horloge IX à partir d'un signal d'horloge 2 X; b) production dudit signal d'horloge 1 X en tant qu'horloge système; c) production de signaux de commande de processeur sur la base dudit signal d'horloge 1 X; d) production dudit signal d'horloge 2 X sur un contrôleur cache; et e) production de signaux de commande depuis ledit contrôleur de cache de telle sorte qu'il y ait un retard de zéro par rapport à ladite horloge système et par rapport auxdits signaux de commande de processeur. Il Procédé de production de signaux de commande de cache selon la revendication 10, caractérisé en ce que ladite étape de production de signaux de commande à partir dudit contrôleur de cache de telle sorte qu'il y ait un retard à zéro par rapport à ladite horloge système et par rapport auxdits signaux de commande de processeur est en outre constituée par les étapes de: a) identification d'un premier signal de commande qui présente un retard intrinsèque supérieur à celui d'un second signal de commande; b) retardement de la production dudit premier signal de commande de telle sorte qu'il présente un retard égal à celui dudit second signal de commande; et c) production dudit premier signal de commande et dudit second signal de commande sur la base dudit signal d'horloge 2 X. 12 Procédé selon la revendication 10, caractérisé en ce qu'il comprend en outre les étapes de: a) identification d'une requête de lecture de salve b) identification d'une pluralité d'adresses suivantes à partir d'une première adresse produite; et c) production de signaux de commande pour lire des données depuis ladite première adresse produite et depuis ladite pluralité d'adresses suivantes. 13 Contrôleur cache caractérisé en ce qu'il comprend a) un moyen de réception pour recevoir un signal d'horloge 2 X; b) un moyen pour générer un signal d'horloge 1 X à partir dudit signal d'horloge 2 X et pour produire ledit signal d'horloge 1 X en tant que signal d'horloge système; et c) un moyen pour produire des signaux de contrôleur cache présentant un retard à zéro par rapport audit signal d'horloge système produit. 14 Contrôleur cache selon la revendication 13, caractérisé en ce que ledit moyen pour produire des signaux de contrôleur de cache présentant un retard à zéro par rapport audit signal d'horloge système produit est en outre constitué par un moyen de retard inséré dans la voie de circuit de signaux de commande de cache présentant des retards plus courts que la voie de circuit d'autres signaux de commande de cache. 15 Contrôleur cache selon la revendication 14, caractérisé en ce que ledit moyen de retard est constitué par un nombre pair d'inverseurs. 16 Contrôleur cache selon la revendication 13, caractérisé en outre en ce qu'il est constitué par un moyen permettant de produire une pluralité de données en réponse à une requête de lecture de salve, constitué par: a) un moyen pour identifier une requête de lecture de salve; b) un moyen pour prédire une pluralité d'adresses suivantes à partir d'une première adresse produite; et c) un moyen pour produire ladite adresse suivante lors de cycles d'horloge système consécutifs. 17 Contrôleur cache selon la revendication 16, caractérisé en ce que ledit moyen pour prédire une pluralité d'adresses suivantes à partir d'une première adresse produite est en outre constitué par: a) un moyen pour extraire une pluralité de bits à partir de ladite première adresse produite; et b) un moyen pour identifier une séquence prédéterminée d'adresses associée au contenu de ladite pluralité de bits extraits.