Sur certains processeurs, les instructions machine correspondent directement à des micro-instructions qui configurent directement le bus interne au processeur. De tels processeurs sont ce qu'on appelle des '''architectures actionnées par déplacement''' (transport triggered architectures)., Surles uneinstructions architecturemachine actionnéecorrespondent pardirectement déplacement,à toutes lesdes micro-instructions. (saufChaque quelquesinstruction branchements)du vontlangage configurermachine configure directement le bus interne duau processeur,. enElles reliantpeuvent ou nonrelier les ALU aux registres, en reliantrelier les registres entre eux, etc. Chaque configuration va soit relier une unité de calcul au banc de registres, soit échanger deux données entre registres du banc de registres (connectereffectuer un port de lecture du banc de registres sur un port d'écriture)branchement, soit effectuer un branchementetc. 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. Certaines de ces architectures utilisent plusieurs bus internes, afin de pouvoir faire plusieurs micro-instructions à la fois.
La raison d'exister de ces architectures est tout autant la simplicité du processeur que la performance. DansLe lesséquencement grandesdes lignes,micro-instructions den'est telspas processeursréalisé ontpar unle séquenceur extrêmement simpleprocesseur, quimais utilisepar peule de portes logiquescompilateur. LaDe raisonfait, àle celaséquenceur estdevient simplementextrêmement quesimple leet séquencementutilise despeu micro-instructionsde n'aportes paslogiques. àDe être réalisé par le processeurplus, mais est réalisé par le compilateur. Le fait que le compilateur aie la main sur les micro-instructions peut permettre des simplifications assez fines, qui ne seraient pas possibles avec un compilateur qui réordonne 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. ÉvidemmentPar contre, cesla portabilité des programmes compilés pour de telles architecture est faible. La raison est que les micro-instructions ont un temps de latence quià doitprendre êtreen connucompte. pour obtenir un programme correct : sansSans cela, on pourrait par exemple lire une donnée avant que celle-ci ne soit disponible. Cela demande donc des compilateurs dédiés, qui connaissentSi les temps de latence dechangent, chaque instruction. La portabilité desles programmes compiléspeuvent pourse demettre tellesà architecture est donc faibledysfonctionner. ▼
==Implémentation==
Par exemple, un processeur de ce type peut contenir trois registres « ajout.opérande.1 », « ajout.déclenchement » et « ajout.résultat ». Le premier registre servira à stocker le premier opérande de l'addition. Pour déclencher l'opération d'addition, il suffira d'écrire le second opérande dans le registre « ajout.déclenchement », et l'instruction s’exécutera automatiquement. Une fois l'instruction terminée, le résultat de l'addition sera automatiquement écrit dans le registre « ajout.résultat ». Il existera des registres similaires pour la multiplication, la soustraction, les comparaisons, etc.
==Utilité==
▲La raison d'exister de ces architectures est tout autant la simplicité du processeur que la performance. Dans les grandes lignes, de tels processeurs ont un séquenceur extrêmement simple, qui utilise peu de portes logiques. La raison à cela est simplement que le séquencement des micro-instructions n'a pas à être réalisé par le processeur, mais est réalisé par le compilateur. Le fait que le compilateur aie la main sur les micro-instructions peut permettre des simplifications assez fines, qui ne seraient pas possibles avec un compilateur qui réordonne des instructions machines. 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. Évidemment, ces micro-instructions ont un temps de latence qui doit être connu pour obtenir un programme correct : sans cela, on pourrait par exemple lire une donnée avant que celle-ci ne soit disponible. Cela demande donc des compilateurs dédiés, qui connaissent les temps de latence de chaque instruction. La portabilité des programmes compilés pour de telles architecture est donc faible.
<noinclude>
|