<Desc/Clms Page number 1>
EMI1.1
J.
APPAREIL ET METHODE POUR ACCEDER
A DES DONNEES EMMAGASINEES DANS
UNE MEMOIRE DE PAGES
La présente invention concerne de manière générale les mémoires utilisées dans les systèmes de calcul et plus particulièrement l'accès à des données emmagasinées dans des mémoires de pages utilisées dans de tels systèmes.
Les demandes concernant les systèmes de calcul et relatives à l'assurance de vitesses de fonctionnement encore plus élevées, de puissance de traitement effectives encore améliorées et de performances générales encore meilleures, continuent d'affluer. Une tendance a été d'augmenter la fréquence d'horloge de l'unité centrale de traitement (CPU) du calculateur. Ceci a naturellement entraîné le traitement d'un plus grand nombre d'instructions par unité de temps. Cependant, à mesure que la fréquence d'horloge est augmentée, le temps d'accès associé à la mémoire doit être quelque peu raccourci de manière correspondante si l'on veut tirer tout le bénéfice de l'augmentation de la fréquence d'horloge.
Autrement le temps d'accès associé à la lecture de données hors de la mémoire devient un facteur important de limitation des performances effectives de l'unité CPU.
Une approche pour diminuer le temps d'accès effectif requis pour lire des données dans une mémoire est d'utiliser une mémoire de pages. C'est à dire que la mémoire est divisée en une pluralité de pages, chaque page consistant en une rangée ayant une adresse de rangée commune pour toute la rangée. Chaque rangée d'une page comprend une pluralité de colonnes ayant des adresses de colonne correspondantes. Pour accéder à un bloc particulier de données emmagasinées dans une telle mémoire de pages,
<Desc/Clms Page number 2>
l'adresse de rangée de ces données est délivrée à la mémoire pour permettre la sélection de la page dans la mémoire où les données sont emmagasinées. Puis, l'adresse de colonne associée aux données est délivrée à la mémoire pour permettre la sélection du bloc particulier de données dans la rangée ou page adressée.
En général, les données adressées sont alors lues en sortie du bus de données.
On trouve un exemple d'une mémoire de pages dans le calculateur"IBM Personal System/2", modèle 80. ("Personal System/2 est une marque déposée par"International Business Machines Corporation"). Une représentation schématique simplifiée et générale d'un tel système de calcul à mémoire de pages est donnée à la figure 1 sous la forme du système 10. Le système 10 comprend une unité centrale de traitement (CPU) 20 ou microprocesseur à laquelle sont connectés un bus d'adresses 30 et un bus de données 40. Le système 10 comprend en outre une unité de commande de mémoire 50 à laquelle le bus d'adresses 30 et le bus de données 40 sont connectés. Un bus de commande 60 est connecté entre l'unité CPU 20 et l'unité de commande de mémoire 50 de façon que des signaux de commande puissent être passés entre ces dernières.
L'unité de commande de mémoire 50 est connectée à au moins un module de mémoire 70 qui est composé de la mémoire à accès aléatoire (RAM). Dans le présent exemple, le module de mémoire 70 est divisé en pages qui ont une longueur de 2K multiplets (512 x 32 plus la parité), chaque page par définition ayant la même adresse de rangée. Chaque page comprend ainsi 2K adresses de colonne. Un bus de données 80 est connecté entre l'unité de commande de mémoire 50 et le module de mémoire 70 pour permettre le transfert de données entre ces derniers.
Un bus d'adresses MUX multiplex 90 est connecté entre l'unité de commande de mémoire 50 et le module de mémoire
<Desc/Clms Page number 3>
70 de façon que les informations d'adresses de colonne et de rangée puissent être passées de l'unité de commande de mémoire 50 au module de mémoire 70. Le bus d'adresses multiplex 90 a moins de lignes que le bus d'adresses 30 en raison de la nature multiplexée du bus 90 sur lequel une adresse de rangée ou de page est tout d'abord délivrée au module de mémoire 90 pendant un cycle d'accès de mémoire et ensuite, en second lieu, une adresse de colonne est délivrée ultérieurement au module de mémoire 90 au cours de ce cycle.
L'unité de commande de mémoire 50 délivre des signaux de découpage d'adresse de rangée (RAS) et des signaux de découpage d'adresse de colonne (CAS) au module de mémoire 70 comme on le voit à la figure 1. La nature des signaux RAS et CAS est décrite dans la discussion suivante du schéma de chronologie de la figure 2.
La figure 2 est un schéma chronologique d'un cycle de mémoire courant associé au système de calcul 10. Dans cet exemple, on suppose que l'unité CPU 20 désire accéder à ou récupérer un premier bloc de données dans la mémoire 70 à une adresse de données prédéterminée dans ladite mémoire.
Pour accéder réellement à ces informations, l'unité CPU 20 envoie l'adresse de données à l'unité de commande de mémoire 50. L'unité de commande de mémoire 50 divise effectivement l'adresse de données en deux parties, à savoir l'adresse de rangée (aussi appelée"adresse de page") et l'adresse de colonne. L'adresse de rangée et l'adresse de colonne sont multiplexées sur le bus MUX ADDRESS 90. C'est à dire que l'adresse de rangée est tout d'abord délivrée à ce bus MUX ADDRESS en 100. Le signal RAS est initialement au niveau HAUT ou COUPE ("HIGH"ou"OFF").
On notera qu'étant donné qu'une logique négative est utilisée dans le schéma chronologique de la figure 2, HIGH correspond à un état OFF et LOW (niveau bas) correspond à un état ON (conditionné). Le signal RAS est conditionné en 105 pour sélectionner la partie d'adresse de rangée
<Desc/Clms Page number 4>
actuellement délivrée au bus MUX ADDRESS 90. De cette manière, le module de mémoire 70 sélectionne la page (rangée) particulière dans laquelle les données adressées sont emmagasinées. Le signal RAS reste conditionné pendant la durée du premier cycle de mémoire et le second cycle de mémoire suivant.
Après le conditionnement du signal RAS et la sélection de l'adresse de rangée au premier cycle de mémoire, la partie d'adresse de colonne des données désirées, est délivrée au bus MUX ADDRESS en 110. Le signal CAS est alors conditionné en 115 pour sélectionner la partie d'adresse de colonne actuellement appliquée au bus MUX ADDRESS 90. A ce moment, l'adresse est complète étant donné que les parties d'adresses de rangée et de colonne correspondant aux données désirées, ont été délivrées au module de mémoire 70. Le module de mémoire 70 accède alors aux données ainsi adressées et délivre ces données au bus de données de mémoire 80. Les données sur le bus de données de mémoire 80 deviennent valides en 120 après l'écoulement d'un temps de retard prédéterminé TD qui commence à l'achèvement et à la sélection de l'adresse en 115.
Le microprocesseur 20 saisit alors les données adressées sur le bus de données 40 de la
EMI4.1
figure 1. L'homme de l'art utilise le terme T CAS pour \Ab définir le temps de retard entre l'instant où le signal CAS devient actif et l'instant où les données deviennent valides sur le bus de données de mémoire 80. Le terme TRAS se rapporte au temps de retard entre l'instant où le signal RAS devient actif et l'instant où les données deviennent
EMI4.2
valides. De manière plus courante, TRAS se rapporte au i\Ab "temps d'accès"présenté par un dispositif de mémoire particulier. Par exemple, un dispositif de mémoire avec un
EMI4.3
temps d'accès de 80 nanosecondes présente un TRAS de 80 i\Ab nanosecondes.
<Desc/Clms Page number 5>
Pour cet exemple, on suppose qu'un second bloc de données situé sur la même page ou rangée que le premier bloc de données indiqué ci dessus, est à accéder depuis le module de mémoire 70. L'homme de l'art utilise le terme "enchaînement"pour décrire l'action de changement d'adresse, par exemple la partie d'adresse de colonne, avant la fin du cycle de mémoire courant en préparation pour le cycle de mémoire suivant. L'enchaînement lui même économise du temps étant donné qu'il permet au circuit de décodage d'adresse dans l'unité de commande de mémoire 50 de commencer le traitement de l'adresse plus tôt que dans les autres cas.
Un exemple d'un tel enchaînement est représenté à la figure 2 où après la validation des données en 120 et avant la fin du premier cycle de mémoire en 125, l'adresse de colonne est changée en une nouvelle adresse de colonne en 130, cette adresse de colonne correspondant au second bloc de données. Etant donné que le second bloc de données à accéder au second cycle de mémoire, est sur la même page que les données accédées au premier cycle de mémoire, la partie d'adresse de colonne changes en 130 tandis que la partie d'adresse de rangée reste la même.
Cette situation est appelée une situation de"page touchée". Etant donné qu'il n'est pas nécessaire de renvoyer la partie d'adresse de rangée au module de mémoire 70 dans le cas d'une"page touchée", un temps intéressant peut être économisé dans un agencement à mémoire de pages.
Avant que le module de mémoire 70 puisse sélectionner et réellement utiliser les informations d'adresse de colonne maintenant présentes sur le bus MUX ADRESS 90, il est nécessaire de déconditionner le signal CAS pendant une période de temps prédéterminée que l'on appellera "précharge CAS 135". L'homme de l'art appelle le temps de précharge CAS "TCRP". Pour un dispositif de mémoire avec un temps d'accès de 80 nanosecondes, une valeur courante de
EMI5.1
TCRP serait de 15 nanosecondes. Une fois que la décharge (KJf
<Desc/Clms Page number 6>
CAS est achevée, le signal CAS est à nouveau conditionné en 140 de façon que la partie d'adresse de colonne du second bloc de données soit sélectionnée par le module de mémoire 70.
L'adresse du second bloc de données est ainsi complétée et les données sur le bus d'adresse de mémoire 80 deviennent valides en 145 après l'écoulement d'un retard prédéterminé TD depuis l'achèvement et la sélection de l'adresse en 140. Le microprocesseur 20 saisit alors les données adressées depuis le bus de données 40 de la figure 1. Le second cycle de mémoire se termine en 150.
Dans le cas de cet exemple, on suppose qu'un troisième bloc de données situé sur une page ou rangée différente de celle des premier et second blocs de données, est accédé au cours d'un troisième cycle de mémoire commençant en 150, une partie de ce troisième cycle de mémoire étant représenté à la figure 2. Cette situation est appelée une "page manquée". C'est à dire qu'une partie de la nouvelle adresse de rangée correspondant à l'emplacement du troisième bloc de données, doit être fournie au module de mémoire 70. Cette partie de la nouvelle adresse de rangée apparaît sur le bus MUX ADDRESS par enchaînement en 155. Au début 150 du troisième cycle de mémoire, le signal RAS est déconditionné en préparation de la nouvelle adresse de rangée. La nouvelle adresse de rangée est en fait sélectionnée lorsque le signal RAS est conditionné en 160.
Le reste du troisième cycle de mémoire est pratiquement similaire au premier cycle de mémoire de la figure 2, la précharge CAS étant assurée en 165 près du début du troisième cycle de mémoire.
D'après la discussion ci dessus, on voit que dans le cas où une "page touchée" apparaît dans une mémoire de pages, un temps d'une durée substantielle est pris (se reporter au second cycle de mémoire de la figure 2) par la conduite de
<Desc/Clms Page number 7>
la précharge CAS avant que la partie de la nouvelle adresse de colonne puisse être utilisée pour compléter la nouvelle adresse et sélectionner les données correspondantes.
Comme indiqué ci dessus, des systèmes de calcul sont conçus avec des vitesses d'horloge de plus en plus élevées.
Etant donné qu'un cycle de mémoire est composé d'un nombre prédéterminé d'impulsions d'horloge qui deviennent de plus en plus courtes à mesure que la vitesse d'horloge augmente, le temps requis pour ces activités de conditionnement de mémoire comme la précharge CAS, tend à occuper une proportion toujours croissante du cycle d'accès de mémoire à mesure que la vitesse d'horloge augmente. Un mode d'utilisation d'un microprocesseur qui fonctionne à une vitesse très rapide par rapport à la vitesse ou au temps d'accès de mémoire, consiste à ajouter des états d'attente au système de calcul afin de ralentir effectivement le microprocesseur pour attendre les données à accéder depuis la mémoire. Ce mode d'action est généralement à éviter car il annule certains des bénéfices tirés de l'augmentation de la vitesse d'horloge du microprocesseur.
Un objet de la présente invention est de fournir un système de calcul capable de fonctionner à des vitesses d'horloge élevées sans avoir recours à des états d'attente supplémentaires pendant l'accès à la mémoire.
Un autre objet de la présente invention est de diminuer le temps d'accès associé aux mémoires de pages.
Selon une réalisation de la présente invention, on obtient un système de calcul qui comprend une mémoire de
<Desc/Clms Page number 8>
pages ayant un bus d'adresses et un bus de données connectés à celle ci. Un processeur, par exemple un microprocesseur, est connecté au bus d'adresses et au bus de données. Le processeur traite des données dans le système et fournit à la mémoire un premier signal d'adresse pendant un premier cycle de mémoire, ce premier signal d'adresse correspondant à un emplacement dans la mémoire de données à accéder.
Le système comprend un premier circuit de commande connecté à la mémoire pour délivrer à la mémoire un signal de découpage d'adresse de rangée (RAS) pendant le premier cycle de mémoire et comprend en outre un second circuit de commande connecté à la mémoire pour délivrer un signal de découpage d'adresse de colonne (CAS) à la mémoire pendant le premier cycle de mémoire et ultérieurement au signal RAS. Un circuit de verrouillage est connecté entre la mémoire et le bus de données pour verrouiller les données ainsi adressées pour un transfert ultérieur sur le bus de données. Le système de calcul comprend un circuit de précharge CAS connecté à la mémoire pour soumettre la mémoire à une précharge CAS ultérieurement au verrouillage de la mémoire et avant la fin du premier cycle de mémoire.
La figure 1 est une représentation schématique simplifiée d'un système de calcul classique avec une mémoire de pages.
La figure 2 est un schéma chronologique associé à une mémoire de pages classique et courante.
La figure 3 est une représentation graphique simplifiée du système de calcul de la présente invention.
<Desc/Clms Page number 9>
La figure 4 est une représentation schématique du système de calcul de la présente invention.
La figure 5 est une représentation chronologique montrant la chronologie de la partie de mémoire du système de calcul de la figure 3 par comparaison avec la chronologie de la partie de mémoire du système classique de la figure 2.
La figure 6 est un organigramme montrant comment l'accès à la mémoire est mis en oeuvre dans le système de calcul de la présente invention.
La figure 7 est une représentation schématique du circuit de verrouillage bidirectionnel utilisé dans le système de calcul de la figure 4.
La figure 8 est une représentation schématique de la mémoire intermédiaire de données complète de la figure 7.
La figure 9 est une représentation de la répartition des entrées et sorties des données dans la mémoire intermédiaire de données de la figure 8.
DESCRIPTION DETAILLEE DE L'INVENTION
La figure 3 est une représentation simplifiée du système de calcul de la présente invention qui comprend un système de calcul 200 auquel une unité de contrôle 205, un dispositif d'entrée à clavier 210, un dispositif d'entrée à
<Desc/Clms Page number 10>
souris 215 et un dispositif de sortie à imprimante 220 sont connectés.
La figure 4 est une représentation schématique du système de calcul 200. Le système 200 comprend un processeur 225, par exemple un processeur à 32 bits comme le processeur Intel 80386. Un bus local de CPU 230 est formé par un bus d'adresses de 36 bits, un bus de données de 32 bits et un bus de commande de 10 bits qui sont connectés entre le processeur 225 et une mémoire intermédiaire 240 comme le montre la figure 4. Un coprocesseur mathématique 245 comme le coprocesseur Intel 80837 est connecté au bus local CPU 230 pour exécuter des opérations à virgule flottante pour améliorer le rendement du système.
Le système 200 comprend un bus local de système 250 connecté entre la mémoire intermédiaire 240 et la mémoire intermédiaire 253. Le bus local du système 250 comprend un bus de données, un bus d'adresses et un bus de commande comme le montre la figure 4. La mémoire intermédiaire 240 fait fonction de mémoire intermédiaire pour le bus d'adresses du bus local CPU 230 par rapport au bus d'adresses du bus local de système 250. La mémoire intermédiaire 240 fait aussi fonction de mémoire intermédiaire pour le bus de données et le bus de commande du bus local CPU 230 par rapport au bus de données et au bus de commande du bus local de système 250. Une antémémoire de données de CPU 255, par exemple une antémémoire de données comprenant 64K de mémoire, est connectée aux bus d'adresses et de données du bus local de CPU 230.
Une unité de commande d'antémémoire 260 comme l'unité de commande d'antémémoire Intel 82385, par exemple, est connectée aux bus d'adresses et de commande du bus local de CPU 230. L'unité de commande d'antémémoire 260
<Desc/Clms Page number 11>
commande l'emmagasinage et l'accès de données fréquemment utilisées qui sont emmagasinées dans l'antémémoire de données 255 afin d'accélérer effectivement le fonctionnement du système 200. L'unité de commande d'antémémoire 260 est aussi connectée au bus d'adresses du bus local de système 250.
Le système 200 comprend un circuit de commande et de chronologie de bus 265 connecté aux bus d'adresses, de données et de commande du bus local de système 250. Le bus local de système 250 est connecté par l'intermédiaire d'un ensemble bascule/mémoire intermédiaire/décodeur 267 à un bus d'entrée/sortie (E/S) 270 qui comprend un bus d'adresses de 10 bits, un bus de données de 8 bits et un bus de commande. L'ensemble mémoire intermédiaire/décodeur 267 assure la commande de la bascule d'adresses E/S et de la mémoire intermédiaire de données E/S. Le décodeur/mémoire intermédiaire 267 décode les signaux d'adresses et de commande du bus local de système et délivre des signaux"sélection élément semi-conducteur"et de commande E/S au bus E/S 270.
On notera que la"sélection élément semi-conducteur"se rapporte à la sélection du dispositif particulier connecté au bus E/S 270 sur lequel une opération est à effectuer. Le bus E/S 270 est connecté à un adaptateur d'affichage 275, une horloge CMOS 280, une mémoire RAM CMOS 285, un adaptateur RS232 290, un adaptateur d'imprimante 295, une unité de chronologie à 4 canaux 300 pour assurer des fonctions de chronologie générales. Le bus E/S 270 est en outre connecté à un adaptateur de disquette 305, une unité de commande d'interruption 310 et une mémoire inaltérable (ROM) qui contient le système d'entrée/sortie de base (BIOS) du système.
<Desc/Clms Page number 12>
Un bus à micro-canaux (TM) 320 comprenant des bus d'adresses, de données et de commande, est connecté au bus local de système par la mémoire intermédiaire 253.
L'architecture du bus à micro-canal est décrite plus en détails dans le manuel technique des IBM PS/2 Modèle 80.
Selon l'architecture à micro-canal, un point de commande d'arbitrage central (CACP) 325 est connecté au bus à micro-canaux 320 et au circuit de commande et de chronologie de bus 265 dans le but de gérer le mécanisme d'arbitrage des bus de dispositifs multiples à micro-canal.
La connexion de ce point d'arbitrage central 325 et du circuit de commande et de chronologie de bus 265 fait réellement partie du bus à micro-canaux 320.
Une pluralité de récepteurs d'enfichage à micro-canal 330 sont connectés au bus à micro-canaux 320 comme le montre la figure 4 pour recevoir des cartes de fonction comme des cartes de mémoire, des adaptateurs vidéos, des adaptateurs DASD, des adaptateurs SCSI et des adaptateurs de communication. Un ou plusieurs récepteurs de disques durs ou disques souples 335 sont connectés au bus à micro-canaux 320 pour faciliter la connexion d'un disque dur ou d'un disque souple (non représenté) au bus 320.
Une unité de commande d'accès de mémoire direct (DMA) 337 est connectée aux bus d'adresses, de données et de commande du bus local de système 250 dans le but de permettre l'utilisation de périphériques comme des disques durs, des unités de commande de disques souples et tout dispositif asservi à micro-canal DMA pour avoir un accès direct à la mémoire principale (décrite ci dessous) afin d'éviter d'avoir à impliquer directement le processeur 225 dans les transferts de données entre ces périphériques et la mémoire principale.
<Desc/Clms Page number 13>
Un circuit de commande de mémoire 340 est connecté au bus local de système 250 comme le montre la figure 4. Le fonctionnement du circuit de commande de mémoire 340 est entièrement décrit et spécifié dans le schéma chronologique de la figure 5 qui sera décrite ultérieurement. Cependant, afin d'améliorer la compréhension du circuit de commande de mémoire 340, on notera que le circuit de commande de mémoire comprend en fait trois parties, c'est à dire un décodeur RAS/CAS 345, un décodeur/multiplexeur d'adresses 350 et une mémoire intermédiaire de données 355. Le décodeur RAS/CAS 345 est connecté à son entrée au bus de commande du bus local de système 250. Le décodeur RAS/CAS 345 prend des signaux de définition de cycles d'adresses et de bus au processeur 225 et les décode pour extraire des signaux de sélection de mémoire et de chronologie de mémoire.
Le décodeur RAS/CAS 345 décode les signaux RAS et CAS. Le signal RAS décodé par le décodeur 345 spécifie quel banc de mémoires des 8 bancs de mémoire (chaque banc comprend 1 mégamultiplet organisé en 256K x 36 bits) est à accéder pendant le cycle de mémoire courant. L'agencement de ces 8 bancs de mémoire en une mémoire 370 comprenant les modules 371,372, 373 et 374 sera décrit ultérieurement. Le signal CAS décodé par le décodeur 345 spécifie quel multiplet ou quels multiplets d'un mot de 32 bits emmagasiné dans la mémoire 370, doivent être accédés pendant le cycle de mémoire courant.
Le circuit de commande de mémoire 340 est connecté à la mémoire 370 précédemment indiquée, de la manière décrite ci après. La mémoire 370 comprend 4 modules de mémoire à accès aléatoire (RAM), à savoir les modules 371,372, 373 et 374 qui reçoivent chacun 2 mégamultiplets de mémoire. Dans la figure 4, les modules 371-374 sont appelés des progiciels en-ligne simples (SIP) de mémoire à accès aléatoire dynamique (DRAM) ou ensemble DRAM SIP. Le module 371 contient 2 mégamultiplets de mémoire et est référencé
<Desc/Clms Page number 14>
"BASIC 2MB". Les modules restants 372-374 peuvent être remplis de mémoire selon l'option de l'utilisateur et sont ainsi référencés"OPTIONAL 2MB".
Le décodeur RAS/CAS 345 comprend un bus de sortie 380 ayant 13 lignes séparées sur lesquelles les signaux RAS, CAS et WE sont transmis à chacun des bancs de mémoires 371-374 dont 8 lignes sont attribuées à RAS, 4 lignes sont attribuées à CAS et 1 ligne est attribuée à WE. Le décodeur RAS/CAS 345 génère un signal de conditionnement d'écriture (WE) qui indique si un cycle de mémoire particulier est un cycle de lecture ou un cycle d'écriture et envoie cette information à une mémoire 370. Chacun des modules 371-374 comprend 2 mégamultiplets de mémoire dont chaque multiplet est divisé en 512 pages ou rangées qui ont chacune une longueur de 2K multiplets. C'est à dire que les bancs 371-374 sont configurés en mémoires de pages.
Le multiplexeur d'adresses (ADDR MUX) 350 est connecté à son entrée au bus de données de 36 lignes du bus local de système 250. Lorsque le processeur 225 désire accéder à un bloc de données emmagasinées dans un emplacement de la mémoire 370, le processeur 225 transmet les 36 bits de l'adresse de cet emplacement de mémoire au multiplexeur d'adresses 350. Le multiplexeur d'adresses 350 dérive l'adresse de page (adresse de rangée) et l'adresse de colonne des informations d'adresses de 36 bits et délivre l'adresse de page et l'adresse de colonne à la mémoire 370 par l'intermédiaire d'un bus d'adresses multiplexées (MUX ADDR) 390 qui connecte le multiplexeur d'adresses 350 à la mémoire 370. Un bus de données de mémoire de 36 bits 400 connecte les modules de mémoire 371-374 de la mémoire 370 à la mémoire intermédiaire de données 355.
Après que la mémoire 370 ait été adressée comme ci dessus, les données à l'adresse de mémoire spécifiée, sont transférées à un bus de données de mémoire 400 qui délivre les données à la mémoire intermédiaire de données 355 comme le montre la
<Desc/Clms Page number 15>
figure 4. Sur le bus de données de mémoire 400, 32 bits
EMI15.1
(DO-D31) sont attribués aux données et 4 bits de parité (P--P-) sont attribués à la parité. Une fois que les données adressées ont atteint le bus de données de mémoire 400, les données sont emmagasinées temporairement par la mémoire intermédiaire de données 355 et sont ensuite placées sur le bus de données du bus local de système 250.
Les données sont ensuite transférées au processeur 255 par la mémoire intermédiaire 240 et le bus local de CPU 230.
La discussion suivante du schéma de chronologie de la figure 5B décrit de manière détaillée le fonctionnement du circuit de commande de mémoire 340 et de la mémoire 370.
Par facilité et pour permettre une comparaison rapide, le schéma chronologique de l'art antérieur de la figure 2 a été répété dans la partie supérieure de la figure 5 sous la
EMI15.2
forme de la figure 5A Pour la discussion du schéma de chronologie de la figure 5B, on suppose que le processeur 225 désire accéder à un bloc de données emmagasiné à une adresse ou emplacement sélectionné dans la mémoire 370. Ce bloc de données est considéré comme le premier bloc de données sélectionné. On suppose aussi qu'après l'accès au premier bloc de données sélectionné, le processeur désire accéder à un second bloc de données sélectionné dans un autre emplacement de la mémoire.
Le processeur 225 délivre en sortie l'adresse sélectionnée où le premier bloc de données est emmagasiné, au bus de données du bus local de CPU 230. L'adresse
EMI15.3
sélectionnée consiste en 32 bits d'adresse AO-A31 et 4 bits de conditionnement de multiplet (BE-BE-) formant ainsi une adresse de 36 bits au total. Les 4 bits de conditionnement de multiplet BEO-BE3 sont utilisés pour indiquer les multiplets (de 1 à 4) qui sont à récupérer depuis les données (4 multiplets, 32 bits) emmagasinées à une adresse
<Desc/Clms Page number 16>
particulière. Après l'arrivée sur le bus d'adresses du bus local de CPU 230, l'adresse sélectionnée est emmagasinée provisoirement dans la mémoire intermédiaire 240.
L'adresse sélectionnée est alors transférée au bus d'adresses du bus local de système 250 et délivrée au circuit de commande de mémoire 340 et au multiplexeur d'adresses 350.
Le système 200 est agencé dans cette réalisation de façon que 9 bits de cette adresse sélectionnée de 36 bits correspondent à l'adresse de page ou adresse de rangée (adresse RAS) 410 des données à accéder. C'est à dire que les bits All-Al9 correspondent à l'adresse RAS. L'adresse de page 410 est synchronisée pour commencer au début du premier cycle de mémoire comme indiqué à la figure 5B. Le multiplexeur d'adresses 350 extrait cette adresse de page de 9 bits 410 de l'adresse de 36 bits et délivre cette adresse de page de 9 bits 410 à la mémoire 370 par l'intermédiaire d'un bus MUX ADDR de 9 lignes (adresses multiplexées) qui connecte le multiplexeur d'adresses 350 à la mémoire 370.
Au début du premier cycle de mémoire, le signal RAS issu du circuit de commande de mémoire 340 est au niveau haut, ce qui correspond à un état déconditionné dans la convention logique négative utilisée à la figure 5B. Après l'apparition de l'adresse de page 410 sur le bus MUX ADDR 390, le circuit de commande de mémoire 340 (par l'intermédiaire du circuit de décodage RAS/CAS 345) passe RAS au niveau bas ou conditionné en 415 comme on le voit à la figure 5B. De cette manière, l'adresse de page a utiliser par la mémoire 370 pour accéder aux données spécifiées, est passée à la mémoire 370.
<Desc/Clms Page number 17>
Après que RAS ait été conditionné, le circuit de commande de mémoire 370, par l'intermédiaire du multiplexeur d'adresses 350, extrait l'adresse de colonne de 9 bits 420 des données issues de l'adresse de 36 bits et délivre cette adresse de colonne de 9 bits 420 à la mémoire 370 par l'intermédiaire du bus MUX ADDR 390. C'est à dire que les bits A 2-A il correspondent à cette adresse de colonne ou adresse CAS. Comme on le voit sur le schéma de chronologie de la figure 5B, après l'apparition de l'adresse de colonne 420 sur le bus MUX ADDR 390, le circuit de commande de mémoire 340 (par le circuit de décodage RAS/CAS 345) passe CAS au niveau bas ou conditionné en 425. De cette manière, l'adresse de colonne à utiliser par la mémoire 370 pour accéder aux données spécifiées, est délivrée à la mémoire 370.
L'adresse de page et l'adresse de colonne des données sont ainsi multiplexées sur le même bus MUX ADDR de 9 lignes 390. Les bits restants A17-A31 sont utilisés par le décodeur RAS 345 pour indiquer lequel des modules 371-374 contient le premier bloc de données qui est en cours d'adressage.
A cet instant, l'adresse de page 410 et l'adresse de colonne 420 spécifiant l'emplacement en mémoire des données sélectionnées, ont été passées à la mémoire 370. Après un temps de retard prédéterminé TCAS depuis l'instant où CAS a été conditionné ou passé au niveau bas, les données sur le bus de données de mémoire 400 deviennent valides en 430.
Les données sont alors immédiatement verrouillées en 435 par des bascules de verrouillage bidirectionnelles (qui seront décrites plus en détails ultérieurement) contenues dans la mémoire intermédiaire de données 355. Après l'action d'emmagasinage temporaire et de verrouillage de la mémoire intermédiaire de données 355, les données verrouillées (le premier bloc de données sélectionné) sont délivrées en 437 au bus de données du bus local de système 250 pour transfert au processeur 225.
<Desc/Clms Page number 18>
A la suite du verrouillage des données en 435 pendant le déroulement du premier cycle de mémoire (cycle de mémoire courant) et avant le début du second cycle de mémoire (cycle de mémoire suivant), une précharge CAS est conduite en 440. Une fois que la précharge CAS est commencée en 140, les données sur le bus de données de mémoire 400 deviennent invalides en 442 après l'écoulement d'une période de temps prédéterminée depuis le commencement de la précharge CAS. Les circuits de verrouillage dans la mémoire intermédiaire de données 365 verrouillent les données avant qu'elles deviennent invalides, c'est à dire avant 442 sur le schéma chronologique du bus de données de mémoire de la figure 5B.
Ces périodes de temps pendant lesquelles les données sur le bus de données de mémoire 400 sont invalides, sont indiquées par la partie hachurée de la figure 5B. La fin de la précharge CAS définit la fin du premier cycle de mémoire.
Le processeur 225 transmet l'adresse du second bloc de données sélectionné au circuit de commande de mémoire 340 par le même chemin de données que celui sur lequel le premier bloc de données sélectionné a été transféré jusqu'au circuit de commande de mémoire 340. Si le circuit de commande de mémoire 340 détermine que le second bloc de données sélectionné à retirer de la mémoire 370 est dans la même page que le premier bloc de données sélectionné, comme on le voit alors sur le schéma chronologique de la figure 5B, pendant la précharge CAS en 440, l'adresse de colonne délivrée au bus MUX ADDR 390 est changée à l'adresse de colonne de ce second bloc de données en 445. Ce changement d'adresse de colonne se déroule avant la fin du premier cycle de mémoire.
A la suite de ce changement d'adresse de colonne, la précharge CAS est terminée et CAS est conditionné, ce qui
<Desc/Clms Page number 19>
démarre ainsi le second cycle de mémoire en 450. L'adresse de colonne correspondant au second bloc de données sélectionné est ainsi délivrée à la mémoire 370. Après un temps de retard TCA, les données correspondant à cette adresse de colonne et à l'adresse de page déjà prescrite, deviennent valides en 455 sur le bus de données de mémoire 400.
Les données sont alors immédiatement verrouillées en 460 par les bascules de verrouillage bidirectionnelles contenues dans la mémoire intermédiaire de données 355.
Après le déroulement de l'action d'emmagasinage temporaire/verrouillage de la mémoire intermédiaire de données 355, les données verrouillées (maintenant le second bloc de données sélectionné) sont délivrées en 465 au bus de données du bus local de système 250 pour transfert au processeur 225.
Comme on le décrira plus en détails ultérieurement lors de la discussion de la mémoire intermédiaire de données 355, lorsque le signal de commande de bascule de verrouillage de données de mémoire (LEABO-3) est au niveau bas, la mémoire intermédiaire 355 fonctionne en mode transparent ou de passage. Lorsque le signal de commande de bascule de verrouillage de données de mémoire est au niveau haut, la mémoire intermédiaire 355 emmagasine des données par action de la bascule de verrouillage.
On a décrit ci dessus l'accès en mémoire dans le cas où le second bloc de données sélectionné est dans la même page que le premier bloc de données sélectionné. Cependant, si le circuit de commande de mémoire 340 détermine que le second bloc de données sélectionné n'est pas dans la même
<Desc/Clms Page number 20>
page que le premier bloc de données sélectionné, le procédé d'adressage de mémoire doit alors être repris entièrement au début du premier cycle de mémoire.
C'est à dire qu'étant donné que l'adresse de rangée ou l'adresse de page n'est pas la même pour le second bloc de données que pour le premier bloc de données, la nouvelle adresse de rangée correspondant au second bloc de données doit être transmise à la mémoire 370, suivie par la nouvelle adresse de colonne d'une manière similaire à celle représentée au premier cycle de mémoire du schéma de chronologie de l'invention de la figure 5B.
La figure 6 est un organigramme qui résume le procédé par lequel les accès en mémoire sont conduits dans le système 200. Un accès en mémoire commence lorsque le processeur 225 utilise l'enchaînement d'adresse pour délivrer en sortie une adresse courante où des données sont à récupérer comme au bloc 500 de l'organigramme. L'adresse courante est transférée au circuit de commande de mémoire 340 par la structure de bus dans le système 200 d'une manière décrite précédemment. L'adresse courante est décodée par le circuit de commande de mémoire 340 au bloc 505. C'est à dire qu'une adresse de page et une adresse de colonne sont extraites de l'adresse courante.
L'adresse de page est alors multiplexée sur le bus d'adresses MUX 390 au bloc 510, cet événement signifiant le début du cycle de mémoire courant au bloc 515. Le signal RAS est alors conditionné au bloc 520 de façon que la mémoire 370 sélectionne l'adresse de page qui lui est actuellement délivrée sur le bus d'adresses MUX 390.
L'adresse de colonne est alors multiplexée sur le bus d'adresses MUX 390 au bloc 525. Le signal CAS est conditionné au bloc 530 de façon que la mémoire 370 sélectionne l'adresse de colonne qui lui est actuellement
<Desc/Clms Page number 21>
délivrée sur le bus d'adresses MUX 390. A cet instant, l'adresse des données désirées emmagasinées dans la mémoire 370 sont entièrement spécifiées et la mémoire 370 transfert les données à l'adresse spécifiée au bus de données de mémoire 390 au bloc 535. Les données sont verrouillées par les bascules de verrouillage bidirectionnelles dans la mémoire intermédiaire de données 355 au bloc 540 afin de préserver momentanément ces données. Après le verrouillage des données, les données sont transférées au bus de données local du système 250 au bloc 545.
Une précharge CAS est alors conduite comme par le bloc 550 avant la fin du cycle de mémoire courant. L'adresse suivante à accéder est alors décodée au bloc 555.
Un test est exécuté au bloc de décision 560 pour déterminer si l'adresse suivante est située sur la même page que l'adresse précédente (l'adresse courante ci dessus). Si l'adresse suivante n'est pas dans la même page que l'adresse précédente, le procédé revient au bloc 510 de la figure 6 où l'adresse de page suivante est multiplexée sur le bus d'adresses MUX 390. Cependant, si l'adresse suivante est située sur la même page que l'adresse précédente, le déroulement du procédé se poursuit alors au bloc 565 où l'adresse de colonne de l'adresse suivante est multiplexée sur le bus d'adresse MUX 390. Puis le cycle de mémoire suivant ou second cycle de mémoire est démarré au bloc 570 une fois que la précharge CAS est terminée.
C'est à dire qu'au début du second cycle de mémoire, le signal CAS est conditionné au bloc 575 de façon que la mémoire 370 sélectionne l'adresse de colonne qui lui est actuellement délivrée sur le bus d'adresses MUX 390. A cet instant, l'adresse des données désirées emmagasinées dans la mémoire 370 est une fois encore entièrement spécifiée et la mémoire 370 transfert les données à l'adresse spécifiée au bus de données de mémoire 390, au bloc 580. Les données sont verrouillées par les bascules de verrouillage
<Desc/Clms Page number 22>
bidirectionnelles dans la mémoire intermédiaire de données 355 au bloc 585 pour préserver momentanément ces données.
Après le verrouillage des données, les données sont transférées au bus de données local de système 250 au bloc 590. Une précharge CAS est alors conduite au bloc 595 avant la fin du cycle de mémoire courant. L'adresse suivante à accéder est alors décodée au bloc 600, après quoi le déroulement du procédé repasse au bloc de décision 560 où une décision est à nouveau prise pour déterminer si l'adresse suivante se trouve sur la même page que la dernière adresse.
Une mémoire intermédiaire de données du type à verrouillage à grande vitesse pouvant être utilisée comme mémoire intermédiaire de données 355 est représentée à la figure 7 sous forme schématique. Afin de simplifier l'illustration, la figure 7 montre l'un des quatre modules pratiquement identiques utilisés dans la mémoire intermédiaire de données 355 comme le module 610. Le module de mémoire intermédiaire 610 comprend un port de 8 bits 615 qui est connecté aux lignes de données D à D7 du bus de données de mémoire 400. Le module de mémoire intermédiaire 610 comprend un récepteur de données 620 référencé A REC qui est connecté au port 615 comme le montre la figure.
Le récepteur de données 620 est une mémoire intermédiaire qui fait fonction d'interface entre l'environnement du signal TTL de 0 à 5 volts présent sur le bus de données de mémoire 400 et la caractéristique d'environnement de 0 à approximativement 3 volts du travail interne du module de mémoire intermédiaire 610. La sortie du récepteur 620 est connectée à l'entrée d'une bascule de verrouillage de données de 8 bits 625 qui verrouille des données qui lui sont présentées lorsqu'elle est commandée pour cela par un signal de commande de bascule de verrouillage de données de mémoire approprié présenté à son entrée de commande 625A et référencé LEABO (Conditionnement bascule verrouillage A à
<Desc/Clms Page number 23>
B). La bascule de verrouillage 625 est une bascule de verrouillage transparente.
C'est à dire que la bascule 625 peut fonctionner soit en mode transparent, soit en mode de verrouillage en réponse à un signal de commande approprié à l'entrée de commande 625A. Lorsque la bascule de verrouillage 625 est commandée pour fonctionner en mode transparent, une entrée de niveau bas provoque une sortie de niveau bas et une entrée de niveau haut provoque une sortie de niveau haut. C'est à dire qu'en mode transparent, les données de 8 bits présentées à l'entrée de la bascule de verrouillage 625 s'écoulent par la sortie de celle ci.
Cependant, lorsque la bascule de verrouillage 625 est commandée pour fonctionner en mode de verrouillage par l'intermédiaire du signal de commande de verrouillage à l'entrée 625A (LEABO) lorsqu'elle reçoit un signal d'entrée de 8 bits particulier, la sortie prend alors un état stable et reste dans cet état ou verrouillée jusqu'à ce qu'elle reçoive un signal de commande approprié à l'entrée de commande 625A.
On rappellera d'après la discussion précédente qu'immédiatement après que les données adressées soient devenues valides sur le bus de données de mémoire en 430 de la figure 5B, les données sont verrouillées comme en 435.
Une commande de sortie 630 est connectée à la sortie de la bascule de verrouillage 625 comme le montre la figure 7. La commande 630 est référencée"B DRV"et fait fonction d'interface entre l'environnement interne de 0 à 3 volts de la mémoire intermédiaire de données 610 et l'environnement TTL externe de 0 à 5 volts présent à la sortie de la commande 630. La sortie de 8 bits de la commande 630 est connectée à un port 635 qui est connecté à des lignes de 8 bits référencées BO-B7 du bus de données du bus local de système 250.
De cette manière, une fois que la bascule de verrouillage 625 a verrouillé les données qu'elle reçoit, le système peut continuer le traitement des données et les
<Desc/Clms Page number 24>
signaux sur le bus de données de mémoire 400 (DO-D7) sont libres de changer tandis que la bascule de verrouillage 625 retient les anciennes données pour une saisie ultérieure par le processeur 225 par l'intermédiaire du bus local de système 250.
La commande 630 comprend une entrée de commande de porte de bus de données de mémoire 630A qui est référencée OEABO.
Lorsque le signal OEABO est conditionné, la commande 630 est excitée pour assurer le passage des données. Cependant, lorsque le signal OEABO est déconditionné, la commande 630 est déconditionnée.
La sortie de la bascule de verrouillage 625 est connectée à l'entrée d'un arbre de parité de 8 bits 640. Si les 8 entrées de l'arbre de parité 640 présentent un nombre pair de"1", l'arbre de parité 640 génère alors une sortie d'un seul bit qui est un"1" (niveau haut) pour maintenir la parité impaire. Cependant, si les 8 entrées de l'arbre de parité 640 présentent un nombre impair de"1", l'arbre de parité 640 génère alors une sortie d'un seul bit qui est un"0" (niveau bas) pour maintenir la parité impaire.
La mémoire intermédiaire 610 comprend un récepteur GEN/CK 645 dont une entrée est référencée GEN/CKO comme illustré à la figure 7. Le récepteur GEN/CK 645 est une interface qui convertit des signaux TTL de 0-5 volts à son entrée en signaux de 0-3 volts à sa sortie. La valeur de GEN/CKO dépend du type de cycle particulier que le processeur 225 désire suivre ensuite. C'est à dire que le signal d'entrée GEN/CKO (voir la figure 5B) présente une valeur de 1 (niveau haut) lorsque le cycle d'écriture de mémoire est à conduire et présente une valeur de 0 (niveau bas) lorsqu'un cycle de lecture de mémoire est à conduire.
<Desc/Clms Page number 25>
Pour cet exemple, on suppose que le signal GEN/CKO a une valeur de 0 indiquant qu'un cycle de lecture est à conduire depuis la mémqiret ç'çet à aire, que les informations d données et de parité correspondantes ont déjà été emmagasinées dans la mémoire 370 et que maintenant on souhaite accéder à ces données. Dans le cas de cet exemple, on suppose qu'un mot de 32 bits composé de quatre multiplets de 8 bits est à retirer de la mémoire 370. On suppose que quatre bits de parité sont emmagasinés avec ce mot de 32 bits, c'est à dire qu'un bit de parité est associé à chaque multiplet du mot de 32 bits. On notera que la mémoire intermédiaire de données 610 de la figure 7 est capable de manipuler un multiplet (8 bits) et un bit de parité de ce mot de 32 bits.
Les 3 multiplets et les 3 bits de parité restants de ce mot de 32 bits sont traités par trois autres mémoires intermédiaires de données similaires à la mémoire intermédiaire de données 610 représentée à la figure 8.
La sortie du récepteur GEN/CK 645 est connectée à l'entrée de commande 650A de la commande de parité 650. La sortie de l'arbre de parité 640 est connectée à l'entrée 650B de la commande de parité 650 et à une entrée d'une porte OU exclusif à deux entrées 655. La sortie de commande de parité 650B est connectée à la ligne de parité Po due la partie bus de parité du bus de données de mémoire 400. On rappellera que le bus de données de mémoire de 36 bits 400 comprend les lignes D-D- < pour le mot de 32 bits emmagasiné et 4 lignes de parité PO-P3 correspondant à chacun des 4 bits de parité associés aux 4 multiplets qui constituent le mot de 32 bits emmagasiné.
Outre le fait d'être connectée à la sortie de commande de parité 650C, la ligne de parité PO est connectée par l'intermédiaire d'un récepteur de parité 660 à l'entrée restante de la porte OU exclusif 655. La sortie du récepteur GEN/CK 645 est connectée à une entrée de commande 655A de la porte OU
<Desc/Clms Page number 26>
exclusif 655. L'état logique du signal délivré à l'entrée de commande 655A détermine si la porte OU exclusif 655 est conditionnée pour permettre le passage de signaux ou si elle est déconditionnée pour ne pas permettre le passage de signaux à la sortie de la porte OU exclusif 655. La sortie de la porte OU exclusif 655 est référencée EO (erreur) et connectée à une commande d'erreur 665. La sortie de la commande d'erreur 665 est connectée à un terminal d'erreur 670 qui est référencé E.
La commande d'erreur 665 ne fait pas partie de la mémoire intermédiaire 610 et sera décrite ultérieurement.
Un générateur/vérificateur d'erreur de parité 680 est composé de l'arbre de parité 640, du récepteur GEN/CK 645, de la commande de parité 650, du récepteur de parité 660, de la porte OU exclusif 655 et de la commande d'erreur 655.
Comme on le verra ultérieurement, le générateur/vérificateur de parité 680 fonctionne dans deux modes, c'est à dire un mode de génération de parité lorsque les données sont écrites à la mémoire et un mode de vérification de parité lorsque des données sont retirées de la mémoire 370 ou accédées dans celle ci. Etant donné que la présente invention implique l'accès à des données emmagasinées dans la mémoire 370, le mode de vérification de parité du générateur/vérificateur de parité 680 va maintenant être décrit. Lorsque l'entrée GEN/CKO du récepteur GEN/CK 645 est au niveau bas (0), le circuit de générateur/vérificateur 680 entre le mode de vérification de parité. Par contre, lorsque l'entrée GENCKO est au niveau haut (1), le circuit de générateur/vérificateur 680 entre le mode de génération de parité.
Pour revenir à la discussion du mode de vérification de parité, lorsque le récepteur 645 reçoit un signal GEN/CKO de 0 depuis l'environnement (TTL) extérieur, le récepteur 645 fait fonction d'interface pour ce signal à sa sortie qui, comme on l'a déjà indiqué, est une sortie de 0 à
<Desc/Clms Page number 27>
approximativement 3 volts. La sortie du récepteur 645 est connectée à l'entrée de commande 650A de la commande de parité 650 de façon que le 0 logique ou niveau bas apparaissant maintenant à l'entrée de commande 650A provoque la coupure de la commande de parité 650 pour que le signal à la sortie de l'arbre de parité 640 ne soit pas passée à la ligne de bus de parité PO du bus de données de mémoire 400.
On rappellera d'après la discussion précédente que la fonction du circuit de générateur/vérificateur 680 en mode de vérification, est de comparer en effet le bit de parité emmagasiné PO associé à un multiplet de données particulier (DO-D7) à la parité réelle PO'présentée par le même multiplet après qu'il ait été retiré de la mémoire 370. Si l'accès en mémoire a été réussi, la parité avant
EMI27.1
l'accès PO doit être la même que la parité après l'accès p' OLorsque le multiplet DO-D7 est retiré de la mémoire 370, il est reçu par le récepteur 620 et verrouillé par la bascule de verrouillage 625. (Le multiplet particulier retiré sur les lignes DO-D7 est appelé ci après le multiplet 0).
Les 8 bits du multiplet 0 sont ainsi verrouillés à la sortie de la bascule de verrouillage 625 de façon que le système de calcul soit libre de poursuivre en avant et de changer les valeurs des signaux sur les lignes DO-D7 du bus de données de mémoire 400. Lorsque la bascule de verrouillage 625 fonctionne en mode de verrouillage, le multiplet 0 est délivré à l'arbre de parité à 8 bits 640 qui dérive un bit de parité PO'pour ce multiplet accédé à l'instant. PO'est ainsi la parité réelle présentée par le multiplet 0 après sont retrait de la mémoire 370. Le bit de parité PO'est délivré à une entrée de la porte OU exclusif à deux entrées 655.
On rappellera que l'entrée restante de la porte OU exclusif 655 est connectée par l'intermédiaire du récepteur de parité 660 à la ligne de parité Po du bus de données de
<Desc/Clms Page number 28>
mémoire 400. De cette manière, lorsque le multiplet 0 est récupéré de la mémoire 370, le bit de parité PO correspondant à ce multiplet 0, est délivré à l'entrée restante de la porte OU exclusif 655. Si le bit de parité PO avant l'accès est le même que le bit de parité Po après l'accès en mémoire, c'est à dire les deux des 1 ou les deux des 0, la porte OU exclusif 655 génère alors un 0 à sa sortie indiquant qu'il n'y a pas eu d'erreur pendant le retrait du multiplet de données, le multiplet 0, de la mémoire.
Cependant, si le bit de parité PO avant l'accès en mémoire n'est pas le même que le bit de parité PO prime après l'accès, la porte OU exclusif 655 génère un 1 à sa sortie indiquant qu'une erreur s'est produite au retrait du multiplet 0 de la mémoire 370. Le bit de sortie d'erreur à la sortie de la porte OU exclusif 655 est mis en interface par l'intermédiaire de la commande 665 avec la fonction OU négatif logique au port de sortie d'erreur 670 qui est référencé E. On notera que lorsque le circuit de générateur/vérificateur 680 est en mode de vérification de parité, le signal GENCKO apparaissant à la sortie du récepteur GEN/CK 645 est au niveau bas ou 0, ce qui conditionne la porte OU exclusive 655.
Par contre, lorsque le circuit de générateur/vérificateur 680 fonctionne en mode de génération de parité, le signal GEN/CKO est au niveau haut, ce qui déconditionne la porte OU exclusif 655. Le système de calcul échantillonne régulièrement la sortie E 670 à la fin de chaque cycle de mémoire pour déterminer si une erreur s'est produite.
Comme indiqué ci dessus, la mémoire intermédiaire/bascule de verrouillage de données 610 fonctionne aussi dans le sens opposé à celui décrit ci dessus. C'est à dire que lorsque le système de calcul effectue une écriture en mémoire d'un mot de 32 bits particulier comprenant le multiplet 0, le multiplet 1, le multiplet 2 et le multiplet 3, le multiplet 0 de ce mot est
<Desc/Clms Page number 29>
transféré du bus local de système 250 au travers de la mémoire intermédiaire 610, au bus de données de mémoire 400. D'une manière plus détaillée, le système délivre le multiplet 0 au port 635 référencé BO-B7. Le port 635 est connecté par l'intermédiaire d'un récepteur 675 à une bascule de verrouillage de 8 bits 680 comme le montre la figure 7.
Le récepteur 675 et la bascule de verrouillage 680 sont pratiquement identiques au récepteur 620 et à la bascule de verrouillage 625, respectivement. La bascule de verrouillage 680 comprend une entrée de commande de bascule de verrouillage de données de mémoire référencée LEBAO qui, lorsqu'elle est passée au niveau haut ou à 1, provoque le verrouillage des données de 8 bits délivrées à la bascule de verrouillage 680. La sortie de la bascule de verrouillage 680 est connectée par l'intermédiaire d'une commande 685 aux lignes de données DO-D7 du bus de données de mémoire 400. La commande 685 est pratiquement identique à la commande 630 déjà décrite.
La commande 685 comprend une entrée de commande de porte de bus de données de mémoire OEBAO (sortie conditionnement B à A) qui, lorsqu'elle reçoit un 0 logique ou un signal au niveau bas, conditionne la commande 685 pour permettre le passage des données. Pour résumer le fonctionnement du récepteur 675, de la bascule de verrouillage 680 et de la commande 685 dans le mode d'écriture en mémoire, lorsque le multiplet 0 est délivré au port 635, le récepteur 675 passe les 8 bits du multiplet 0 à la bascule de verrouillage 680.
Le signal de commande de bascule de verrouillage de données de mémoire LEBAO (conditionnement bascule verrouillage B à A) indique alors à la bascule 680 que les données sont à verrouiller à la sortie de la bascule de verrouillage 680, ce qui permet ainsi au système de calcul de poursuivre en avant et de changer les valeurs des signaux sur les lignes de données BO-B7 au port 635 du bus de données local de système 250. Le signal de commande de porte de bus de données de mémoire OEBAO délivré à la commande 685 passe au niveau bas pour conditionner la commande 685, ce qui permet
<Desc/Clms Page number 30>
ainsi aux 8 bits du multiplet 0 verrouillés à la sortie de la bascule 680 de passer au travers des lignes de données Do-D7 du bus de données de mémoire 400.
Les signaux OEBAO-3 sont les miroirs du signal de conditionnement d'écriture (WE) que l'unité de commande de mémoire 340 délivre à la mémoire 370. Le signal WE est au niveau haut pour les cycles de lecture et au niveau bas pour les cycles d'écriture.
Ce qui précède est une description de la partie de la mémoire intermédiaire de données 355 qui est attribuée à la manipulation de 1 multiplet, BO, d'un mot de 4 multiplets (32 bits) emmagasiné dans et récupéré de la mémoire 370. Pour manipuler les 3 multiplets restants, le multiplet 1, le multiplet 2 et le multiplet 3 de ce mot de 32 bits, la bascule de verrouillage/mémoire intermédiaire de données 610 est répétée quatre fois comme on le voit à la figure 9. Par simplification, ces 4 mémoires intermédiaires de données 610 sont considérées comme les mémoires intermédiaires de données 610-0,610-1, 610-2 et 610-3 pour indiquer aisément qu'elles manipulent les parties du multiplet 0, du multiplet 1, du multiplet 2 et du multiplet 3 du mots de 32 bits indiqué ci dessus à récupérer de ou à écrire dans la mémoire 370.
La figure 9 est une représentation schématique simplifiée de la mémoire intermédiaire de données 355 qui comprend quatre mémoires intermédiaires/bascules de verrouillage de données 610, à savoir les mémoires intermédiaires de données 610-0,610-1, 610-2 et 610-3 pour traiter le multiplet 0, le multiplet 1, le multiplet 2 et le multiplet 3, respectivement, d'un mot de 32 bits. Par commodité, sur la figure 8, le récepteur 620 et la commande 685, les bascules de verrouillage 625 et 680, et la commande 630 et le récepteur 675 ont été appairés dans les
<Desc/Clms Page number 31>
boites respectives de la figure 8. On rappellera que la mémoire intermédiaire de données 355 est située entre le bus de données du bus local de système 250 et le bus de données de mémoire 400.
Plus précisément, les lignes de
EMI31.1
données DO-D31 de la mémoire intermédiaire 355 sont connectées aux lignes de données DO-D31 du bus de données de mémoire 400. Les lignes de données BO-B31 de la mémoire intermédiaire 355 sont connectées aux lignes de données BO-B31 du bus de données du bus local de système 250.
Que ce soit une opération de lecture ou d'écriture qui est conduite pour un mot de 32 bits par l'intermédiaire de la mémoire intermédiaire 355, les mémoires intermédiaires/bascules de verrouillage 610-0,610-1, 610-2 et 610-3 fonctionnent sur le multiplet 0, le multiplet 1, le multiplet 2 et le multiplet 3, respectivement, de ce mot de 32 bits. La mémoire intermédiaire de données 355 comprend 4 entrées/sorties à bit de parité PO, PI, P2 et P3 correspondant à la parité générée ou accédée du multiplet 0, du multiplet 1, du multiplet 2 et du multiplet 3, respectivement. Les lignes de parité PO, Pi, P2 et P3 de la mémoire intermédiaire de données 355 sont connectées aux lignes de parité PO, Pi, P2 et P3 du bus de données de mémoire à 36 lignes 400.
On rappellera que le bus de données de mémoire 400 comprend les lignes de données DO-D31 et les lignes de parité PO-P3. Ainsi, lorsqu'un mot de 32 bits particulier est écrit en mémoire, les arbres de parité respectifs 640 des mémoires intermédiaires de données 610 0-3 déterminent la parité associée à chacun des quatre multiplets, multiplet 0-multiplet 3 du mots de données de 32 bits et délivrent les quatre bits de parité déterminés aux lignes de parité PO-P3 pour emmagasinage en mémoire 370. Lorsqu'une opération de retrait est effectuée pour retirer un mot de 32 bits de la mémoire 370, les 4 bits de parité PO-P3 associés à ce mot de données sont
<Desc/Clms Page number 32>
retirés et délivrés aux lignes de parité PO-P3 de la mémoire intermédiaire de données 355.
Les lignes GEN/CKO, GEN/CK1, GEN/CK2 et GEN/CK3 de la mémoire intermédiaire de données 355 sont connectées aux lignes de commande GENCKO-GENCK3 correspondantes (non représentées) incluses dans le circuit de commande de mémoire 340. Le circuit de commande de mémoire 340 génère un signal GEN/CK comme le signal GEN/CKO représenté à la figure 5B et délivre celui ci aux entrées GENCKO-GENCK3 de la mémoire intermédiaire 355 pour indiquer à la mémoire intermédiaire 355 si l'opération conduite est une opération de lecture ou d'écriture.
Si c'est une opération d'écriture qui est conduite, les signaux GENCKO-GENCK3 appropriés sont générés pour commander aux mémoires intermédiaires respectives 610-1 à 610-3 la génération des bits de parité respectifs correspondant aux 4 multiplets du mot de 32 bits en cours d'écriture dans la mémoire 370. Cependant, si une opération de lecture est conduite, le circuit de commande de mémoire 340 génère des signaux de commande appropriés GENCKO-GENCK3 pour commander aux mémoires intermédiaires respectives 610-1 à 610-3 l'exécution du mode de vérification de parité comme déjà indiqué lors de la description de la figure 7.
C'est à dire qu'après le retrait des 4 multiplets et de leurs 4 bits de parité Pn-P de la mémoire 370, les arbres de parité 640 déterminent la parité P'-P'des 4 multiplets après retrait, respectivement. Si l'un quelconque des anciens bits de parité P-P-ne correspond pas aux nouveaux bits de parité P'-P-', un signal d'erreur est alors généré sur la ligne d'erreur correspondante EO-E3 décrite à la figure 9 aux entrées de la commande d'erreur 665. La commande d'erreur 665 assure une fonction logique OU négatif. Si l'une quelconque des lignes d'erreur EO, El, E2 et E3 reçoit un signal d'erreur, la sortie de la commande d'erreur 665 génère alors aussi ce signal d'erreur.
On notera que la
<Desc/Clms Page number 33>
commande d'erreur 665 fait fonction d'interface entre l'environnement à faible déviation de tension interne à la mémoire intermédiaire 355 et l'environnement TTL externe présenté au terminal d'erreur 670 référencé E.
La figure 9 est une représentation des entrées/sorties de données de la mémoire intermédiaire 355, qui montre les diverses entrées et sorties de la mémoire intermédiaire 355 que l'on a déjà décrite.
La table 1 est indiquée ci après pour résumer les différents états dans lesquels la mémoire intermédiaire de données 355 peut fonctionner.
<Desc/Clms Page number 34>
TABLE 1
EMI34.1
<tb>
<tb> 0-3 <SEP> OEBA <SEP> LEBA <SEP> LEBA
<tb> 0-3 <SEP> 0-3 <SEP> 0-3 <SEP> 0-3 <SEP> A-B <SEP> B-A
<tb> 0 <SEP> X <SEP> 0 <SEP> X <SEP> 1 <SEP> X <SEP> 1 <SEP> Mode <SEP> transparent
<tb> 0 <SEP> X <SEP> 1 <SEP> X <SEP> 2 <SEP> X <SEP> 2 <SEP> Données
<tb> verrouillées
<tb> 1 <SEP> X <SEP> 0 <SEP> X <SEP> 3 <SEP> X <SEP> 3 <SEP> Sortie
<tb> déconditionnée
<tb> 1 <SEP> X <SEP> 1 <SEP> X <SEP> 4 <SEP> X <SEP> 4 <SEP> Sortie
<tb> déconditionnée
<tb> Données
<tb> verrouillées
<tb> X <SEP> 0 <SEP> X <SEP> 0X1
<tb> x <SEP> 0 <SEP> X <SEP> 1X2
<tb> X <SEP> 1 <SEP> X <SEP> 1 <SEP> X <SEP> 4
<tb>
La table 2 est incluse ici pour résumer les différents états que prend la mémoire intermédiaire 355 en réponse aux différents signaux GEN/CK.
TABLE 2
EMI34.2
<tb>
<tb> GEN/CKx <SEP> Px
<tb> 0 <SEP> Entrée <SEP> mode <SEP> vérification <SEP> Px <SEP> comparée <SEP> au
<tb> bit <SEP> de <SEP> parité <SEP> généré <SEP> intérieurement
<tb> pour <SEP> les <SEP> 8 <SEP> entrées"A"correspondantes.
<tb>
Une <SEP> non-correspondance <SEP> passe <SEP> la <SEP> ligne
<tb> d'erreur <SEP> au <SEP> niveau <SEP> bas.
<tb>
<Desc/Clms Page number 35>
EMI35.1
<tb>
<tb> l <SEP> Le <SEP> bit <SEP> de <SEP> parité <SEP> mode <SEP> génération <SEP> est
<tb> conduit <SEP> en <SEP> sortie <SEP> de <SEP> la <SEP> manière
<tb> suivante <SEP> :
<tb> 1 <SEP> Si <SEP> nombre <SEP> pair <SEP> de <SEP> 1 <SEP> sur
<tb> entrées"A"correspondantes
<tb> 0 <SEP> Si <SEP> nombre <SEP> impair <SEP> de <SEP> 1
<tb> Nota <SEP> : <SEP> Sortie <SEP> erreur <SEP> ="1"si
<tb> GEN <SEP> : <SEP> CK <SEP> 0-3 <SEP> = <SEP> 1.
<tb>
Les bornes OEABO-3 et GEN/CKO-3 sur la mémoire intermédiaire de données 355 sont connectées ensemble et ainsi les signaux OEAB (commande porte bus données mémoire) sont le miroir ou suivent les signaux GEN/CK comme on le voit à la figure 5B.
Bien que l'on ait décrit ci dessus un système de calcul présentant des temps d'accès en mémoire réduits, une méthode pour accéder en mémoire dans un tel système de calcul est aussi décrite et résumée ci dessous. Cette méthode est utilisée dans un système de calcul comprenant une mémoires à pages ayant un bus d'adresses et un bus de données qui lui sont connectés et présente en outre des premier, second, etc... cycles de mémoire associés. On présente plus particulièrement une méthode de lecture d'informations emmagasinées dans ladite mémoire qui comprend les étapes d'application à la mémoire d'un signal d'adresse correspondant à l'emplacement de données à accéder dans la mémoire.
La méthode comprend les étapes d'application à la mémoire d'un signal de découpage d'adresse de rangée (RAS) pendant le premier cycle de mémoire et d'application d'un signal de découpage d'adresse de colonne (CAS) à la mémoire pendant le premier cycle de mémoire et à la suite du signal RAS. La méthode comprend le
<Desc/Clms Page number 36>
verrouillage de la mémoire ainsi adressée pour un transfert ultérieur sur le bus de données et l'exécution d'une précharge CAS sur la mémoire à la suite de l'étape de verrouillage et avant la fin d'un premier cycle de mémoire.
On a décrit dans ce qui précède un système de calcul dans lequel le temps d'accès à une mémoire de pages, a été réduit de manière significative en avançant la précharge CAS associée aux données à accéder au cours du cycle de mémoire suivant, au cycle de mémoire courant. Le système de calcul est capable de fonctionner à des vitesses d'horloge élevées sans recourir à des états d'attente supplémentaires pendant l'accès à la mémoire de pages.
Bien qu'une réalisation de la présente invention ait été décrite ci dessus à titre d'exemple, divers changements et modifications pourront y être apportés par l'homme de l'art sans pour autant sortir du cadre ladite invention telle qu'exprimée dans les revendications suivantes.