« Fonctionnement d'un ordinateur/Les architectures actionnées par déplacement » : différence entre les versions

Contenu supprimé Contenu ajouté
mAucun résumé des modifications
mAucun résumé des modifications
Ligne 1 :
Sur les '''architectures actionnées par déplacement''' (transport triggered architectures), les instructions machine correspondent directement à des micro-instructions. ChaqueLa instructionraison d'exister de ces architectures est tout autant la simplicité du langageprocesseur machineque configurela directementperformance. leLe busséquencement internedes aumicro-instructions n'est pas réalisé par le processeur, mais par le compilateur. EllesDe peuventfait, relierle lesséquenceur ALUdevient auxextrêmement registressimple et utilise peu de portes logiques. De plus, relierle fait que le compilateur aie la main sur les registresmicro-instructions entrepeut eux,permettre effectuerdes unsimplifications branchementassez fines, etc.qui Surne certainsseraient depas cespossibles processeursavec des instructions machines normales. Par exemple, on n’apeut besoinenvoyer quele d'unerésultat seulefourni instructionpar quiune permetunité de copiercalcul unedirectement donnéeen entrée d'unune emplacementautre, (registresans ouavoir adresseà mémoire)écrire àce résultat dans un autreregistre intermédiaire du banc de registres. PasPar d'contre, la portabilité des programmes compilés pour de telles architecture est faible. La raison est que les micro-instructions LOAD,ont STORE,un etctemps de latence à prendre en compte. :Sans cela, on fusionnepourrait toutpar enexemple lire une seuledonnée instructionavant supportantque uncelle-ci grandne nombresoit disponible. Si les temps de modeslatence d'adressageschangent, les programmes peuvent se mettre à dysfonctionner.
 
==Le jeu d'instruction d'un processeur actionné par déplacement==
La raison d'exister de ces architectures est tout autant la simplicité du processeur que la performance. Le séquencement des micro-instructions n'est pas réalisé par le processeur, mais par le compilateur. De fait, le séquenceur devient extrêmement simple et utilise peu de portes logiques. De plus, le fait que le compilateur aie la main sur les micro-instructions peut permettre des simplifications assez fines, qui ne seraient pas possibles avec des instructions machines normales. Par exemple, on peut envoyer le résultat fourni par une unité de calcul directement en entrée d'une autre, sans avoir à écrire ce résultat dans un registre intermédiaire du banc de registres. Par contre, la portabilité des programmes compilés pour de telles architecture est faible. La raison est que les micro-instructions ont un temps de latence à prendre en compte. Sans cela, on pourrait par exemple lire une donnée avant que celle-ci ne soit disponible. Si les temps de latence changent, les programmes peuvent se mettre à dysfonctionner.
 
Comme dit plus haut, les instructions machines de ces processeurs sont identiques aux micro-instructions. Chaque instruction du langage machine configure directement le bus interne au processeur. Elles peuvent relier les ALU aux registres, relier les registres entre eux, effectuer un branchement, etc.
 
Les instructions sont plus longues que pour les autres processeurs. La raison est que les micro-instructions d'un processeur normal sont plus longues que les instructions machines. Les micro-instructions ont en effet besoin de préciser beaucoup de choses que les instructions machines normales peuvent passer sous silence. Une micro-instructions a par exemple besoin de préciser comment configurer le bus interne, le banc de registres, l'unité de calcul, l'unité de gestion mémoire, etc. A l'inverse, une instruction normale a juste besoin de préciser l'opération à faire, la localisation des opérandes/résultats, éventuellement le mode d'adressage, et quelques autres détails. Le second ensemble d'information est généralement codé efficacement, de manière à utiliser peu de bits. Par contre, les bits de configuration du bus interne sont ce qu'ils sont et on peut rarement en limiter le nombre pour compresser la micro-instruction.
 
En conséquence, la ''code size'' est généralement mauvaise sur ces processeurs. Mais ce n'est pas lié qu'à la taille des instructions : le nombre d'instructions par programme augmente lui aussi. N'oublions pas qu'une instruction machine correspond à une séquence de plusieurs micro-instructions. Le nombre d'instructions est donc multiplié en conséquence. Et les optimisations qui permettent d'économiser les micro-instructions n'y font pas grand chose. S'il est possible d'éliminer certaines micro-instructions redondantes, dans certaines circonstances, cela ne compense pas le fait que le nombre total d'instructions machines est multiplié par 3 ou 4.
 
Sur certains de ces processeurs, on n’a besoin que d'une seule instruction qui permet de copier une donnée d'un emplacement (registre ou adresse mémoire) à un autre. Pas d'instructions LOAD, STORE, etc. : on fusionne tout en une seule instruction supportant un grand nombre de modes d'adressages.
 
==Implémentation==