FR 2637997 A1 19900420 FR 8913347 A 19891012 La présente invention concerne les dispositifs multi-- processeurs, et notamment un dispositif pour constituer une file d1attente de requêtes, ainsi que de leurs réponses, d'accès à- un bus en pipeline à paquets d'informations qui assure l'interconnexion entre des modules. On a déjà décrit un système multiprocesseur dans les US-A-4 315 308, US-A-4 480 307 et US-A-4 473 880, apparte- nant à Intel Corporation. Dans ce système, plusieurs-modules partagent-un bus commun -pour les échanges de signaux entre eux. Ces modules peuvent être des processeurs de données, des mémoires, ou des dispositifs d'entrée/sortie et leurs contrôleurs respectifs. Il faut maintenir plusieurs requêtes d'utilisation du bus tant que le bus n'est pas disponible. Les réponses reçues sur le bus doivent, de même, être mémorisées dans- des mémoires tampons, réordonnées si besoin est et transmises aux modules destinataires, ou encore être reformulées en cas d'erreur. L'information est transférée sur le bus sous forme de paquets d'information pendant des cases temporelles qui ont été allouées pour la transmission sur le bus. Le contrôle du bus est réalisé par des files d'attente qui sont des mémoires de type FIFO (First In, First Out: premier entré, premier sorti) ' qui mémorisent ces paquets. Par exemple, une file d'attente d'autorisation est constituée par un tampon FIFO qui maintient les paquets de. - requêtes qui sont en attente d'accès au bus. Le contrôle du bus devient complexe quant on tient compte de la détection et de la correction des erreurs et quand on définit beaucoup de tampons FIFO entrelacés pour échanger des données. avec les circuits logiques des modules utilisants le bus. Il faut jusqu'à quatorze tampons FIFO différents de maintien des données pour décrire complètement le fonctionnement d'un bus à paquets de données qui doit surveiller trois requêtes distinctes à la fois. Un protocole - de bus établit et maintient un pipeline de requêtes et de réponses, surveille l'apparition d'erreurs sur le pipeline et insère sur le pipeline les réponses à l'instant approprié de la position de la case temporelle correspondant à une requête reconnue. Puisque, dans la technologie VLSI des circuits. intégrés à trés haute densité d'intégration, la surface de puce est une caractéristique contraignante lorsque l'on veut réaliser un tel contrôle de bus complexe, il est nécessaire de développer un circuit qui soit de taille limitée, mais qui puisse néammoins opérer à la vitesse la plus élevée dont ces circuits sont capables. L'un des buts de la présente invention est donc de proposer un dispositif pour-mettre en file d'attente des requêtes et des réponses sur un bus en pipeline, dispositif qui soit de taille limitée mais qui puisse toujours opérer à pleine vitesse. A cet effet, la présente invention propose un dispositif pour mettre en file d'attente des requêtes et *des réponses sur un bus transmettant des paquets de données en pipeline, comprenant: une mémoire RAM pour fonctionner en mémoire tampon des requêtes de bus en mémorisant l'information d'un paquet de données correspondant à chaque requête à envoyer sur le bus dans des cases temporelles de bus allouées à chaque requête; n cases d'émission, pour garder trace de l'état de n requêtes d'émission mémorisées dans la mémoire RAM; m cases de réception, pour garder trace de l'état de m requêtes de réception mémorisées dans la mémoire RAM; une pluralité de compteurs de file d'attente d'émission, destinés à constituer une première logique susceptible d'être séquencée sur une suite d'états correspondant à une suite de files d'attente d'émission, pour suivre une requête sortante et. pour suivre une réponse entrante correspon- dante; une pluralité de compteurs de file d'attente de réception, destinés à constituer une seconde logique susceptible d'être séquencée sur une suite d'états corres- pondant à une suite de files d'attente de réception, pour suivre une requête entrante et pour suivre une réponse sortante correspondante; un multiplexeur de sortie, relié aux cases d'émission et de réception, pour produire des informations d'état correspondant à l'état de ces cases; et des moyens, reliés à ce multiplexeur de sortie, fonctionnant en réponse auxdites. informations d'état correspondant à l'état des cases, pour incrémenter ou décrémenter les compteurs de file d'attente d'émission et les compteurs de file d'attente de réception en fonction d'un protocole prédéterminé du-bus système. La présente invention a également pour objet un procédé pour pour mettre en file d'attente des requêtes et des réponses sur un bus transmettant des paquets de données en pipeline, caractérisé en ce qu'il comprend les étapes consistant à: mémoriser -les requêtes- sur le bus en mémorisant l'information d'un paquet de données correspon- dant à chaque requête à envoyer sur le bus dans des cases temporelles de bus allouées à chaque requête; garder la trace, dans n cases d'émission de l'état de n requêtes d'émission mémorisées dans la mémoire RAM; garder la trace, dans m cases de réception, de l'état de m requêtes de réception mémorisées dans la mémoire RAM; prévoir une première logique d'états susceptible d'être séquencée'sur une suite d'états correspondant à une suite de files d'attente d'émission, pour suivre une requête sortante et pour suivre une réponse entrante correspondante; prévoir une seconde logique d'états susceptible d'être séquencée sur une suite d'états correspondant à une suite de files d'attente de réception, pour suivre une requête entrante et pour suivre une réponse sortante correspondante; produire des informations d'état correspondant à l'état des cases; et incrémenter ou décrémenter, en réponse auxdites informa- tions d'état correspondant à l'état des cases, les compteurs de file d'attente d'émission et les compteurs de file - d'attente de réception en fonction d'un protocole pré- déterminé du bus système. L'invention présente l'avantage de pouvoir mettre en oeuvre un protocole de séquenceminent complexe d'un bus de paquets à tolérance de panne, avec possibilité d'adaptation sur une surface minimale de puce VLSI. Les buts, caractéristiques et avantages de la présente invention apparaîtront à la lecture de la description détaillée ci-dessous d'un mode de réalisation préféré de l'invention, en référence aux figures annexées. La figure 1 est un schéma par blocs d'un système processeur à double bus mettant en oeuvre la présente invention. La figure 2 est un schéma par blocs plus détaillé de la logique de contrôle du bus 6 située à l'intérieur de l'unité d'extension de bus 10 représenté figure 1. La figure 3 est un schéma par blocs plus détaillé du bloc de file d'attente d'émission 230 de la figure 1. La figure 4 est un schéma par blocs plus détaillé du bloc de file d'attente de réception 232 de la figure 1. La figure 5 est un schéma par blocs plus détaillé de l'une des cases d'émission se trouvant dans le bloc de cases d'émission 208 de la figure 2. La figure 6 est un schéma par blocs plus détaillé de l'une des cases de réception se trouvant dans le bloc de cases de réception 210 de la figure 2. La figure 7 est un diagramme des états. de la file d'attente d'émission pour les requêtes sortantes. La figure 8 est un diagramme des états de la file d'attente de réception pour les requêtes entrantes. On se référera maintenant à la figure 1, qui est un schéma par blocs d'un système multiprocesseur à double bus système. Des unités d'extension de bus 10, 12 sont reliées au double bus système 20, 22 et à un bus local 18. Le bus local 18 assure l'interfaçage avec les processeurs de données universels 34,36. Un second bus local, non représenté, peut être ajouté pour permettre l'interfaçage à des processeurs de voie, non représentés, auxquels peuvent être reliés des dispositifs d'entrée/ sortie. Le bus local 18 est contrôlé,- du coté de l'unité d'extension de bus, par une logique 8 de contrôle du bus local. L'unité d'extension de bus 10 est reliée à l'un des bus système 22 par une logique 6 de contrôle de bus système, et au bus local 18 par une logique 8 de contrôle de bus local. L'unité d'extehsion de bus 12 associée est reliée à l'autre bus système 20 par sa propre logique de contrôle de bus système et au bus local 18 par sa propre logique de contrôle de bus local. Le bus système 20 est décrit de manière plus approfondie dans une demande de breviet US au nom de G. Bier et al., intitulée Bus for a Data Processing System et appartenant à- Intel Corporation, et dans les US-A-4 315 308, US-A-4 480 307 et US-A-4 473 880, appartenant également à Intel Corporation. La logique 8 de contrôle du bus système comprend une logique d'arbitrage, de surveillance de pipeline, de reconnaissance d'adresse et de signalisation de bus. La logique- 6 de contrôle du bus système -comporte des tampons pour conserver les requêtes et les réponses lors de -leurs échanges entre le bus et la logique interne 4 de l'unité d'extension de bus. La iogique 8 de contrôle du bus système comporte six tampons, dont chacun est capable de contenir un paquet complet de données de bus. Trois tampons sont attribués aux requêtes sortantes et les trois autres, aux requêtes entrantes. Les unités de contrôle mémoire 50, 51 opèrent le-contrôle des transferts de données avec les zones mémoire 42, 44, 46 et 48 via les bus mémoire 54, 56. Les unités d'extension de bus 10, 12 contrôlent également une antémémoire commune 24, décrite en détail dans une demande de brevet US au nom de D. Johnson et al., déposée le 29 juillet 1986 sous le- numéro 890 859, intitulée Cache Directory and Control et appartenant à Intel Corporation. On se référera maintenant à la figure 2, qui montre la logique nécessaire pour garder la trace de l'état logique de la logique 6 de contrôle du bus système. Cette logique suit jusqu'à six traisactions (requêtes) à la fois sur ie bus système 22, en conservant l'information d'état pour trois requêtes sortantes et trois requêtes: entrantes. Cette information d'état 222 est utilisée par le bloc de contrôle d'interfaçage de bus BICTL (Bus Interface ConTroL) 202, le bloc de contrôle externe EXTCTL (EXTernal ConTroL) 204 et le bloc de contrôle d'arbitrage ARBCTL (ARBitratton ConTroL) 206 pour prendre les décisions correspondant aux actions prévues. Par exemple, l'état de file d'attente " cette unité d'extension de bus détient la première case dans PiQ " en. provenance du multiplexeur de sortie 214 indique au bloc EXTCTL que la réponse suivante sur le bus appartient à.ce composant. L'état " premier dans GnQ " en provenance du multiplexeur de sortie 214 indique au bloc de contrôle EXTCTL qu'il doit envoyer sur le bus une requête à l'instant de requête suivant. La logique de la figure 2 conserve la trace de l'ordre dans lequel les requêtes, les ajournements de réponses, les reformulations de réponses, les associa- tions de requêtes entre les unités d'extension de bus, et gère les nouvelles tentatives après une erreur. La logique de la figure 2 mémorise aussi les bits d'identification dans un tampon FIFO d'identification 224. Les bits d'identifica- tion sont mémorisés quand une requête est envoyée sur le bus système 22. Les bits d'identification du tampon FIFO d'identification sont renvoyés, en même temps que la réponse, à la logique interne 4. Les bits d'identification ne sont pas envoyés sur le bus système, et les réponses sont associées aux requêtes appropriées sur le bus système par réordonnancement. L'ordre sur le bus système est, sauf pour les ajournements de réponse, un ordre FIFO, et tous les composants reliés au bus système conservent la trace de l'ordre. La logique de la figure 2 est une. machine à états dont le fonctionnement sera décrit plus loin en référence aux figures 7 et 8. La logique de la figure 2 est constituée de compteurs, de bascules et de multiplexeurs, et elle est contrôlé depuis. le bloc EXTCTL 204 et le bloc BICTL 202 par des successions de chargements et de prélèvements sur les files d'attente FIFO 230 et 232. La logique conserve la trace de la profondeur de toutes les files d'attente ainsi que de la position, dans la file d'attente, de chaque transaction mémorisée dans la mémoire RAM 212 de la logique de contrôl1e de bus. Comme illustré figure 3, on a réalisé neuf files d'attente d'émission sous forme de compteurs qui gardent la trace de la profondeur des files, d'attente d'émission. Les files d'attente d'émission ont un coté A et un coté B, qui contiennent deux aspects d'une même transaction. En général, les files d'attente A sont les files d'attente primaires et les files d'attente B sont les files d'attente secondaires, qui contiennent des informations différées utilisées lors de la correction des erreurs. Les entrées 252 des files d'attente sont des chargements et des prélèvements qui provoquent l'incrémentation ou la décrémentation des compteurs. La profondeur d'émission est une Sortie 256 donnant l'information de profondeur de file d'attente (le nombre de requêtes présentes dans une. file d'attente). Sur la figure 4, on a réalisé six files d'attente de réception sous forme de compteurs qui gardent la trace de la profondeur des files d'attente de réception. Les files d'attente -de réception ont un coté A et un coté B, qui contiennent deux aspects de la même transaction. En général, les files d'attente A sont les files d'attente primaires et les files d'attente-B sont les files d'attente secondaires, qui contiennent des informations différées utilisées lors de la correction des erreurs. Les entrées 264 des files d'attente sont des chargements et des prélèvements qui provoquent l'incrémentation ou la décrémentation des compteurs. La profondeur de réception est une sortie 266 donnant l'information de profondeur de file d'attente (le nombre de requêtes présentes dans une file d'attente). Comme illusté sur la figure 2, trois cases d'émission 0:2, référencées 208, et trois cases de réception 3:5, référencées 210, conservent l'état de chaque transaction, qui est une requête entrante soit une requête sortante. L'état d'une transaction est décrit par la file d'attente à laquelle la transaction appartient et par la profondeur de la file d'attente dans laquelle elle se trouve. Par exemple, une case de requête sortante pourrait contenir l'état " premier dans la file d'attente "Pipe Queue" (PiQ) ". Les cases d'émission 208 contiennent l'état des requêtes sortantes et des réponses entrantes, et les cases, de réception 210 contiennent l'état des requêtes entrantes et des réponses sortantes. Les cases d'émission sont interfacées aux files d'attente d'émission 230, et sont représentées en détail sur la figure 5. Les cases de réception sont interfacées aux files d'attente de réception 232, et sont représentées en détail sur la figure 6. Le multiplexeur de sortie 214 de la figure 2 génère l'ensemble des informations d'état de case 222 nécessaires aux autres blocs logiques. Le multiplexeur de sortie 214 génère les mots de sélection de mémoire RAM pour les requêtes d'émission, en déterminant quelles cases d'émission sont disponibles pour écrire dans la RAM 212 pendant le paquet suivant. En comparant les adresses RAM d'écriture et de lecture, le multiplexeur contourne la détection 318. Le multiplexeur de sortie produit également l'information d'état de case d'émission 320 pour EXTCTL et BICTL. Cette information d'état indique quelles adresses de la file d'attente d'émission sont occupées par cette composante. Le multiplexeur de sortie 214 'génère les mots de sélection de RAM 313 pour lés requêtes de réception, en déterminant quelles cases de réception peuvent être remplies depuis le bus système 222 pendant le paquet suivant. Le multiplexeur de sortie détermine l'état de la case de réception et produit l'information d'état de la case de réception 321 exploitée par les blocs de contrôle EXTCTL et BICTL. Cette information d'état indique quelles adresses de la file d'attente de réception sont occupées par cette composante. Le tampon FIFO d'identification 224 est le bloc logique qui contient les bits d'identification (0:6). Ces mêmes bits sont retournés à la logique interne 4 avec la réponse. La logique interne 4 utilise ces bits pour identifier la requête à laquelle est destinée la réponse reçue. Puisque les réponses sont retournées à la logique interne 4 dans le même ordre que celui dans lequel elles ont été émises, la logique FIFO d'identification est un simple tampon FIFO. Les bits sont chargés dans le tampon FIFO quand une requête est reçue, et ils sont prélevés de la pile FIFO quand la réponse a été acceptée par la logique interne 4. Les bits de sortie d'identification IDOUT (1:6) sont les bits FIFO effectifs de la rubrique inférieure de la pile. Ceci permet à la logique interne d'examiner et de déterminer'le type de la requête à laquelle correspond la réponse suivante. Outre la pile FIFO, le bloc d'identification FIFOproduit le signal "PopQueue" 226 qui activera la broche de sortie de signalisation "PopQueue" (" chargement file d'attente ") de l'unité d'extension de bus 12 associée. Ce signal est actif quand, lorsque la requête était une écriture, une réponse a été transmise avec succès au circuit de logique interne. Seuls les écritures sont signalées, car les. lectures ne sont pas associées Pour déterminer si la requête était une écriture, la logique interne examine le bit ID1. Files d'attente d'émission Le-bloc 230 des files-d'attente d'émission de la figure 2 est constitué de neuf compteurs de files d'attente et d'un bloc de contrôle des files d'attente d'émission 250, représenté à la figure 3. Les compteurs de files d'attente sont de tailles différentes, fonction des exigences de chaque file d'attente, mais ils sont tous des registres à décalage qui décalent leur contenu vers la gauche au chargement et le décalent vers la droite au prélèvement. Le bloc de contrôle 250 contient la logique nécessaires pour produire les signaux de contrôle 252 pour les compteurs d'émission et le signal de réinitialisation 234 pour les compteurs de réception. Le bloc de contrôle des files d'attente d'émission 250 ajoute des informations à certains signaux de commande de - chargement et de prélèvement pour tenir compte des réponses différées, de la signalisation "PopQueue" et de la préparation des réémissions. Il produit aussi les signaux 254 exigés pour réinitialiser la logique 6 de contrôle du bus système en réponse à des conditions d'initialisation ou d'erreur. Quelques lignes d'état sont générées à partir des signaux de profondeur de file d'attente 256, pour donner des informations au reste de la logique de contrôle du bus système. Files d'attente de réception Le bloc 232 des files d'attente de réception de la figure 2 est constitué de six compteurs à décalage de 4 bits et d'un bloc logique de contrôle des files d'attente de réception 260, représenté à la figure 4. Cinq des compteurs représentent les files d'attente de réception, et un compteur supplémentaire maintient la file d'attente 123 des réponses, qui conserve la trace du nombre de réponses émises depuis ce composant sur le bus système sans avoir été effacées par une condition d'erreur. La fonction de ce compteur 123 est d'activer la ligne d'état "PlRpy" 125 qui indique qu'il n'y a aucune réponse en attente pour un signal sur la ligne BERL de compte-rendu d'erreur de bus. Ce compteur n'est pas interfacé aux cases et ne fait pas partie des diagrammes d'état des figures 7 et 8. Chaque compteur de file d'attente de réception a une capacité de quatre bits, puisque c'est la valeur maximale dont a besoin une file d'attente de réception. Les entrées 261 des compteurs sont les signaux de chargement *et de prélèvement en provenance du bloc EXTCTL 204 et du bloc BICTL 202, et le signal de réinitialisation 234 produit dans les files d'attente d'émission. Le signal de réinitiali- sation 234 est validé-par le signal d'initialisation ou par le signal d'erreur de bus "busErr". Il provoque la remise à zéro de tous les compteurs de file d'attente de réception, sauf celui de la file d'attente de requête libre, qui est réinitialisé à la valeur "3" (le nombre de cases de réception). Le bloc de contrôle des files d'attente de réception 260 crée des combinaisons de signaux -de chargement et de prélèvement en provenance du bloc BICTL et du bloc EXTCTL il pour reconnaitre leecas (décrit plus bas en référence.à la figure 8) o la file d'attente de requêtes doit être contournée. Le bloc BICTL signale le cas du contournement en - validant un signal qui avertit la logique 6 de contrôle du bus système qu'elle doit transférer toute requête entrante directement à la logique interne 4. Le bloc de contrôle des files d'attente de réception 260 crée les signaux appropriés qui provoquent le contournement du registre 124 de file d'attente de requête. Cases d'émission et de réception Comme représenté figure 2, la logique de contrôle du bus système 6 contient six cases 208, 210: un registre de trois cases d'émission, référencées Slot(0:2), et un registre de trois cases de réception, référencées Slot(3:5). Les cases d'émission 208 gardent l'état des transactions d'émission de requêtes et les cases de réception 210 gardent létat des transactions de réception de requêtes. Ces. cases- sont de structure semblable mais diffèrent à deux égards: le nombre de bits d'état et la gestion des erreurs de bus. Les cases d'émission ont besoin de plus de bits d'état pour décrire l'état d'une file d'attente, parce que les files d'attente d'émission sont plus nombreuses que les files d'attente de réception. En outre; les cases d'émission gèrent les erreurs sur le bus par réémission de toutes les requêtes en cours de sortie. Les cases de réception se réinitialisent sur une erreur de bus, car ces requêtes reçues seront réémises. Une case maintient l'état d'une transaction déterminée de la logique de contrôle du-bus système. Quand la logique de contrôle du bus système 6 émet une requête sur le bus système 22, la requête est affectée à-une case,.et elle est mémorisée dans la mémoire RAM 212 de la logique de contrôle du bus système. L'adresse de la mémoire RAM et le numéro de la case sont identiques, pour permettre à la case de générer l'adresse de la mémoire RAM. La case conservera l'état de' cette transaction jusqu'à ce qu'elle ait été-exécutée. Les requêtes entrantes sont mémorisées et affectées à une -case de la même manière. L'état d'une transaction est déterminé par la file d'attente dans laquelle la transaction est placée et par sa profondeur dans cette file d'attente. Les cases d'émission et de réception reçoivent leurs signaux de contrôle du bloc de contrôle d'interfaçage de bus BICTL 202, du bloc de contrôle externe EXTCTL 204 et du bloc de contrôle d'arbitrage ARBCTL 206. Ces blocs de contrôle génèrent les signaux de chargement et de prélèvement des registres FIFO de files d'attente d'émission et de réception et provoquent la décrémentation des comptages des cases ou le chargement de nouvelles informations d'état. Une nouvelle information d'état est chargée en provenance des files d'attente 230, 232. Par exemple, si cette unité d'extension de bus est considérée comme première dans la file d'attente d'allocation et que cette unité envoie une requête, le circuit de contrôle externe EXTCTL génèrera le signal "popGnQ" (" chargement GnQ ") qui provoquera la décrémenta- tion du compteur GnQ, l'incrémentation du compteur PiQ et provoquera le changement de l'état de case de GnQ à PiQ. La valeur de comptage chargée dans le compteur de case est prise sur la sortie 254 du compteur PiQ du bloc des files d'attente d'émission 230. Si le compteur PiQ est chargé à la valeur "3" alors cette valeur "3" est chargée dans le registre de case. Le multiplexeur de sortie 214 génère l'information des états des cases 320, 321 depuis les compteurs de case. Un exemple d'information d'état est " je détiens la première case de PiQ ". En se reportant à la figure 5, les compteurs d'état des cases de réception et d'émission 304, 305 contiennent les bits d'état qui représentent la file d'attente qui est chargée dans cette case. Le codage des états, les valeurs de réinitialisation (AStDef/BStDef) et les valeurs d'erreur (AStErr/BStErr) sont donnés dans le tableau I ci-dessous. TABLEAU I Fenêtre d'émission Fenêtre de réception Etats A Etats B Etats A Etats B FoQ = 0000001 FrQ = 10 TpQ = 0000010 RpQ = 001 GnQ = 0000100 PnQ = 010 PiQ = 0001000 RpQ= 100 RsQ = 0010000 WsQ = 01 - PrQ = 0100000 LcQ = 10 HpQ = 1000000 AStDef = 00000001 BstDef = 00 AStDef = 000 BSrDef = 10 AStErr = 00000010 BstErr = 00 AStErr = 000 BStErr = 10 Chaque compteur d'.état 304, 404 est constitué de cellules d'état qui sont disposées en matrices pour créer le compteur d'état. L'une des cellules d'état (la cellule Qst) a une fonction de chargement pour mémoriser le nouvel état et deux valeurs de réinitialisation. La première valeur de réinitia- lisation est la valeur d'initialisation StDef et la seconde valeur de réinitialisation est la réinitialisation de l'erreur d'état StErr. Dans les cases d'émission, l'erreur d'état est dans un registre 102 de file d'attente temporaire TpQ et la réinitialisation sur erreur est faite sous condition, en fonction de l'état de la case au moment de l'erreur. Les cases de réception sont réinitialisées à la même valeur à -l'initialisation ou sur erreur. Les compteurs de profondeur 306, -308 et 406, 408 des cases d'émission- et de réception suivent la profondeur, c'est à dire la place, de la case dans la file- d'attente. Les compteurs de cases de type A gardent la profondeur des files d'attente de type A et les compteurs de cases de type B garde la profondeur des files d'attente de type B. Les compteurs de profondeur sont décrémentés- à chaque signal de chargement, et chargent une nouvelle valeur quand le 14compteur atteint la valeur zéro. La nouvelle profondeur provient des multiplexeurs d'entrée de case 300, 400 qui sélectionnent la profondeur de file d'attente appropriée à charger. Chaque compteur de profondeur de case est un compteur constitué par un registre à décalage de 4 bits de capacité. La valeur maximale du comptage est déterminée par la profondeur maximale de la profondeur de file d'attente, puisque chaque case peut être dans toutes les files d'attente. Chaque case d'émission et de réception peut être réinitialisée à une valeur unique. Le tableau II ci-dessous donne les valeurs de réinitialisation du compteur d'état de chaque case. TABLEAU II case compte de case de compte de d'émission réinitial. réception réinitial. 0 0001 3 0001 1 0010 4 0010 2 0100 5 0100 Les compteurs de profondeur sont réinitialisés à la valeur d'état contenue dans le compteur d'état, initialisant les cases d'émission de premier, second et troisième rang dans la file d'attente d'émission libre FoQ 100 et les cases de réception de premier, second et troisième rang dans lafile d'attente de réception libre FrQ 120. A la préparation de chaque tentative d'émission, chaque case d'émission est réinitialisée sous condition au premier, second ou troisième rang dans la file d'attente temporaire TpQ 102. Si la case d'émission est dans un état d'absence de nouvelle tentative, il ne changera pas de rang sur une erreur. Les cases de réception sont réinitialisées au premier, second ou troisi- ème rang dans la file d'attente de réception libre FrQ 120 à chaque erreur. Les blocs de contrôle de case 302, 402 produisent tous les signaux de contrôle des compteurs d'état de case et des compteurs de profondeur. Les blocs de contrôle produisent les signaux de prélèvement, de chargement et de recircula- tion, ainsi que les signaux de réinitialisation sur erreur. Chaque multiplexeur d'entrée 300, 400 de la figure 2 donne les entrées des compteurs d'état de case et de profon- deur. Chacun de ces multiplexeurs est constitué de trois parties: un multiplexeur d'état, qui sélectionne les nou- veaux bits d'état de profondeur pour le compteur d'état; un multiplexeur de profondeur, qui sélectionne la nouvelle profondeur d'état; et un multiplexeur de signal de prélève- ment, qui sélectionne le signal de prélèvement approprié pour les compteurs de profondeur de case. Les séquences du multiplexeur d'état pendant les transi- tions de l'état des files d'attente seront exposées en. référence aux figures 7 et 8. Le multiplexeur d'état. détermine l'état de file d'attente suivant sur le bus 303 de la figure 5 à partir des bits de la file d'attente d'état-en cours 222. Par exemple, si une case d'émission est dans la file d'attente d'allocation comme file d'attente suivante, elle ira dans la file d'attente PiQ. Certains des états ont plus d'une valeur possible d'état suivant, et exigent un autre signal pour déterminer cet état suivant. Par exemple, depuis la file d'attente d'émission une case peut aller dans la file d'attente verrouillée si une réponse verrouillée a été reçue, ou dans la file d'attente d'émission libre si la réponse n'est pas verrouillée. Les entrées du multiplexeur d'état sont les bits d'état courant provenant du compteur d'état de case, plus les lignes de signaux de chargement/ prélèvement et d'interfaçage interne requises pour prendre la décision entre deux états suivants possibles. Les sorties génèrent les bits d'état suivant. Le multiplexeur de profondeur sélectionne la profondeur de file d'attente pour l'état de file d'attente suivant. Quand une case change d'une file d'attente à une autre, les bits d'état suivant sont chargés dans le compteur d'état 304 pour représenter ce nouvel état de file d'attente, et les quatre lignes de profondeur de cette file d'attente sont chargées dans les compteurs de case 306, 308. Les lignes de sélection pour le multiplexeur sont les bits d'état en cours (ou d'état courant). Le multiplexeur de signal de prélèvement sélectionnne le signal de prélèvement des compteurs de cases 306, 308 pour chacun des signaux de prélèvement de file d'attente. En utilisant les bits d'état de la case en cours comme lignes de sélection, le multiplexeur de signal de prélèvement sélectionne le signal de prélèvement du registre'(ou de la pile) de la file d'attente dans laquelle cette case est placée. Par exemple, si cette case est dans la file d'attente PiQ, le multiplexeur de chargement sélectionne le signal PopPiQ comme. signal approprié de chargement de compteur de case. Le multiplexeur de sortie 214 rassemble l'état de case 309, 310 pour répondre aux -besoins d'autres blocs de contrôle de bus système, et gère les cas spéciaux qui compliqueraient la gestion des compteurs de case 306, 308 et du compteur d'état 304. Le multiplexeur de sortie 214 génère les mots d'adresses 220 de la mémoire RAM en fonction de la détection 311 de contournement. Il génère aussi des lignes de placement 316,.317 qui indiquent quelles places en file d'attente sont occupées par les transactions sur ce composant. Il gère enfin la remise en ordre des réponses en remettant en ordre les valeurs du compteur de profondeur des cases. Le multiplexeur de sortie est constitué de quatre multiplexeurs plus petits, un pour chaque case. Le multi- plexeur associé à chaque case fonctionne indépendemment des autres, sauf pour les lignes communes qui sont interconnec- tées par des portes OU pour composer les cases. Le générateur de numéro de case génère les mots d'adresse 220, 313 pour l'accès suivant à la mémoire RAM. Le multiplexeur de numéro de case multiplexe dans le temps les mots d'adresse de lecture/écriture, et génère l'état de la ligne de détection de contournement 348. Le placement de case génère un signal "occupé par ce composant" pour des adresses de file d'attente déterminées. Le numéro de case d'une transaction et le mot d'adresse à laquelle elle est mémorisée dans la RAM 212 ont la même valeur. Cette correspondance permet au multiplexeur de sortie de génèrer les mots d'adresse RAM à partir de l'état de case. Six mots d'adresse mémoire RAM 212 sont générés: écriture d'émission, lecture d'émission, adresse d'émission, écriture de réception, lecture de réception, adresse de réception. L'état en cours sur le bus système et l'état du bus interne 7 déterminent si le mot de mémoire RAM qui correspond à cette case sera écrit ou lu au prochain cycle. Par exemple, si une case est dans la file d'attente TpQ 102 d'état temporaire, en attente d'arbitrage ou bien en cours d'arbitrage, et si le bus interne 7 contient une requête sortante, l'envoi d'-une adresse d'écriture pour cette case est validé pour écrire la donnée du bus BiData dans la mémoire RAM 212. Les autres cases ayant suivi la même évolution, l'utilisation de leur état de case ne validera pas l'envoi d'une adresse d'écriture, créant un mot d'adresse décodé sur six bits. Les cinq lignes d'adresse pour chaque intant (les cases d'émission ne générant pas d'adresse de lecture de réception et les cases de réception ne générant pas d'adresse de lecture d'émission) sont multiplexées dans le temps sur trois lignes, et le signal de contournement 318 est généré par le multiplexeur de sortie 310. La détection de contournement est réalisée sur le multiplexeur de sortie 310 en comparant les adresse de lecture et d'écriture à la fois en émission et en réception. Ceci est réalisé par une comparaison bit à bit entre la case et la -ligne de vérification qui est reliée à la sortie des portes OU combinant les diverses cases. Le multiplexage temporel est fait entre les adresses de lecture et d'écriture. Ce multiplexage crée trois lignes d'adresses pour chaque case, soit un total-de dix-huit bits de mot d'adresse. Le multiplexeur de sortie 310 génère toute l'information d'état de case 320 pour les adresses de files d'attente occupées par une case. Cet état est combiné sur la ligne 222 et est fourni aux blocs de contrôle logique EXTCTL 202 et BICTL 204. Le format général des lignes de placement 316, 317 est " PlNxxQ ", par exemple "PllGnQi' qui signifie que l'une des cases est la première dans la file d'attente d'allocation. Quatre lignes de placement, BiRpOk, BiRpP, RdRpOk et RdPdP, ne suivent pas la convention générale. Elles donnent une information de placement tenant compte des réponses différées. Les lignes de placement sont des lignes de précharge/décharge qui sont communes à tous les cases d'un même type d'émission/réception. On se reportera maintenant à la figure 7, qui est un diagramme d'état pour l'envoi d'une requête sur le bus système 22. Chaque état est corrélé avec une case correspon- dante, conformément au tableau III ci-dessous. Une file d'attente est réinitialisée à la valeur donnée & la dernière colonne du tableau III en réponse aux signaux d'initiali- sation ou aux signaux d'erreur de l'avant-dernière colonne. TABLEAU III Nom de la Nom de la Prof. Condition Valeur file cellule file réinitial. réinitial. Files d'attente d'émission A: sortie libre FoQ 3 init 3 temporaire TpQ 3 error, init 3 allocation GnQ 4 error, init 0 pipeline PiQ 4 error, init 0 réponse RsQ 3 error, init 3 association PrQ 3 error*, init 0 maintien HpQ 3 init 0 (): réinitialisation sur erreur seulement lors d'une séparation Nom de la Nom de la Prof. Condition Valeur - file cellule file réinitial. -réinitial. Files d'attente d'émission B: attente WsQ Z error, init O -verrouillée LcQ 2 error, init 0 En se reportant à la figure 7, les files d'attente suivent les séquences d'états successifs de la manière que l'on va indiquer ci-dessous. Files d'attente A Bloc d'état FoQ 100: le bloc FoQ contient les cases libres en attente d'un paquet de données d'une requête d'émission sortante. Cette file d'attente doit avoir une case disponible avant d'accepter une requête entrante. Les signaux SdRdy et OtRqPnd sur le bus 254 sont calculés à. partir de la profondeur de cette file d'attente. Le bloc EXTCTL 204 charge cette file d'attente dans son registre FIFO quand tous les cycles d'une réponse entrante ont été transférés à la logique interne 4. Le bloc logique 202 BICTL prélève cette file d'attente quand une requête sortante commence à-être émise par la logique interne 4. -Quand le paquet émis arrive à destination, l'état passe à la valeur suivante. Bloc deétat TpQ 102: une requête va du bloc d'état FoQ à l'un ou l'autre des blocs d'état TpQ 102'ou PrQ 114 selon que la requête est destinée à l'une ou l'autre des unités d'extension de bus BXU 10, 12. TpQ maintient toute requête en attente sur ordre de la logique 106 d'arbitrage. Ces requêtes sont soit en -attente d'arbitrage soit en cours d'arbitrage. Le bloc logique ARBCTL 206 exploite la présence d'une case dans cette file d'attente pour décider de commen- cer un arbitrage. Les requêtes de cette file d'attente seront réémises sur une erreur. Le bloc BICTL 202 prélève cette file d'attente quand une requête entrante commence son émission depuis le circuit de logique interne ou quand une. requête verrouillée est en cours de réémission. La nouvelle requête est prioritaire. Le bloc logique ARBCTL 206 prélève cette file d'attente quand la requête est donnée en allocation. Quand une allocation est obtenu de la logique d'arbitrage, l'état change de valeur. Bloc d'état GnQ 104: le bloc GnQ maintient l'ordre des allocations données par la logique d'arbitrage ARBCTL 206. La profondeur de cette file d'attente est surveillée par tous les acteurs sur le bus système. Cette file d'attente compte toutes les allocations délivrées par le bus, mais une position individuelle dans la file d'attente n'est gardée que pour les allocations qui appartiennent à ce composant. Le bloc de contrôle EXTCTL 204 utilise l'état de cette file d'attente pour déterminer si la première allocation appartient à ce composant. Si tel est le cas, l'allocation est la première requête suivante à envoyer sur le bus système. Les requêtes de cette file d'attente sont réémises sur une erreur. Le bloc d'arbitrage ARBCTL 206 charge cette file d'attente quand la requête a reçu une allocation. Le bloc de contrôle EXTCTL 204 prélève cette file d'attente quand la requête commence sur le bus système. Quand elle a été envoyée, l'état change de valeur. Bloc d'état PiQ 106: le bloc PiQ contient les requêtes en attente de réponse sur le bus système. La profondeur de cette file d'attente est surveillée par tous les acteurs sur le bus système. Cette file d'attente contient toutes les requêtes sortantes délivrées sur lé bus système, mais chaque composant ne garde que sa propre position dans la file d'attente et la profondeur de file d'attente. Le bloc de contrôle EXTCTL 204 utilise l'état de cette file d'attente pour déterminer si la réponse sur le bus est bien adressée à ce composant. Le bloc EXTCTL 2304 charge cette file d'attente quand une requête commence sur le bus système. Le bloc de contrôle EXTCTL 204 prélève cette file d'attente quand une réponse est vue sur le bus. Quand une réponse est reçue, l'état change de valeur. Bloc d'état RsQ-108 le bloc RsQ maintient la réponse du bus attendant d'être transférée à la logique interne 4. Le bloc de contrôle BICTL 202 surveille-le haut de cette file d'attente pour déterminer si il y a une réponse à envoyer au circuit de logique interne. Le bloc de contrôle EXTCTL 204 charge cette file d'attente quand une réponse arrivante est vue sur le bus, indiquant que le type de la réponse n'est pas une réémission. Le bloc de contrôle BICTL 202 prélève sur cette file d'attente quand le transfert à la logique interne a été accepté. La case prélevée reçoit la file d'attente libre en attente d'une nouvelle requête. Il existe une file d'attente de type B correspondante.: la file - d'attente d'émission WsQ.. Cette fiie d'attente WsQ mémorise aussi les réponses arrivantes sur une longueur de bits juste suffisante pour permettre de détecter une condition d'erreur sur les données. Quand la réponse a été transférée au circuit de logique interne, l'éat change de valeur au niveau du bloc d'état FoQ 100. Bloc d'état PrQ 114: une requête provient du bloc 100 d'état FoQ vers le bloc d'état 102 TpQ ou le bloc d'état 114 PrQ, selon que la requête est destinée à l'une ou l'autre des unités d'extension de bus 10, 12 associées. La file d'attente associée mémorise les requêtes arrivantes à écrire sur le partenaire de cette unité d'extension de bus. Le multiplexeur de sortie. des files d'attente utilise l'état PrQ pour déterminer s'il est nécessaire.de réémettre toute requête pour sa partenaire sur séparation. Le bloc de contrôle BICTL 202 charge cette file d'attente quand la requête d'un partenaire a été transférée sur le bus de données BiData 7; La file d'attente associée est prélevée en recevant un signal "PopQueue" provenant de l'unité d'extension de bus associée. Le partenaire émet le signal PopQueue en réponse à un signal interne PopRsQ qui signifie que la réponse a été transférée au circuit de logique interne. Bloc d'état HpQ 116: la file d'attente de maintien des partenaires conserve les requêtes qui ont été capturées dans un partenaire isolé. La fonction de la file d'attente HpQ est décrite plus loin au chapitre des flux associées. La file d'attente associée de maintien est nécessaire pour exécuter correctement une réémission dans le cas d'un partenaire isolé. Une réponse qui a été retournée et qui a été effacée pour une erreur ne doit pas être réémise mais, si la réponse a été retournée en dehors de son tour, elle ne peut être transférée au circuit de logique interne ou mise en bas de la file d'attente libre. La file d'attente associée de maintien est un organe de mémorisation pour ces requêtes capturées. La file d'attente HpQ est chargée quand le signal "PopQueue" est validé pendant une case de communication associée. Ceci surviendra seulement dans une unité d'extension de bus dont le partenaire est isolé. Une prélèvement est générée quand la requête est libérée à cause d'une réémission d'une requête précédemment exécutée. Files d'attente B Bloc d'état WsQ 110: la file d'attente d'émission contient les réponses provenant du bus et attendant leur transfert avant qu'on les ait déclaré sans erreur. Le mécanisme de réémission réémet les cases dans cette file d'attente. Le bloc logique EXTCTL 204 charge cette file d'attente quand une réponse entrante est vue sur le bus indiquant que le type de la réponse n'est pas une réémission. Le bloc de contrôle EXTCTL 204 prélève sur cette file d'attente quand le transfert sur le bus système a été déclaré correct. Il y a une file d'attente A correspondante, la file d'attente RsQ (Response Queue), qui maintient aussi les réponses arrivantes mais conserve la réponse jusqu'à ce que la logique interne l'ait acceptée. Bloc d'état LcQ 112 la file d'attente de verrouillage contient les requêtes en attente de réémission après qu'une réponse réémise ait été reçue. La logique réémettra automatiquement ces requêtes quand l'interface d'émission sera libre. Les cases de cette file d'attente seront réémises sur une erreur. Le bloc de contrôle EXTCTL 204 charge cette file d'attente quand une réponse arrivante est vue sur le bus et que le type de la réponse est une réémission. Le bloc de contrôle BICTL 202 prélève sur cette file d'attente quand l'interface d'émission est libre et la requête peut commencer le processus de réémission. On se reportera maintenant à la figure 8, qui est un diagramme d'état de la réception d'une requête sur le bus système. Chaque état est rattaché à une file d'attente correspondante, définie dans le Tableau IV ci-dessous. TABLEAU IV Nom de la Nom de la Prof. Condition Valeur file cellule file réinitial. réinitial. - Files de réception A: requête RqQ 4 init, error 0 en cours PnQ 4 init, error 0 attente réponse RpQ 4 init, error 0 Files de réception B: requête libre FRQ 4 init, error 3 requête entrante IRQ. 4 init, error 0 réponse maintenue HRQ 4 init, error 0 Bloc d'état FRQ 120:.le bloc FrQ contient les cases - libres attendantune requête arrivante. Le bloc de contrôle EXTCTL 204 vérifie cette file d'attente pour qu'une case libre puisse accepter une requête arrivante. Le bloc de -. contrôle EXTCTL 204 charge cette file d'attente quand on a trouvé. que tous les cycles d'une réponse sortante étaient sans erreur. Le bloc de contrôle EXTCTL 204 prélève sur cette file d'attente quand le premier cycle dlune requête arrivante a été reçu sur le bus système. Quand arrive le paquet de données reçu de la requête arrivante, la valeur de l'état passe à la valeur suivante. Bloc d'état IrQ 122: la-file d'attente de requêtes arrivantes contient les requêtes provenant du bus système. La profondeur de cette file d'attente est égale à celle de la file d'attente PiQ 106 de la figure 7, et elle est surveillée par tous les composants reliés au bus système. Cette file d'attente contient toutes les requêtes arrivantes délivrées sur le bus système, mais chaque composant garde juste sa propre position dans la file d'attente et la profondeur dans la file d'attente. Le bloc de contrôle EXTCTL 204 utilise l'état de cette file d'attente pour déterminer quand cette partie émettra une réponse vers l'extérieur, ou si le signal RPYDEF de réémission différée sera validé. Le bloc de contrôle EXTCTL 204 charge cette file d'attente quand la requête a commencé à être reçue sur le bus système. Le bloc de contrôle EXTCTL 204 prélève sur cette file d'attente quand le dernier cycle de la réponse correspondante a été déclaré sans erreur sur le bus système. Les files d'attente de type A correspondantes sont RqQ 124, PnQ 126 et RpQ 128. Bloc d'état RqQ 124: la file d'attente RqQ contient les requêtes arrivantes en attente de transfert à la logique interne 4. Le bloc de contrôle BICTL 202 scrute cette file d'attente pour détecter si elle contient en partie supérieure une requête pour cette unité d'extension de bus. Si tel est le cas, alors il s'agit de la requête suivante à envoyer à l'interface interne. Le bloc de contrôle EXTCTL 204 prélève sur cette file d'attente quand le premier cycle d'une requête arrivante est reçue du bus système. Cette file d'attente n'est pas chargée si la requête arrivante ne - s'adapte pa.s à la gamme d'adresses de ce composant-(on vérifie à la fois les adresses physiques et les adresses de communication entre agents). Toutes les autres adresses de communications entre agents sont gérées comme des requêtes normales par le bloc de contrôle. Le bloc de contrôle BICTL 202 prélève cette file d'attente quand le premier cycle de la requête est émis sur l'interface interne. IrQ est la file d'attente de type B correspondante. Une fois la requête acceptée par le circuit de logique interne 4, l'état peut changer. Bloc d'état PnQ 126: ce bloc contient les requêtes qui ont été acceptées par la logique interne 4 mais n'ont pas encore reçues de réponse de -ce circuit 4. Le bloc de -contrôle BICTL 202 utilise l'état de cette file'. d'attente pour déterminer dans quel paquet de données de la mémoire RAM 212 la réponse pourrait être mémorisée. Le bloc de contrôle BICTL 202 charge cette file d'attente quand les - premiers cycles de la requête ont été envoyés aux interfaces internes. Le bloc de contrôle EXTCTL 204 prélève sur cette file d'attente quand le premier cycle de' la réponse est-' envoyé sur le bus système. Une fois une réponse reçue du circuit de logique interne 4, l'état peut changer. -Bloc d'état RpQ 128: le bloc RpQ contient les réponses qui proviennent de la logique interne 4 et sont en attente d'attribution à une case sur le bus système. Une fois la réponse envoyée sur le bus système, l'état change sur le bloc d'état FrQ 120. Le cas simple diémission et de réception d'une requête - est exécuté en suivant l'état d'une seule transaction de la manière décrite ci-dessus. Les diagrammes d'état des figures 7 et 8 iilustrent des états supplémentaires, compliqués par - plusieurs facteurs: -1. Jusqu'à sixtransactions peuvent survenir à la fois. 2. La possibilité de différer des réponses augmente le * besoin de-réordonnancement des files d'attente. 3. Une tinformation d'état suppplémentaire est nécessaire pour obtenir une tolérance aux défauts. 4. Dans le cas d'erreurs, les requêtes exigent une information d'état précédent pour une réémission. 5. Les unités d'extension de bus associées ont besoin d'un suivi des requêtes de l'unité associée. La première difficulté est surmontée en exécutant chaque état du diagramme des figures 7 et 8 dans une pile de type FIFO et en permettant à plusieurs transactions de circuler en même temps. La seconde difficulté de réponse différée est surmonté comme suit: les états qu'il est possible de remettre en ordre sont fournis avec un chemin de recircula- tion qui permet qu'une requête soit extraite ou prélèvée du dessous de la file d'attente et chargée sur le dessus de la. file d'attente dans le même cycle. La troisième difficulté, consistant à apporter une information d'état supplémentaire pour permettre une tolérance aux défauts, est surmontée en admettant des états supplémentaires dans le diagramme d'état. La quatrième difficulté, le réémission, est surmontée en ajoutant des états de transition supplémen- taires pour autoriser que des requêtes retournent à leur état précédent si une erreur survient. L'association, la dernière difficulté, est prise en compte en ajoutant des files d'attente pour suivre l'état d'un partenaire. Flux de requêtes sortantes Initilament, il y a trois cases libres dans une file d'attente sortante libre 100 attendant une requête sortante. Quand une requête est donnée au contrôleur logique du bus, la première case d'émission dans la file d'attente libre sortante 100 est allouée à la requête et la case d'émission tombe dans la file d'attente temporaire 102. Dans la file d'attente temporaire, la case attend la prochaine séquence d'arbitrage sur le bus système et, au bon moment, est soumise à cet arbitrage. Quand une allocation est fournie, la case de requête tombe dans la file d'attente d'allocation 104, o elle attend son tour pour accéder au bus système. Le double trait du bloc de file d'attente d'allocation 104 signifie que cette file d'attente est en profondeur sur le bus. Quand la requête est envoyée sur le bus, la case tombe dans la file d'attente de pipeline 106 PiQ, o elle attend une réponse. La double ligne du bloc de file d'attente de pipeline 106 signifie que cette file d'attente a une profondeur sur le bus. Quand la réponse est présente sur le bus, la case tombe dans la file d'attente de réponse 108. La réponse attend dans la file d'attente de réponse que la réponse puisse être transférée à la logique interne. Après que la réponse ait été acceptée par la logique interne, la case redevient libre et retourne- dans la file d'attente libre 100. En parallèle avec son chargement dans la file d'attente de réponse 108, la case d'émission entre aussi dans la file d'attente d'émission 1110. Le double trait du bloc- 110 d'attente d'émission signifie que cette file d'attente a une profondeur sur le bus. La case d'émission attendra dans la file d'attente d'attente d'émission jusqu'à ce que l'on ait déterminé que cette transaction est sans erreur. Si un signal " activation d'attente de "berl" " devient actif, la case d'émission quittera la file d'attente d'émission 110 deux cycles plus tard; sinon, la case quittera la file d'attente d'émission au cycle suivant. Réponse rediffusée Su la réponse est une réponse rediffusée, la case tombera de la file d'attente d'émission 110 vers la file d'attente verrouillée 112. La case attendra dans la file d'attente verrouillée qu'aucune nouvelle requête ne soit plus acceptée sur le bus double. La case retournera ensuite à la file d'attente temporaire 102 o elle sera réarbitrée et envoyée sur le bus système. Réponse différée Quand une requête est la première requête dans la file d'attente de pipeline PiQ 106 et qu'une réponse différée survient, la requête est extraite de la file d'attente de pipeline et chargée au sohmmet de la pile de pipeline. Quand la requête devient la première requête dans la file d'attente de pipeline 105 et que la réponse revient, alors la requête retombe dans la file d'attente de réponse 108. Si le différé a provoqué la mise en désordre des réponses, toutes les réponses qui sont revenues dans le désordre sont placées en attente de réordonnancement dans la file d'attente de réponse 108. Les requêtes seront prélevées du bas et passées sur le sommet de la file d'attente de réponse 108 jusqu'à ce que la première requête soit en bas de la file d'attente. La' réponse à cette première requête peut ensuite être retournée à la logique interne, et la case d'émission retournera à la file d'attente libre 100. Flux des erreurs Quand une erreur survient, toutes les cases d'émission qui sont dans un état de requête sortante doivent être réémises. Ceci est exécuté en vérifiant les états de chaque case pour voir si une case est dans la file d'attente temporaire 102, la file d'attente d'allocation 104, la file d'attente de pipeline'407, la file d'attente d'émission 110, la file d'attente verrouillée 112 ou la file d'attente de partenaire 114. Si une case est dans l'une de ces files d'attente de requêtes sortantes, elle est renvoyée dans la file d'attente temporaire 102 o le processus d'arbitrage peut être recommencé. Les requêtes de la file d'attente de réponse 108, mais pas celles dans la file d'attente d'émission 110, sont exécutées. A cause du différé de réponse, la réponse est en désordre et ne peut être renvoyée 29 - à la logique interne. Ces cases restent dans la file d'attente de réponse 108 via les cases d'erreurs et, pendant les nouvelles tentatives, la requête précédente est exécutée puis la réponse peut être transférée à la logique interne. La case devient ensuite libre et est renvoyée à la file d'attente sortante libre 100. Association Quand une requête est reconnue par l'unité d'extension de bus 10 comme requête associée, c'est-à-dire une requête gérée par l'unité d'extension de bus 12 associée à la précédente, cette requête est placée dans la file d'attente de partenaires 114. Elle y attend l'arbitrage du partenaire de la demande. L'unité d'extension de bus associée envoie la requête sur le bus système 20. La réponse du partenaire revient et est acceptée par la logique interne de l'unité d'extension de bus 12 associée. Quand l'unité d'extension de bus 12 associée exécute le transfert de la réponse, elle valide la ligne "PopQueue" qui est dans le bus local 18 pour, de cette façon, signaler à l'unité d'extension de bus de prélèver la requête de sa file d'attente associée. La requête est donc prélevée de la file d'attente associée 114 et placée dans le bloc d'état HpQ 1%6. Si les requêtes associées sont dans -le bon ordre, elles sont immédiatement retournées à la file d'attente libre du bloc d'état FoQ 100. Si la réponse est retournée en dehors de l'ordre imposé, elle ne peut être transférée à la logique interne ni mise à la fin de la file d'attente libre FoQ. Ces requêtes piégées sont placées dans la file d'attente de maintien associée. Puisque toutes les requêtes sont surveillées par les deux unités d'extension de bus 10, 12, l'ordre est maintenu en fonction de toutes les requêtes par le moyen du seul bus- local 18. Même si le différé de réponse est désactivé dans le cas de partenaires, les réponses doivent revenir en ordre puisqu'elles auront été envoyées séparément sur les deux bus systèmes appariés 20, 22 correspondant à l'unité d'extension de bus 10, 12 à laquelle la requête a été associée. Un des 30. bus systèmes peut avoir un trafic plus léger ou une réponse mémoire plus rapide, et une requête sur ce bus système peut donc être exécutée plus-tôt qu'une requête précédente sur l'autre bus système. Puisque l'ordre de requête est maintenu sur les deux unités d'extension de bus 10, 12, une réponse hors-ordre sur l'unité d'extension de bus 10 attendra dans la file d'attente de réponse 108 jusqu'à ce que la requête précédente sur l'unité d'extension de bus 12 associée ait été exécutée et signalée " exécutée " à l'unité d'extension de bus 10Q par le moyen de la ligne "PopQueue" 226. Ensuite, la réponse sera retournée à la logique interne 8 et la ligne "PopQueue" signalera l'état au partenaire. Si une erreur survenait avant que la requête précédente n'ait été exécutée, cette requête pourrait être capturée. Le *cas se présente si, la requête ayant été exécutée, elle a été capturée derrière une requête précédente qui n'a pas été exécutée. Dans le cas d'erreurs normales, la capture des requêtes n'est pas un problème, puisque chaque unité d'extension de bus réémettra ses propres requêtes. La requête capturée ne sera pas réémise mais attendra dans la file d'attente de réponse 108 jusqu'à ce que la requête précédente ait été réémise avec succès. Quand l'unité d'extension de bus 12 valide la ligne "PopQueue", la requête capturée sur l'unité d'extension de bus 10 est libérée et peut être transférée à la logique interne 4. La capture constitue un problème dans le cas o une unité d'extension de bus est isolée. Quand une unité d'extension de bus est isolée, elle surveille ses files d'attente pour déterminer si les requêtes exécutées n'ont pas été capturées. Si des requêtes ont été capturées, l'unité d'extension de bus doit le signaler à son partenaire pour que ces requêtes ne soient pas réémises. Cette signalisation est faite sur la ligne "PopQueue". Quand l'unité d'extension de bus restante voit cette signalisation, elle prélève cette requête associée de la file d'attente associée 114 pour la placer dans la file d'attente de maintien associée 116. Les requêtes contenues dans la file d'attente de maintien associée ne sont pas réémises. La case attend dans la file d'attente de maintien associée jusqu'à ce que la requête précédente qui a été capturée ait été réémise et exécutée. L'ordre est maintenant restauré et la case est envoyée dans la file d'attente libre 100. On va mainteant décrire, en référence à la figure 8, le flux des requêtes arrivantes. Au départ, il y a trois cases de réception libres dans une file d'attente 120 de réception libre en attente d'une requête arrivante. Une case libre de réception d'une requête arrivante attend dans la file d'attente libre 12Q jusqu'à ce qu'une requête pour cette unité d'extension de bus soit reconnue sur le bus système. Cette case de réception tombe ensuite dans la file d'attente de requêtes arrivantes 122 et, parallèlement, dans la file d'attente de requêtes-124. Le double trait de la file d'attente de requêtes arrivantes i22 signifie que cette file d'attente a une profondeur sur le bus. La file d'attente de requêtes arrivantes 122 garde les mêmes informations que la file d'attente de pipeline 106 de la figure 7. L'état de cette file d'attente de pipeline 106 doit être maintenu coté réception de telle sorte que l'unité d'extension de bus sache quand.son tour de réponse arrive. Quand une requête est la première requête dans la file d'attente 122 de requêtes arrivantes et qu'une réponse différée survient, la requête est extraite de- la file d'attente de requêtes arrivantes 122 et chargée au sommet de la même file d'attente de requêtes arrivantes. Quand la requête est devenue la première requête de la file d'attente de requêtes arrivantes 122 et que la réponse est retournée, alors la requête est renvoyée à la file d'attente libre 120. La file d'attente de requêtes 124 maintient l'état de toute requête qui a été acceptée et qui est en attente- dans la logique de contrôle de bus. Quand la requête a été transférée à la logique interne, la case de réception tombe dans la file d'attente des en-cours 126, o elle attend une réponse. Quand la réponse est retournée à la mémoire RAM 212 de la logique de contrôle de bus, la case tombe, dans la file d'attente de réponse 128 qui indique à la mémoire RAM 212 de la logique de contrôle de bus qu'elle doit cesser de différer la réponse, et l'émettre sur le bus système au bon moment. Quand la réponse est délivrée sur le bus système, la case tombe hors de la file d'attente de requêtes arrivantes 122 et retourne à la file d'attente libre 120. Quelques cas compliquent encore ce modèle de file d'attente de réception. Le différé de réponse provoque le réordonnancement de la file d'attente de requêtes arrivantes 122, de la même manière que le réordonnancement de la file d'attente de pipeline 106 de la figure 7. Si le signal de contournement 125 est activé, la requête arrivante passera directement du bus système à la logique interne et la file d'attente de requêtes sera contournée. Les erreurs sont gérées de manière très simple dans la file d'attente de réception. Puisque toutes les requêtes sortantes seront redélivrées,.les. files d'attente de réception sont réinitialisées sur une erreur. -EVENDICATIONS 1. Un dispositif pour mettre en file d'attente des requêtes et desréponses sur un bus transmettant des paquets de données en pipeline, caractérisé en ce qu'il comprend: - une mémoire RAM (212) pour fonctionner en mémoire tampon des requêtes de bus en mémorisant l'information d'un paquet de données correspondant.à chaque requête à envoyer sur le bus dans des cases temporelles de bus allouées à chaque- requête; - n cases d'émission (208), pour garder trace de l'état de n requêtes d'émission mémorisées dans la mémoire RAM (212}; - m cases de réception (210), pour garder trace de l'état de m requêtes de réception mémorisées dans la mémoire RAM (212); - une pluralité de compteurs de file d'attente d'émission (230),-destinésà constituer une première logique susceptible d'être.séquencée sur une suite d'états corres- pondant à une suite de files d'attente d'émission, pour suivre une requête sortante et pour suivre une réponse entrante correspondante; - une pluralité de compteurs de file d'attente de réception (232), destinés à constituer une seconde logique susceptible d'être séquencée 'sur-une suite d'états corres- pondant-à une suite de files d'attente de réception, pour suivre une requête entrante et pour suivre une réponse sortante correspondante; - un multiplexeur de sortie (214), relié aux cases d'émission et de réception pour produire des informations d'état correspondant à.l'état de-ces cases; et - des moyens (203, 204, 206), reliés à ce multiplexeur de sortie (214) , -fonctionnant en réponse auxdites informations d'état correspondant-à l'état des cases, pour incrémenter ou décrémenter les compteurs (230) de file d'attente d'émission et les compteurs (232) de file d'attente de réception en fonction d'un protocole prédéterminé- du bus système.' - 2. Le dispositif de la revendication 1, caractérisé en ce que le multiplexeur de sortie (214) comporte des moyens pour produire des signaux de placement qui donnent des informations relatives aux places occupées par les transactions dans les files d'attente. 3. Le dispositif de la revendication 1, caractérisé en ce que le multiplexeur de sortie (214) comporte des moyens pour réordonner des réponses en réordonnant les cases, et des moyens pour produire des signaux de sélection de mot de mémoire RAM (220) par détermination des cases libres à l'écriture à partir de la mémoire RAM (212). 4. Le dispositif de la revendication 1, caractérisé en ce que le multiplexeur de -sortie (214). comporte des moyens pour produire des signaux de sélection de mot de mémoire RAM (313) par détermination des cases libres au chargement à partir du bus système. 5. Le dispositif de la revendication 1, caractérisé en ce que chaque case d'émission et chaque case de réception comporte un compteur de profondeur constitué par un registre à décalage à plusieurs bits dont la valeur maximale de comptage est égale à la profondeur maximale de la file d'attente, le dispositif comprenant également des moyens pour réinitialiser chacun de ces compteurs de profondeur à une valeur qui lui est propre. 6. Le dispositif de la revendication 5, caractérisé en ce que chaque case d'émission et chaque case. de réception comporte un compteur d'état de case destiné à suivre l'état de chaque case dans les files d'attente de réception et d'émission, les compteurs de profondeur et les compteurs d'état étant réinitialisés à des valeurs qui initialisent les cases d'émission à la première, à la deuxième et à la troisième position dans la file d'attente d'émission libre et qui initialisent les cases de réception à la première, à la deuxième et à la troisième position dans la file d'attente de réception libre. 7. Le dispositif de la revendication 6, caractérisé en ce que les compteurs de profondeur et les compteurs d'état sont réinitialisés à des valeurs qui placent les cases de réception à-la première, à la deuxième et à la troisième position dans la file d'attente de réception 'libre à l'apparition d'un erreur.. 8. Un procédé pour pour mettre en file d'attente des requêtes et des réponses sur un bus transmettant des paquets de données en pipeline, caractérisé en ce qu'il comprend les étapes consistant à: a) mémoriser les requêtes sur le bus en mémorisant l'information d'un paquet de données correspondant à chaque requête à envoyer sur le bus dans des cases temporelles de bus allouées à chaque requête; b) garder la trace, dans n -cases d'emission (208) de l'état de n requêtes d'émission mémorisées dans ia mémoire RAM (212); c) garder la trace, dans m cases de réception (210), de l'état de m requêtes de réception mémorisées dans la mémoire RAM (212); d) prévoir une première logique d'états susceptible d'être séquencée sur une suite d'états correspondant à une suite de files d'attente d'émission, pour suivre une requête sortante et pour suivre une réponse entrante correspon- dante; e) prévoir une seconde logique d'états susceptible d'être séquencée sur une suite d'états correspondant à une suite de files d'attente de réception, pour suivre une requête entrante et pour suivre une réponse sortante correspondante; - f) produire des informations d'état correspondant à l'état des cases; et - g) incrémente ou décrémenter, en réponse auxdites informations d'étatcorrespondant à l'état des cases, les compteurs (230)- de file d'attente d'émission et les compteurs (232) de file d'attente de réception en fonction d'un protocole prédéterminé du bus système. 9. Le procédé de la revendication 8, caractérisé par l'étape suivante h) produire des signaux de placement qui donnent des. informations relatives aux places occupées par les transactions dans les files d'attente. 10. Le procédé de la revendication 8, caractérisé par les étapes suivantes: h) réordonner des réponses en réordonnant les cases, et g) produire des signaux de sélection de mot de mémoire RAM (220) par détermination des cases libres à l'écriture à partir de la mémoire RAM (212). 11. Le procédé de la revendication 8, caractérisé par l'étape suivante: h) produire des signaux de sélection de mot de mémoire RAM (313) par détermination des cases libres au chargement à partir du bus système. 12. Le procédé de la revendication 8, caractérisé par ies étapes suivantes: h) prévoir pour chaque case d'émission et pour chaque case de réception un compteur de profondeur constitué par un registre à décalage à plusieurs bits dont la valeur maximale de comptage est égale à la profondeur maximale de la file d'attente,. g). réinitialiser chacun de ces compteurs de profondeur à une valeur qui lui est propre. 13. Le procédé de la revendication 12, caractérisé par les étapes suivantes: g) prévoir pour chaque case d'émission et pour chaque case de réception un compteur d'état de case destiné à suivre l'état de chaque case dans les files d'attente de réception et d'émission; h) réinitialiser les compteurs de profondeur et les compteurs d'état à des valeurs qui initialisent les cases d'émission à 'la première, à la deuxième et à la troisième position dans la file d'attente d'émission libre et qui initialisent les cases de réception à la première, à- la deuxième et à la troisième position dans la file d'attente de réception libre. - 14. Le procédé de la revendication 13, caractérisé par l'étape suivante:. g) réinitialisation des compteurs de profondeur et des compteurs d'état à des valeurs qui placent les cases de réception à la première, à la deuxième et à la troisième pbsition dans la file d'attente de réception. libre à l'apparition d'un erreur.