Brevet FR2645666A1 — publié le 19901012

La présente invention concerne le domaine des micro- processeurs à semiconducteurs. La présente invention a pour objet un procédé de transfert de données par salves, incorporé à l'unité d'in- terfaçage de bus d'un microprocesseur connu sous la dénomination Intel 804860 (souvent appelé processeur 486e). Le microprocesseur 486 est une version améliorée du micro- processeur Intel 80386e (couramment appelé processeur 3860), qui comporte un bus de données interne; de nombreuses pu- blications ont décrits les détails du bus du processeur du - 386. Le processeur 386 comporte également, au sein de la puce, une unité de gestion mémoire. Cette unité assure l'a- dressage, par exemple, d'une antémémoire, de mémoires vives dynamiques, d'une mémoire de masse, etc. Le processeur décrit dans la présente description comporte en outre une antémémoire incorporée à la puce ainsi qu'une unité à vir- gule flottante incorporée à la puce (Intel, 80486, 486, 80386 et 386 sont des marques déposées de Intel Corpora- tion). Pour les requêtes de bus qui nécessitent plus d'un seul cycle de données, de nombreux microprocesseurs peuvent ac- cepter des cycles par salve au lieu de cycles normaux. Un cycle par salve transfère plusieurs octets de données sur le bus pendant un cycle mémoire long. Par exemple, un transfert d'un élément de donnée de 128 bits sur un bus de 32 bits aurait normalement lieu en quatre groupes, chaque groupe contenant quatre octets. L'adresse initiale (par exemple, celle du premier octet) est utilisée par le processeur pour calculer les autres adresses, correspondant aux octets de données suivants. Bien que le concept des transferts par cycles en salve soit bien connu dans ce domaine, on a beaucoup débattu de la manière la plus performante d'ordonnancer les données trans- férées. L'ordonnancement de la salve concerne le choix des adresses pour la séquence de cycles de données multiples. Un choix évident, déjà utilisé, consiste à ordonnancer les don- nées séquentiellement à partir de zéro. Pour l'exemple donné ci-dessus, un ordonnancement de salve séquentiel à partir de zéro commencerait par transférer tout d'abord le double mot sur 32 bits résidant à l'adresse zéro. Les transferts suivants concenrneraient les doubles mots résidant aux adresses 4, 8 et 12, dans cet ordre. Une autre manière antérieure de procéder consiste à transférer d'abord le double mot sur lequel l'utilisateur va vouloir immédiatement opérer puis à incrémenter l'adresse, en parcourant en boucle la ligne d'antémémoire. Cette manière de procéder est appelée procédé de transfert wrap- around burst nibble mode (mode en demi-octet à salve en boucle). Si l'on suppose que l'utilisateur veut accéder au double mot n 3 (le double mot n 3 représentant, par exemple, l'élément de 32 bits mémorisé à l'adresse 12, les doubles mots n 0O à n 3 correspondant aux adresses 0, 4,' 8 et 12, respectivement), l'ordonnancement de la salve reçue sera 12, 0, 4, 8. En d'autres termes, on transfère en premier l'élément de donnée voulu puis on transfère dans l'ordre séquentiel circulaire les autres éléments. Bien que l'on fasse immédiatement référence au double mot résidant à l'adresse 12, les autres doubles mots, à savoir 0, 4 et 8, sont nécessaires pour remplir la ligne d'antémémoire bien que l'on n'y fasse pas initialement référence. Le procédé à salve en boucle présente un avantage impor- tant par rapport au procédé à salve séquentiel à partir de zéro du fait qu'il permet de faire tout d'abord référence au double mot de 32 bits contenant la donnée à laquelle fait référence l'unité centrale de traitement interne, en complé- tant ensuite la salve avec le reste de la ligne d'antémé- moire pour remplir l'antémémoire. Cependant, un inconvénient notable de ce procédé à salve en boucle est qu'il ne peut pas être utilisé pour relier de façon optimale une unité centrale de traitement 32 bits à un bus mémoire 64 bits. La présente invention représente un perfectionnement par rapport à ces procédés antérieurs, qui procure un moyen rapide et performant pour transférer des données vers une région alignée de la mémoire principale. Le nouvel ordon- nancement de salve permet d'accéder en premier aux données intéressantes, puis de remplir ensuite la partie restante de la ligne de l'antémémoire. Il est important de noter que le nouvel ordonnancement de salve autorise la liaison d'une unité centrale de traitement 32 bits à un bus mémoire 64 bits. Outre le fait qu'il permet un transfert à grande lar- geur de bande pour le remplissage des lignes d'antémémoire, l'ordonnancement de salve de la présente invention présente également des avantages pour les systèmes conçus autour d'une unité centrale de traitement 486, ainsi que pour une utilisation dans des systèmes futurs avec des bus plus larges et des dimensions de ligne plus importantes. Ces avantages seront exposés dans la description. On peut également citer comme art antérieur pertinent les signaux de bus associés au Multibus, y compris le Multi- bus II (Multibus est une marque déposée de Intel Corpora- tion). Une autre technique antérieure est donnée dans une demande apparentée, dérivée de la demande déposée aux USA le 14 janvier 1987 sous le numéro 006353 et intitulée High Speed Local Bus and Data Transfer Method, et dans une autre demande apparentée, dérivée de la demande déposée aux USA le ler août 1988 sous le numéro 227078 et intitulée Micropro- cessor Bus Interface Unit, qui appartiennent toutes deux à. la Demanderesse. On peut également faire mention des US-A-4 570 220, US-A4 447 878, US-A-4 442 484, US-A-4 315 308 et US-A-4 315 310. On va décrire un procédé perfectionné de transfert de données en salve entre une mémoire externe/un bus de lon- gueur de ligne L et un microprocesseur ayant un bus de données de largeur W (L et W étant mesurés en bits). Le perfectionnement comprend un nouvel ordonnancement de la salve qui permet d'accéder en premier à l'élément de donnée intéressant, en remplissant le reste de la ligne de l'anté- mémoire en fonction d'une formule déterminée. La suite des autres adresses est produite en effectuant un OU EXCLUSIF entre l'adresse initiale (c'est-à-dire celle de l'élément de donnée intéressant auquel on a accédé en premier) et une configuration de bits qui assure le comptage complet de zéro jusqu'à la longueur de la salve. Avant d'effectuer ce OU EXCLUSIF, on décale vers la gauche la configuration de bits de LOG2(W/8) positions binaires. En variante, la séquence des autres adresses peut être obtenue en effectuant un OU EXCLUSIF entre l'adresse initiale et la quantité (i*(W/8)), i représentant ici encore une configuration de bits qui assure le comptage de zéro jusqu'à la longueur de la salve (la longueur de la salve peut être écrite mathématiquement sous la forme ((L/W)-1)). L'une des caractéristiques de la présente invention est que, pour une ligne de longueur L, la séquence des adresses de la séquence de la salve représente également le préfixe, ou première partie, d'une nouvelle séquence de salve commençant à l'adresse initiale pour une ligne de longueur L*2i. Une caractéristique supplémentaire permet à l'ut; ilisateur de prendre en compte des bus de tailles différentes. On donnera un exemple o un bus d'unité centrale de traitement sur 32 bits est relié à un bus mémoire sur 64 bits. On va maintenant décrire la présente invention, en référence aux dessins annexés, dans le cadre d'un mode de réalisation préférentiel; celui-ci ne doit cependant pas être considéré comme limitatif, mais seulement illustratif. La figure 1 est un diagramme par blocs général montrant les diverses unités constituant le microprocesseur. La figure 2 est un diagramme par blocs de l'unité d'in- terfaçage de bus du microprocesseur. La figure 3 illustre des formes d'onde, pour un cycle en salve élémentaire montrant l'ordonnancement des adresses. La figure 4 illustre des formes d'onde, pour un cycle en salves interrompu. La figure 5 illustre un cycle en salve interrompu avec convolution de l'ordonnancement des adresses. 0 On va décrire un procédé de transfert de données par salve pour microprocesseur. Dans la description qui va suivre, on donnera de nombreux détails particuliers tels que des nombres spécifiques d'octets, etc. afin de permettre une compréhension complète du mode de réalisation préféré de la présente invention. Il sera cependant clair pour l'homme du métier que la présente invention peut être mise en oeuvre sans ces détails particuliers. Inversement, on n'a pas re- présenté en détail les circuits bien connus afin de ne pas alourdir inutilement la description de la présente inven- tion. Schéma d'ensemble par blocs du microprocesseur On a représenté sur la figure 1., sous forme d'un schéma général par blocs, le microprocesseur mettant en oeuvre le procédé de transfert sur bus selon la présente invention. Le microprocesseur comprend une unité d'interfaçage de bus 10 qui est reliée à un bus de données externe sur 32 bits 30 et qui est également reliée à un bus d'adresse 31 et à diverses autres lignes de commande, comme cela sera décrit à propos de la figure 2 (on notera que le terme "donnée" est utilisé de façon générale pour indiquer une information transférée sur le bus de données; ces informations peuvent comprendre des instructions, des constantes, des pointeurs, e1c.). L'u- nité d'interfaçage de bus 10 est reliée par des bus d'a- dresses et de données à une unité de commande d'antémémoire 12. L'unité de commande 12 commande l'accès à l'antémémoire 11. L'unité de commande 12 est reliée à l'unité de géné- ration d'adresses 14, et une unité de pagination 13 est également placée, par l'intermédiaire du bus 37, entre l'unité de génération d'adresses 14 et l'unité de commande d'antémémoire 12. Pour les besoins de la description de la présente invention, on supposera que l'unité de génération d'adresses est la même que celle utilisée dans le microprocesseur Intel 80386 disponible dans le commerce. Les unités de segmentation et de pagination du microprocesseur Intel 80386 sont décrites dans une demande de brevet appa- rentée, correspondant à la demande déposée aux USA le 13 juin 1985 sous le numéro 744389, intitulée Memory Management for Microprocessor, et qui appartient à la demanderesse. Pour les besoins de la description de la présente invention, il n'est pas nécessaire de connaître la configu- ration particulière de l'antémémoire 11 et de l'unité de commande d'antémémoire 12. Les flux de signaux entre l'unité de commande 12 et l'unité d'interfaçage de bus 10 seront décrits, dans la mesure nécessaire à la compréhension de la présente invention, en référence à la figure 2. A l'inté- rieur du microprocesseur, les instructions sont appliquées à l'unité de décodage d'instruction 15. L'unité de décodage coopère une unité de commande 19 dans laquelle sont mémo- risées les instructions de microcode, l'unité de commande 19 délivrant des séquences de signaux de commande du micropro- cesseur. L'unité de décodage d'instruction 15 a été repré- sentée reliée à l'unité de commande 19, les sorties de l'unité de commande étant reliées à toutes les autres unités du microprocesseur. L'unité de données 18 est une unité arithmétique et logique (UAL) qui exécute les fonctions UAL d'une manière semblable à celle du microprocesseur Intel 80386. Le microprocesseur comprend également une unité à virgule flottante 17 permettant d'effectuer des calculs en virgule flottante. La configuration précise de l'unité 17 n'est pas importante en ce qui concerne la présente invention, bien que les transferts des blocs requis par l'unité 17 et l'an- témémoire 11 soient en partie à l'origine de la présente invention. Le mode de réalisation actuellement préféré du micropro- cesseur de la figure 1 peut être réalisé en technologie MOS classique, en particulier en technologie MOS complémentaire (CMOS). Des fréquences d'horloge de 25 MHz ou plus sont possibles avec la technologie CMOS actuelle. Schéma par blocs de l'unité d'interfaçage de bus On a illustré sur la figure 2, entre les lignes en tire- tés 53 et 54, les éléments principaux de l'unité d'interfa- çage de bus 10 de la figure 1. L'unité de commande d'anté- mémoire 12 communique avec l'unité d'interfaçage de bus 10 par l'intermédiaire du tampon de cycle de bus 45. Toutes les adresses mémoire, divers signaux de commande et toutes les données à introduire en mémoire externe sont communiqués à l'unité 10 par l'intermédiaire du tampon 45. Les données en- trantes (chemin de données de lecture) sont communiquées directement à l'unité de commande d'antémémoire 12 par l'in- termédiaire de l'unité d'interfaçage de bus 10. Les données en sortie du tampon 45 sont appliquées au tampon d'écriture 41. Ce tampon a une "profondeur de 4", permettant ainsi de mémoriser temporairement dans l'un des quatre étages du tampon 41 les données provenant du tampon pour quatre cycles de l'unité centrale de traitement. La sortie du tampon 41 communique directement avec le bus de données 30. Des signaux représentant l'adresse mémoire, le type et la longueur du cycle mémoire sont également mémori- sés dans le tampon 41 et associés aux données mémorisées dans chacun des quatre étages. Les signaux représentant le type de cycle de bus, etc. sont appliqués, en provenance du décodeur 44 et via les lignes 46, au tampon 41 et au multiplexeur de cycle de bus et décodeur 42. Le multiplexeur de cycle de bus et décodeur 42 sélectionne les signaux d'adresse, les signaux de type de bus, etc soit en provenance du tampon 41 (lignes 38) soit directement en provenance du tampon 45 (lignes 39) et des lignes 46. La sortie du multiplexeur et décodeur 42 est reliée au verrou 43. La sortie du verrou donne les signaux d'adresse (30 bits d'adresse et 4 bits de signaux d'acti- vation d'octet) sur le bus 31 et les lignes de commande pour la mémoire sur les lignes 33. Quatre bits provenant du tampon 45 sont appliqués au décodeur de cycle de bus 44 afin d'indiquer le type de cycle de bus. Ces bits indiquent jusqu'à seize types -différents de cycles de bus, tels que lecture mémoire, écriture mémoire, lecture/écriture entrée/sortie, pré-recherche, branchement, lecture verrouillée, écriture verrouillée, écriture non achevée, émulation interne au circuit (lecture ou écriture) et lecture et écriture dans l'unité de pagination 13. Les bits de type de cycle de bus sont décodés par le décodeur 44 et utilisés, par exemple, pour commander le multiplexeur 42 et pour délivrer certains signaux de sortie tels que le signal BLAST qui sera décrit plus bas. L'unité de commande de bus 49 reçoit sur la ligne 55, outre divers autres signaux d'entrée qui seront décrits plus bas, un signal de requête de cycle de bus. L'unité de com- mande de bus délivre des signaux de commande sur les lignes 57 aux divers circuits de l'unité d'interfaçage de bus 10, qui comprennent le décodeur de cycle de bus 44, le multi- plexeur de cycle de bus et décodeur 42, le verrou 43 et le tampon 41. L'unité de commande de bus opère en machine à états classique. Le décodeur de cycle de bus 44 délivre le signal BLAST (Burst LAST, quelquefois appelé signal LAST). Ce signal (qui est actif au niveau bas) indique qu'une requête de données au microprocesseur (en entrée ou en sortie) sera satisfaite au prochain signal READY ("prêt") sur les lignes 27 ou 28. Entrées et sorties de l'unité d'interfaçage de bus 10 Les principaux signaux externes d'entrée de l'unité d'in- terfaçage de bus et les principaux signaux de sortie (allant vers des circuits externes) produits par l'unité d'inter- façage de bus 10 sont illustrés sur la figure 2, le long de la ligne 54. Le bus de données 30 est un bus bidirectionnel sur 32 bits. Typiquement, les 32 lignes de ce bus requièrent toutes une liaison à des circuits externes. Le micropro- cesseur délivre une adresse mémoire sur le bus d'adresse 31. Cette adresse consiste en 30 bits de signaux d'adresse et 4 bits d'activation d'octets. Les trois lignes de commande de mémoire 33 indiquent une lecture/écriture eh mémoire, une entree/sortie et le point de savoir s'il s'agit d'une donnée ou bien d'une commande (par exemple, une pré-recherche en mémoire ou bien une lecture de donnée). Le statut d'adresse (ADS) est un signal actif au niveau bas sur la ligne 22, indiquant que l'adresse sur le bus 31 est valide. Les requêtes de cycle mémoire par le microprocesseur nécessitent généralement la lecture ou l'écriture de 32 bits de donnée en mémoire (les transferts plus importants tels que ceux associés à une antémémoire seront décrits plus bas). Dans certains cas, la mémoire peut être limitée par un bus de 8 bits ou de 16 bits. Si tel est le cas, la mémoire délivre un signal approprié sur les lignes 34 ou 35. Le signal sur la ligne 35 (taille de bus = 8) indique que le transfert sera satisfait par des transferts sur 8 bits, tandis que le signal sur la ligne 34 (taille de bus = 16) indique que la requête sera satisfaite par des transferts sur 16 bits. Les lignes 34 et 35 sont reliées au décodeur de cycle de bus 44 et leur utilisation, en particulier pour la production du signal BLAST sur la ligne 29, sera décrite plus loin dans la présente invention. Comme on l'a indiqué, le microprocesseur comporte une antémémoire incorporée à la puce. Certaines données sont destinées à être mémorisées dans l'antémémoire. Des circuits externes examinent les adresses produites par le micropro- cesseur et déterminent si une adresse'donnée tombe dans le domaine adressable destiné à une mémorisation dans l'anté- mémoire. Tel est généralement le cas pour les instructions, les constantes, etc., et tel n'est généralement pas le cas pour les données qui sont partagées. Si les circuits ex- ternes déterminent que la donnée requise est "antémémorisa- ble", c'est-à-dire qu'elle doit être mémorisée dans l'anté- mémoire, on retourne alors le signal KEN (activatif au ni- veau bas) sur la ligne 36. Ce signal est appliqué au décodeur 44, et il est utilisé pour produire le signal BLAST. Le signal d'entrée sur la ligne 23 est un signal HOLD ("maintien") ordinaire, et le signal de sortie sur les lignes 24 est une confirmation de maintien. Le signal d'en- trée sur les lignes 25 (maintien d'adresse) indique que le bus externe doit être immédiatement rendu flottant. On pro- cède ainsi pour empêcher une collision entre le système et d'autres équipements reliés au bus. La ligne 26 donne un statut d'adresse externe. Les lignes 27 et 28 reçoivent, respectivement, un signal READY ("prêt") et un signal BURST READY ("prêt pour une salve"). Ces signaux sont également appliqués au décodeur de cycle de bus 44. Ordonnancement de la salve Pour les requêtes de bus qui requièrent plus d'un seul cycle de donnée, le microprocesseur de la présente invention peut accepter des cycles en salve au lieu de cycles normaux. Dans ce cas, on échantillonne (signal STROBE) un nouvel élément de donnée dans le processeur 80486 à chaque impul- sion d'horloge, au lieu de le faire à la cadence maximale d'un cycle d'horloge sur deux, comme dans le cas de cycles qui ne sont pas en salve. En outre, les adresses des élé- ments de donnée dans les cycles en salve tombent toutes dans la même zone alignée sur 16 octets (correspondant à une li- gne d'antémémoire interne du 80486), et l'adresse des trans- ferts subséquents peut être aisément calculée à l'avance par matériel de l'extérieur à partir de l'adresse courante. La réunion de ces avantages permet de concevoir un système de mémoire externe capable de remplir rapidement une ligne d'antémémoire interne du 486. Comme indiqué précédemment, la présente invention permet à un programmeur d'aller recher- cher aussi rapidement que possible, c'est-à-dire dans la première partie d'un transfert en salve, un élément de donnée dont a besoin l'instruction courante. Les autres élé- ments de donnée de la ligne d'antémémoire sont obtenus d'une manière qui est optimale pour toute largeur de bus inféri- eure à la longeur de la ligne d'antémémoire. Dans les systèmes conçus autour de l'unité centrale de traitement 80486, on doit réaliser, un système mémoire avec deux blocs de mémoire entrelacés de 32 bits qui sont réduits à un bus de données unique sur 32 bits par multiplexage, afin de pouvoir correspondre au séquencement sur un cycle d'horloge de la salve, autorisant ainsi une largeur de bande maximale pour le bus. Ceci signifie que le système mémoire est en fait une mémoire sur 64 bits qui est réduite par multiplexage pour permettre le transfert vers les broches de données de l'unité centrale de traitement 80486. L'ordonnan- cement de salve de la présente invention est optimisé pour cette configuration en ce qu'il va transférer les deux parties de la région voisine de 64 bits de mémoire (les doubles mots auxquels on s'intéresse provenant des deux blocs mémoire de 32 bits) afin d'accéder à la région voisine de 64 bits suivante. Cette facilité de connexion d'une unité centrale de traitement 32 bits à une mémoire/à un bus sur 64 bits peut être généralisée de deux manières. Tout d'abord, il est possible de connecter une unité centrale de traitement ayant un bus de largeur W à n'importe quelle mémoire ou bus dont la largeur est de (2n)-W, n étant un entier. Dans l'exemple donné plus haut, ceci correspond à W = 32 et n = 1. En second lieu, il est possible de connecter une unité centrale de traitement ayant une dimension de ligne L à une mémoire/à un bus ayant une taille de ligne (2n)-W, m étant ici encore un entier (éventuellement différent). L'ordonnancement de salve de la présente invention autorise également des longueurs de ligne disparates car, avec une largeur de bus donnée fixe (par exemple 32 ou 64 bits), la séquence de salve pour une ligne de longueur donnée est toujours la première partie de la séquence de salve de toute ligne de iongueur supérieure (en supposant que les dimensions de ligne sont des puissances de deux). Par exemple, l'ordonnancement de la salve pour faire référence à une adresse de 24 modulo 32 (c'est-à-dire 24, 56, 88,...) sur un bus de 32 bits va générer les séquences d'adresses pour une ligne de 16 octets et une ligne de 32 octets (la suite pour la ligne de 32 octets étant indiquée ci-dessous entre crochets). La ligne supérieure montre l'adresse décimale (modulo 32), tandis que la ligne infé- rieure montre l'adresse sous forme binaire: 24, 28, 16, 20, [8, 12, 0, 4] 11000, 11100, 10000, 10100, [01000, 011100, 00000, 00100] Un exemple semblable en est la référence à 4 modulo 32: 4, 0, 12, 8, [20, 16, 28, 24] , 00000, 01100, 01000, [10100, 10000, 11100, 11000] De ces exemples, on peut induire une formulation mathé- matique de la génération d'adresses de salve, sous forme d'une fonction dépendant de la longueur de ligne L et de la largeur de bus W: Ai = Ao e (i OU EXCLUSIF entre l'adresse d'origine Ao et une configu- ration de bits qui assure le comptage de zéro jusqu'à la longueur de la salve (=(L/W)-1). Avant l'opération OU EXCLU- SIF (représentée par la notation "e"), on décale vers la gauche la configuration de bits (cette opération étant représenté par la notation " 00000, 00100, 01000, 01100, [10000, 10100, 11000, 11100] On peut, d'une autre manière, obtenir le même ordon- nancement de salve par l'algorithme suivant: Ai = Ac a (i*(W/8)) Si l'on utilise cet algorithme, on effectue un OU EX- CLUSIF entre l'adresse initiale référencée (par exemple Ao) et le produit de la séquence de la configuration de bits (par exemple i = 0, 1,... ((L/W)-1)) par la quantité W/8. On notera que les deux algorithmes donnent des séquences de salve identiques. De ces formulations, il est évident que, pour une largeur de bus W donnée, la séquence d'adresses pour mettre en salve une ligne de longueur L est le préfixe de la séquence d'adresses pour mettre en salve une ligne de longueur L*2i. Ainsi, la présente invention présente la propriété de permettre à l'utilisateur de mélanger et d'associer des dimensions de ligne différentes. Au lieu d'avoir une valeur fixe de 128 bits, le programmeur peut travailler dans un système avec des lignes de 128, 256, 512, 1024, etc. bits, et le transfert des données sur le bus fonctionnera toujours de façon parfaitement adaptée. Ceci est dû au fait que, pour une ligne courte, l'ordonnancement de la salve est le préfixe de l'ordonnancement de salve d'une ligne plus longue, comme expliqué plus haut. La pos- sibilité de mélanger et d'associer des dimensions de ligne différentes est extrêmement importante, car il n'existe aucun standard fixé pour les dimensions de ligne de mémoire/ de bus dans le domaine des microprocesseurs. Pour montrer que cette séquence de salve permet d'assurer un couplage parfaitement adapté avec des mémoires/des bus de dimensions différentes, il est nécessaire de développer la formule afin d'identifier les adresses transférées lors d'un cycle isolé. A cet effet, on utilisera la notation d'une séquence d'octets par transfert. Cette "extension de do- maine" a lieu dans les bits "éliminés" par le décalage de la précédente notation, car ils correspondent tous les deux à la largeur du bus. Le domaine est indiqué par la notation "AdrInf... AdrSup", "AdrInf" étant l'adresse du premier octet du transfert et "AdrSup" étant l'adresse du dernier octet du transfert, et tous les octets compris entre AdrInf et AdrSup participant au transfert. Dans le cas d'un bus sur 32 bits, on noterait ceci sous la forme d'un transfert du domaine bbb00... bbbll par un unique cycle de donnée sur un bus de 32 bits. Si l'on utilise l'exemple précédent d'un bus de 32 bits et d'une ligne de 128 bits [de 256 bits] on obtient les séquences suivantes: 00000... 00011, 00100... 00111, 01000... 01011, 01100... 01111, [10000... 10011, 10100... 10111, 11000... 11011, 11100... 111111 Si l'on utilise un bus de 64 bits et une ligne de 128 bits [256 bits], on obtient la séquence suivante: 00000... 00111, 01000... 01111, [10000... 10111, 11000... 111111 Ceci illustre l'avantage majeur de ce nouveau procédé de mise en salve des données dans un système de microproces- seur, à savoir le fait que le procédé s'adapte naturellement à des mélanges de longueurs de ligne et de tailles de bus. L'adaptation à des longueurs de ligne différentes est aisée car la séquence de salve commençant à une adresse Ao quel- conque est, pour une longueur de ligne donnée L, le préfixe (c'est-à-dire, la première partie) de la séquence de salve pour la séquence commençant à la même adresse pour toutes longueur de ligne qui est une puissance de 2-L (=L-2i). Comme illustré dans ce dernier exemple, on peut coupler ensemble aisément des bus de largeurs différentes car, pour un bus étroit, la séquence couvre le domaine de données transféré par un bus plus large. Un bus de largeur W utilise les quatre premiers cycles pour prendre le domaine de don- nées d'un bus de largeur 4W et un bus de largeur 2W utilise deux cycles pour prendre ces mêmes données, chaque cycle du bus 2W prenant en un cycle des données que le bus de largeur W prend en deux cycles. Cycles en salves La mise en oeuvre des cycles en salves utilisant le procédé d'ordonnancement de salve décrit plus haut a lieu par l'intermédiaire de la broche BURST READY ("prêt pour la salve), désignée BRDY# (la notation "#" étant utilisée pour indiquer que le signal est actif au niveau bas). Cette broche indique au microprocesseur de l'invention que l'on est prêt pour la salve. Pour tous les cycles qui ne peuvent pas être mis en salve, par exemple une confirmation inter- rompue et un arrêt, cette broche a la même fonction sur le 80486 que la broche "prêt" normale RDY#. Lorsqu'on la retourne en réponse à un cycle que l'on peut mettre en salve, le microprocesseur s'attend à ce que le système mé- moire externe exécute un transfert en salve. Si, à la même impulsion d'horloge, BRDY# et RDY# sont tous deux retournés, on ignore BRDY#. Le cycle en salve le plus rapide a besoin de deux impulsions d'horloge pour que le premier élément de donnée soit retourné au processeur, les éléments de donnée suivants étant retournés à chaque impulsion d'horloge. Les cycles en salve n'ont pas besoin de retourner des données à chaque impulsion d'horloge. Le microprocesseur va seulement échan- tillonner des données vers la puce lorsque l'un ou l'autre des signaux RDY# ou BRDY# sera actif. Ainsi, pour des opérations en salve, on n'a pas besoin de générer BRDY# à chaque impulsion d'horloge. Durant chaque partie du trans- fert en salve, la broche BLAST# indique si la salve prendra fin au prochain signal "prêt". Le microprocesseur force BLAST# à l'état inactif si l'impulsion d'horloge BRDY# est retournée, indiquant qu'un plus grand nombre de cycles de données est nécessaire pour achever la salve. Si BLAST# est forcé à l'état actif lors de l'impulsion d'horloge à la- quelle BRDY# est retourné, le transfert en salve s'est achevé et le microprocesseur va piloter un nouveau cycle de bus en sortie, ou bien le bus va passer à l'état inactif. Comme la sortie BLAST# est une fonction du signal sur la broche d'activation d'antémémoire (KEN#) et des broches de dimensionnement de bus BS8# et BS16# échantillonnées en entrée lors de l'impulsion d'horloge précédente, BLAST# n'est pas valide lors de la première impulsion d'horloge d'un cycle de bus, et n'est échantillonné que lors de la seconde impulsion d'horloge et des impulsion d'horloges sui- vantes, lorsque RDY# ou BRDY# sera retourné. Au commencement de n'importe quelle lecture ou prére- cherche, le microprocesseur de la présente invention pré- borsente l'adresse pour la donnée demandée. Comme décrit plus haut, lorsque le processeur 80486 convertit un cycle en un remplissage d'antémémoire, le premier élément de donnée retourné doit correspondre à l'adresse envoyée en sortie par le microprocesseur, à l'exception du fait que toutes les activations d'octets doivent être prises comme étant actives. Ceci reste vrai que le système externe réponde par la séquence de cycle de bus normal ou par un cycle en salve. Un exemple d'ordonnancement des adresses de bus tel que décrit dans la section précédente est donné sur la figure 3. Les lignes verticales 80 à 85 représentent les instants auxquels apparaissent les signaux d'horloge interne (par exemple, des signaux à 25 MHz). La forme d'onde ADS# indique que, après l'instant 80, le microprocesseur délivre sur la ligne 22 un signal indiquant qu'une nouvelle adresse est présente sur le bus d'adresse 31. Les signaux d'adresse sont illustrés avec les nouveaux signaux d'adresse qui deviennent valides de la manière indiquée par la transition 86. On notera que, dans le cas de la figure 3, la broche d'activation d'antémémoire KEN# est amenée active au niveau bas à l'instant 81 avant le premier signal BRDY#. Ceci a pour effet de transformer le cycle de données extern2s en un remplissage d'antémémoire en plusieurs cycles de données. Si des états d'attente surviennent, le microprocesseur permet à la broche KEN# de changer d'état plusieurs fois avant le premier signal "prêt" (qu'il s'agisse de RDY# ou de BRDY#), et ceci aussi longtemps qu'il reste au niveau bas avant l'impulsion d'horloge précédant le premier signal "prêt". * La donnée Ao provenant de l'adresse initiale est échan- tillonnée. ves le microprocesseur à l'instant 82 lorsque BRDY$ est actif au niveau bas. La broche BRDY# indique que le système externe a présenté des données valides sur les broches de données en réponse à une lecture, ou que le système externe a accepté la donnée du microprocesseur en réponse à une requête d'écriture. Les autres éléments de donnée utilisés pour remplir l'antémémoire sont transférés aux instants 83, 84 et 85. L'ordonnancement de la salve utilisé pour transférer les données dans le microprocesseur est indiqué ci-dessous dans le tableau 1. Par exemple, si la première adresse était '104', les trois adresses suivantes de la salve seront '100', '10C' et '108' (en utilisant la notation hexadécimale). TABLEAU 1 ire adresse 2e adresse 3e adresse 4e adresse 0 4 8 C 4 0 C 8 8 C 0 4 C 8 4 0 Les séquences illustrées sur ce tableau 1 acceptent aussi bien des systèmes ayant des bus de 64 bits que des systèmes ayant des bus de 32 bits. La séquence s'applique à toutes les salves, que l'objet de la salve soit de remplir une ligne d'antémémoire, d'effectuer une lecture sur 64 bits, ou bien d'exécuter une pré-recherche. En outre, si BS8#/BS16# est retourné, le microprocesseur commence par achever le 2 transfert du double mot courant avant de progresser au double mot suivant. Ainsi, une salve BS16# pour l'adresse 4' présente l'ordonnancement suivant: 4-6-0-2-C-E-8-A. Certains systèmes mémoire peuvent ne pas être capables de répondre par des cycles en salve avec l'ordonnancement dé- fini par le tableau 1. Pour tenir compte de tels systèmes, le microprocesseur de la présente invention permet d'inter- rompre un cycle de bus à tout moment. Dans ce cas, le micro- processeur va automatiquement générer un autre cycle de bus normal (auquel le système externe pourra répondre par un autre cycle en salve) pour achever le transfert de données. On dira qu'il y a "cycle en salve interrompu". Un exemple d'un tel cycle est donné figure 4. Sur la figure 4, pour signaler au microprocesseur un cycle en salve interrompu, le système a seulement besoin de retourner RDY# au lieu de BRDY#. Ceci est illustré à l'instant 93, o RDY# est actif au niveau bas et BRDY# n'est pas retourné valide. On notera que, après que RDY# ait été retourné au microprocesseur, il génère immédiatement un autre cycle de bus déclenché par ADS#, car BLAST# indique que le transfert de données n'est pas encore achevé. On no- tera que le signal KEN# n'a pas besoin d'être retourné actif pour le premier cycle de'données de la seconde partie du transfert. Ceci est dû au fait que le cycle a déjà été converti en un remplissage d'antémémoire par le premier cycle généré par le microprocesseur. On notera également que, dans cet exemple et sur la figure 4, la première moitié et la seconde moitié du transfert sont, chacune en ce qui la concerne, un transfert par salve, de deux cycles de données de long dans chaque cas. L'une des conséquences de l'in- terruption des transferts par salve est qu'il est possible de prédire l'adresse suivante plus ou moins convoluée. Un exemple d'ordonnancement convolué est illustré figure 5. Lors du remplissage de la ligne d'antémémoire, si le microprocesseur demande l'adresse 104 et que le système retourne RDY# (comme cela a été illustré à l'instant 102 sur la figure 5), le microprocesseur va délivrer en sortie une nouvelle requête (en produisant ADS#) à l'adresse '100'. ADS# est produit à nouveau à la transition 107. Si le système retourne BRDY#, le microprocesseur va ensuite deman- der/attendre l'adresse 't10C'. Ainsi, l'ordonnancement correct est déterminé par le premier cycle du transfert, conformément aux explications données plus haut concernant l'ordonnancement de la salve. Il se peut que ce ne soit pas le premier cycle de la salve si le système mélange RDY# et BRDY#. Un matériel extérieur peut distinguer le premier cycle d'un transfert en notant l'état de BLAST# lors du cycle précédent. Bien entendu, ceci est nécessaire uni- quement si le matériel externe souhaite mélanger RDY# et BRDY# et produire ses propres adresses de salve, car le processeur délivre toujours l'adresse correcte pour toutes les parties de la salve. Les cycles en salve peuvent également être retournés sous forme de cycles sur 8 ou 16 bits, si BS8# ou BS16# sont actifs. Dans ce cas, le cycle en salve s'allongera à une longueur de 16 cycles de données. Le séquencement des adres- ses est le même que si les cycles en salve n'étaient pas retournés, et le microprocesseur attend les données sur les mêmes lignes de données que si les données n'avaient pas été retournées en un cycle en salve. On notera également qu'une lecture non antémémorisable unique de 32 bits par le micro- processeur pourrait être effectuée par le microprocesseur sous forme de quatre cycles de données en salve sur 8 bits. De la même façon, une écriture unique de 486 sur 32 bits pourrait être effectuée sous la forme de quatre cycles de données en salve sur 8 bits (les écritures en salve ne peuvent avoir lieu que si BS8# ou BS16# est activé). REVENDICA'TIONS 1. Un procédé pour générer, dans un microprocesseur ayant un bus de données de largeur W relié à une ligne externe de longueur L, une suite d'adresses en salve pour transférer des données de la ligne externe vers le bus interne, carac- térisé en ce qu'il comprend les étapes consistant à: (a) sélectionner une adresse d'origine, et (b) effectuer un OU EXCLUSIF entre cette adresse d'ori- gine et une configuration de bits, cette configuration de bits représentant un nombre binaire compris entre zéro et la longueur de la salve avec décalage vers la gauche de LOG2(W/8) bits, de sorte que ce OU EXCLUSIF donne les autres adresses de ladite suite. 2. Le procédé de la revendication 1, dans lequel L = (2n)*W, o n est un entier. 3. Le procédé de la revendication 2, dans lequel ladite suite d'adresses représente le préfixe d'une nouvelle sé- quence en salve commençant à ladite adresse d'origine pour une ligne dont la longueur est égale à L*2i. 4. Le procédé de la revendication 3, dans lequel, le microprocesseur comprenant une antémémoire interne (11), il est prévu en outre l'étape consistant à: (c) remplir cette antémémoire interne par les données auxquelles font référence lesdites autres adresses. 5. Le procédé de la revendication 4, dans lequel W = 32 bits et L = 128 bits. 6. Un procédé pour transférer des données dans un microprocesseur comprenant une antémémoire interne (11), un jeu d'instructions exécutables et un bus interne (37) de largeur W, ce microprocesseur délivrant des signaux d'adresse pour un transfert de données en salve sur une ligne externe (30) de longueur L vers l'antémémoire, procédé caractérisé en ce qu'il comprend les étapes consistant à: (a) sélectionner une adresse initiale Ao afin de retrouver l'élément de donnée nécessaire à l'instruction courante depuis la ligne externe, et (b) retrouver, afin de remplir l'antémémoire, les autres éléments de donnée conformément à la séquence d'adresses donnée par la relation: Ai = Ao 8 (i " LOG2(W/8)), o Ai représente la iieme adresse desdits autres éléments de donnée de la séquence, avec i = 0, 1, 2,... ((L/W)-1). 7. Le procédé de la revendication 6, dans lequel L = (2n)*W, o n est une quantité entière. 8. Le procédé de la revendication 7, dans lequel la séquence d'adresses représente le préfixe d'une nouvelle séquence en salve commençant à ladite adresse d'origine pour une ligne de longueur L-2i. 9. Le procédé de la revendication 8, dans lequel ledit transfert de données a lieu en un seul cycle mémoire du microprocesseur. 10. Un procédé pour mettre en salve des données dans un système microprocesseur, ce système microprocesseur comprenant un microprocesseur avec un bus interne (37) de largeur W relié à un bus/une mémoire externe avec une ligne (30) de longueur L, procédé caractérisé en ce qu'il comprend les étapes consistant à: (a) délivrer une première adresse Ao pour accéder à un premier élément de donnée, et (b) générer une séquence d'autres adresses afin de retrouver les autres éléments de donnée se trouvant sur ladite ligne, conformément à la relation: Ai = Ao 0 (i-(W/8)), o Ai représente la iieme adresse de ladite séquence, avec i = 1, 2,... ((L/W)-1). 11. Le procédé de la revendication 10, dans lequel L = (2n)'W, o n est un entier. 12. Le procédé de la revendication 11, dans lequel ladite séquence d'adresses représente le préfixe d'une nouvelle séquence en salve commençant à l'adresse initiale pour une ligne de longueur L-2i. 13. Le procédé de la revendication 12, dans lequel, le microprocesseur comprenant une antémémoire interne (11), il est prévu en outre l'étape consistant à: (c) remplir cette antémémoire interne par les données auxquelles font référence lesdites autres adresses. 14. Le procédé de la revendication 13, dans lequel W = 32.