Brevet FR2839373A1 — publié le 20031107

URGENCE D'UTILISATION DE DETECTION POUR CONTINUER AVEC D'AUTRES HEURISTIQUES AFIN DE DETERMINER DES EVENEMENTS DE COMMUTATION DAN S UNE UCT TEMPORELLE A FILS MULTIPLES Contexte de l' invention - La mult iprogrammat ion temporel le est connue dans l'art en tent que technique qui utilise un ensemble de ressources d' execution afin d' executer des > ou des > multiples. Ces ressources d' execution comprennent souvent une matrice d' unites d' execution de pipeline. Les instructions pour un fil de programme vent traitees via le pipeline jusqu'a ce qutil cafe; dans un evenement de >, ces instructions calees vent ensuite retirees et les instructions provenant d'un autre fil vent injectees dans le meme pipeline de facon a utiliser de maniere efficace les ressources d' execution. La multiprogrammation temporelle donne ainsi l'apparence d' unites centrales de traitement multiples ( >). Chaque fil traite via les unites d' execution comme si le programme avait le controle entier des unites d' execution; l' activation et la desactivation des divers fils se produit dans la logique de commande materielle se basant sur des evenements de commutation multiples dans une tentative d'utiliser au maximum les unites d' execution. Il existe une penalite associee aux evenements de commutation susmentionnes. En consequence, l'art anterieur a developpe certains criteres objectifs pour un evenement de commutation. Dans un exemple, une absence d'informations dans l'antememoire lance un evenement de commutation parce que le processeur doit acquerir les donnees de la memoire centrale. Dans un autre exemple, un compteur de temporisation compte les cycles d'une execution de fil et active une commutation automatique pour une duree d' execution de fil hors-limite. Les effete negatifs des evenements de commutation doivent, de plus, etre reduits dans les processeurs a haute performance. En reduisant ou en ameliorant le traitement des evenements de commutation, un processeur aura une performance accrue, en ameliorant l'efficacite de traitement des instructions a travers des fils multiples. Une caracteristique de l' invention est. par consequent, de fournir un processeur ayant une logique intelligente pour traiter et commuter avec efficacite des programmes a fils multiples via le processeur. Plusieurs objets et autres caracteristiques de l' invention vent clairs dans la description qui suit. Resume de ['invention Les brevets suivants fournissent un contexte utile de l' invention: brevet americain N 6 188 633; brevet americain N 6 105 123; brevet americain N 5 857 104; brevet americain N 5 809 275; brevet americain N 5 778 219; brevet americain N 5 761 490; brevet americain N 5 721 865; et le brevet americain N 5 513 363. Dans un aspect, une unite de traitement de l' invention a de multiples pipelines d/instructions pour traiter les instructions provenant de fils multiples. Meme si ce n'est pas necessaire, chaque fil peut comprendre un identificateur d'urgence a l'interieur de ses instructions de programme. L'unite de traitement a un controleur de commutation de fil pour contr81er le traitement d' instructions via les divers pipelines. Le contraleur de fil commande egalement les evenements de commutation pour se deplacer d'un fil a un autre a l'interieur des pipelines. Le controleur peut modifier l'urgence d'un fil quelconque tel que via la modification de l'identificateur d'urgence. Le terme >, utilise ici, signifie generalement une abstraction sur la maniere dont le fil progresse (ou va progresser) a l'interieur du pipeline; c'est egalement une abstraction sur la nature d'urgence du fil pensee par la logique du programme ou du processeur. A titre d'exemple, une urgence du fil peut etre >, > ou >, ou de plus quantifiee avec un identificateur a 3 chiffres, fournissant, par ce moyen, differentes solutions evenementielles de commutation au traitement du fil dans les pipelines cales. Si, par exemple, il y a une absence d' instructions relatives au fil dans l'antememoire, le controleur peut diminuer l'urgence du fil, par exemple, la faire passer d'elevee a moyenne, ou de 5 a 4. Les absences d'informations supplementaires dans l'antememoire peuvent diminuer encore l'urgence du fil, comme de moyenne a faible, ou de 4 a 3. Le controleur de fil utilise de preference certaines heuristiques en prenant des decisions d'evenement de commutation. D'autres heuristiques peuvent etre utilisees par le controleur pour prescrire les evenements de commutation selon certaines recommendations. A titre d'exemple, les interruptions du processeur peuvent egalement modifier les heuristiques d'evenements de commutation. Le controleur controle, de preference, la synchronisation d'un fil, comme pour incorporer des caracteristiques de temporisation avec les heuristiques d'evenements de commutation. L' invention fournit ainsi certains avantages. A la difference de l'art anterieur, les evenements de commutation ne vent plus des decisions en > qui peuvent provoquer des effete de traitement negatifs a l'interieur du pipeline. A titre d'exemple, conformement a l' invention, un evenement de commutation peut ne pas se produire automatiquement apres un certain nombre de cycles associes a l' expiration de tranche de temps. Ce qui signifie, une evaluation est egalement composee d'une execution de fil et est relative a ltexpiration de tranche de temps: si ce fil progresse de maniere satisfaisante, il ntest pas cafe ni arrete; plutot son urgence d'utilisation peut en realite etre augmentee pour amplifier l'activite du fil. Si, cependant, il y a un calage, le fil inactif suivant pourra etre active. Si, d'autre part, le fil actif a une expiration de tranche de temps mais il a une urgence superieure au fil inactif, le fil inactif peut rester peu actif pendant que le pipeline attend de traiter le fil actif plus urgent. L'homme du metier devra egalement apprecier qu'une commutation trop tardive puisse creer des penalites de traitement. 1' invention fournit des avantages sur l'art anterieur en ajoutant l'urgence au fil, afin d'encourager, ou non, un evenement de commutation selon l'heuristique appropriee. De plus, une trop grande quantite d'evenements de commutation peut sousutiliser le pipeline. Une fois encore, l' invention a des avantages sur l'art anterieur en reduisant la sous-utilisation des unites d' execution, due aux evenements de commutation, en prenant des decisions de commutation appropriees selon les politiques de traitement d' instruction preferees; et ces politiques peuvent etre changees, de maniere dynamique ou autrement, pour reduire encore la sous-utilisation. A titre d'exemple, un fil de programme avec une urgence > peut commuter immediatement en cas de calage (prevu ou reel). L' invention est ensuite decrite en connexion avec les modes de realisation preferes, et il sera clair que divers ajouts, soustractions et modifications peuvent etre effectues par l'homme du metier sans s'ecarter de la portee de ['invention. Breve description des dessins Une comprehension plus complete de l' invention peut etre obtenue en faisant reference aux dessins, sur lesquels: la figure 1 illustre de maniere schematique une unite de traitement de l' invention pour des instructions de traitement via des unites d' execution de pipeline i la figure 2 represente un exemple d'evenement de commutation a l'interieur d'un pipeline de l' invention; et la figure 3 represente un organigramme illustrant l'utilisation d'urgence avec la multiprogrammation, conformement a ['invention. Description detaillee des dessins La figure 1 represente une unite de traitement 10 de ['invention. L' unite 10 est. par exemple, une partie d'un processeur EPIC pour traiter les fils de programme multiples via multiples pipelines 12. Les pipelines 12 peuvent comprendre une matrice de phases d' execution de pipeline, connue par lthomme du metier dans ['art, pour traiter incrementiellement des instructions, telles que dans la phase d' extraction F. la phase de lecture du registre R. la phase d' execution E, la phase de detection d' exception D, et la phase d'ecriture differee W. L' unite a, de preference, des pointeurs d' instruction multiples 14(1), 14(2)...14(M) pour prendre en charge le traitement des fils multiples 15(1), 15(2),...15(M) via les unites 12. Une memoire cache 13 met en memoire tampon les donnees provenant des pipelines associes 12 vers les fichiers du registre. La pluralite des fichiers du registre 16(1), 16(2),...16(N) fournit un stockage des donnees par cycle pour l' unite 10, via le bus 18; divers etats architectures peuvent etre stockes dans les fichiers du registre 16(1), 16(2), 16(N), y compris les donnees d'ecriture differee provenant de la phase W. La logique de derivation 20 peut etre utilisee pour prendre en charge la derivation et les transferts de donnees speculatifs vers et entre les pipelines 12 et le fichier du registre 16. Les instructions vent distribuees aux pipelines 12 par une unite d' extraction 24 en communication avec un pointeur d' instruction 14. Une unite d' emission 26 peut etre utilisee pour coupler les instructions aux pipelines 12 pour execution par l'intermediaire de celles-ci. L' unite 10 comprend egalement un controleur de fil 30. Le controleur 30 controle le traitement des fils a l'interieur des pipelines 12; il definit egalement les evenements de commutation qui desactivent et activent les fils multiples a l'interieur des pipelines 12 pour executer la multiprogrammation. En cas d'evenement de commutation, les instructions issues des fils courants vent acheminees a travers le controleur 30 via le bus 17. Une unite d' expiration de tranche de temps 19 peut egalement se coupler a l' unite 10 pour controler l' expiration de tranche de temps d'un fil quelconque 15 a l'interieur des pipelines 12. L' unite 19 se couple avec le controleur de fil 30 via le bus 21 pour indiquer un evenement d' expiration. En cas d'un tel evenement, et comme decrit ci-dessus, le controleur de fil 30 peut arreter le fil courant, ou non, en se basant sur l'urgence pour ce fil. Le contrdleur de fil 30 utilise l'urgence de divers fils traites a l'interieur de ['unite 10 pour definir les evenements de commutation. A titre d'exemple, le controleur 30 peut controler une expiration de tranche de temps d'un fil a l'interieur des pipelines 12 et choisir d'arreter ce fil ou non, en se basant sur l'urgence du fil. Le controleur 30 peut egalement modifier l'urgence d'un fil, comme en injectant une instruction dans le pipeline. Par exemple, si un fil a, de maniere repetee, des absences d'informations dans l'antememoire, le controleur 30 peut diminuer, de maniere repetee, l'urgence du fil, par exemple diminuer les bits d'urgence des instructions du fil de 3 a 2, a 1. Dans un autre exemple, le contrdleur de fil 30 controle les interruptions du processeur pour un fil donne i il peut encore ajuster l'urgence du fil en se basant sur les interruptions. A des fins d' illustration, la figure 2 illustre un evenement de commutation 70 defini par le controleur 30 a l'interieur d'un pipeline 12. Un premier fil, de maniere illustrative avec une urgence >, est execute (EX1) a une phase 60 du pipeline 12. Ce fil cafe au temps 62 en raison d'une absence d'informations dans l'antememoire. Le controleur 30 arrete le premier fil, a l'evenement de commutation 70, et active un deuxieme fil, de maniere illustrative avec une urgence >. L' invention fournit ainsi l' execution des instructions issues d'autres fils dans le cas d'un fil courant calant dans le pipeline (par exemple, EX1), comme par une absence d'informations dans l'antememoire qui entralne une longue operation de memoire latente. Plus particulierement, l'evenement de commutation 70 provoque un retard mineur seulement dans le pipeline 12. Le calage 62 est couvert par l' execution continue d'un autre fil via le pipeline; specifiquement, le deuxieme fil continue l' execution (EX2) a l'interieur du pipeline 12 a la phase 64. Le deuxieme fil peut egalement caler au temps 66 i cependant aucun evenement ne se produit dans cet exemple, parce que le deuxieme fil a une urgence superieure au premier fil. En consequence, le calage 66 est couvert par l' execution continue du deuxieme fil a l'interieur de l' execution (EX2) a l'interieur du pipeline 12 a la phase 68. La figure 3 represente un organigramme 100 illustrant certaines operations non limitees du controleur de fil de ['invention. Apres le demarrage, a l'etape 102, le controleur de fil controle le traitement des instructions a l'interieur d'une matrice de pipelines A 1' etape 103, l' unite d' expiration de tranche de temps evalue si une expiration de tranche de temps se produit. Si ce ntest pas le cas, le traitement continue jusqu'a l'etape 104. Au cas ou lt expiration de tranche de temps se produirait, l'urgence du fil actif est fixee a elevee et desactivee, et le fil inactif est active, a l'etape 105. Le controle d'un autre fil commence a nouveau, comme illustre. Dans le cas d'un eventuel evenement de commutation, etape 104, le controleur de fil evalue si l'evenement est pour un fil actif (etape 106) ou un fil inactif (etape 108). Si l'evenement est associe a un fil actif, l'urgence du fil actif est modifiee et evaluee par rapport a l'urgence du fil inactif pour determiner s'il faut commuter ou pas, a l'etape 110. Si les urgences ne garantissent pas une commutation, le controle continue a l'etape 102. Si les urgences garantissent, en effet, une commutation, une commutation se produit ensuite a l'etape 112. A 1' etape 112, le fil actif est desactive et le fil inactif est active. Si l' evenement de l' etape 104 est pour un fil inactif, etape 108, ensuite l'urgence du fil inactif est modifiee et evaluee par rapport a l'urgence du fil actif pour determiner s'il faut commuter ou pas, a l'etape 114. Si les urgences ne garantissent pas une commutation, le controle continue a l'etape 102. Comme ci-dessus, si les urgences garantissent une commutation, une commutation se produit ensuite a l'etape 112. A 1' etape 112, le fil actif est desactive et le fil inactif est active. En consequence, l' invention evalue une urgence du fil pour decider si le fil courant est commute hors du pipeline ou pas (etapes 110, 114). Une modification de l'urgence du fil peut egalement se produire par le biais de l' operation du controleur de fil 30, comme en emettant une instruction pour un > d'une nouvelle urgence du fil Si c'est arrete, le fil suivant est active a l'interieur du pipeline. Le controleur continue ensuite a controler la progression des instructions du nouveau fil dans le pipeline (etape 102). Les commutations du fil peuvent se passer en purgeant le pipeline et en commutant a un autre etat architecture (par exemple, via des pointeurs pour le fichier du registre et stockes dans le controleur de commutation de fil); l' extraction des instructions provenant du nouveau fil commence en-quite. Si le fil courant n'est pas arrete, par exemple, si son urgence est tres elevee, il peut ne pas etre arrete et le controle continu (etape 102) se produit pour le meme fil. L' invention atteint ainsi les objets decrits ci dessus, parmi lesquels ceux issus de la description precedente. Puisque certains changements peuvent etre effectues dans les procedes et les systemes ci-dessus sans s'ecarter de la portee de l' invention, il est prevu que toute question contenue dans la description ci-dessus ou illustree sur les dessins joints en annexe sera interpretee a titre d' illustration et n'a pas de sens limite. Il faut egalement comprendre que les revendications suivantes doivent couvrir toutes les caracteristiques generiques et specifiques de l' invention decrite ici, et tous les enonces de la portee de l' invention dont on peut dire qu'ils en font partie en matiere de langue. REVEN DI CAT I ONS 1. Procede destine a determiner les points de commutation de fil a l'interieur des unites d' execution de pipeline d'un processeur, comprenant les etapes consistent a: controler le traitement des instructions (102) d'un premier fil a l'interieur des unites d' execution de pipeline (12); en cas (104) d'un point de commutation eventuel a l'interieur des unites d' execution de pipeline (12), desactiver le premier fil ou non, en se basant sur un premier indicateur d'urgence pour le premier fil. 2. Procede de la revendication 1, comprenant en outre la desactivation du premier fil et l' activation du deuxieme fil (112) en se basant sur un deuxieme indicateur d'urgence pour le deuxieme fil. 3. Procede de la revendication 1, l'etape consistent a controler comprend l'utilisation d'un controleur de fil (30) couple avec les unites d' execution (12). 4. Procede de la revendication 1, comprenant en outre la modification (110, 114) du premier indicateur d'urgence pour augmenter ou diminuer en alternance l'urgence du premier fil, en se basant sur les caracteristiques associees a l'evenement de commutation. 5. Procede de la revendication 4, comprenant en outre la determination (103) si une expiration de tranche de temps s'est produite. 6. Procede de la revendication 5, comprenant en outre l'utilisation d'une unite d' expiration de tranche de temps (19). 7. Procede de la revendication 1, comprenant en outre les etapes consistent a desactiver le premier fil et a activer un deuxieme fil, et modifier l'urgence du deuxieme fil. 8. Procede de la revendication 1, comprenant en outre les etapes consistent a controler des points de commutation eventuels d'un fil inactif ayant une deuxieme urgence et a desactiver le premier fil ou non, en se basant sur une premiere et une deuxieme urgences. 9. Processeur pour traiter des instructions de programme a fils multiples, comprenant: une matrice d' unites d' execution de pipeline (12) et les heuristiques associees influant sur la maniere dont les instructions (15) vent traitees a l'interieur des unites (12) i et un controleur de fil (30) pour controler le traitement des instructions (15) a l'interieur des unites (12) et pour commuter entre des fils de programme multiples en se basant sur (a) les heuristiques et (b) les urgences des fils de programme. 10. Systeme de la revendication 9, l'heuristique comprenant une ou plusieurs des heuristiques relatives a ['expiration de tranche de temps, des heuristiques relatives a l' absence d'informations dans l'antememoire et des heuristiques relatives a l' interruption du