• Aucun résultat trouvé

CHAPITRE II : STRUCTURE ET ORGANISATION INTERNE

II.3 EXECUTION DES INSTRUCTIONS DU ARM

II.3 EXECUTION DES INSTRUCTIONS DU ARM

L'exécution d'une instruction du ARM peut le mieux être comprise en ce qui concerne l'organisation des chemins de donnée comme il est présenté dans la figure II.1. Nous emploierons une version annotée de ce diagramme, omettant la section de logique de contrôle et mettant en évidence les bus actifs pour montrer le mouvement d'opérandes autour des unités diverses dans le processeur. Nous commençons par une instruction de traitement de données simple.

II.3.1 Instruction de traitement de données

Une instruction de traitement de données requiert deux opérandes, dont l’un est toujours

un registre et l'autre est un deuxième registre ou bien une valeur immédiate. On passe le deuxième opérande par le baril à décalage où c'est soumis à une opération de décalage générale, alors il est combiné avec le premier opérande dans l'ALU. Finalement, le résultat de l'ALU est écrit dans le registre de destination.

Toutes ces opérations s’exécutent dans un seul cycle d'horloge comme indiqué dans la figure II.5. Notons aussi comment la valeur du PC dans le registre d'adresse est incrémentée et copiée différemment, au même temps dans le registre d'adresse rl5 et dans le banque de registres. L’instruction suivante est seulement chargée dans le fond du pipeline d'instruction (i. Pipe). La valeur immédiate, quand elle est requit, est extraite de l'instruction actuelle au sommet du pipeline d'instruction. Pour des instructions de traitement de données seulement le fond de huit bits (bits [7:0]) de l'instruction sont employées dans la valeur immédiate.

Figure II.5 Comportement de chemin de données pour une instruction de traitement de

donnée.

II.3.2 Instruction du transfert de données

Les instruction du transfert de données (chargement ou rangement) calcule une adresse du mémoire d’une même manièrequ'une instruction de traitement de données calcule son résultat. Un registre est employé comme l'adresse de base, à laquelle est ajouté (ou soustrait) une donnée qui peut de nouveau être un autre registre ou une valeur immédiate. Cependant, une valeur à 12 bits immédiate est employée sans une opération de décalage plutôt qu'une valeur décalée à 8 bits. L'adresse est envoyée au registre d'adresse et dans un deuxième cycle le transfert de données a lieu. Le chemin de donnée est en grand parti inoccupé pendant le cycle de transfert de données, l'ALU contient les composants d'adresse du premier cycle et est disponible pour calculer une modification d'auto-indexation au registre de base si c'est nécessaire. (Si l'auto-indexation n'est pas nécessaire la valeur calculée n'est pas écrite déferrement au registre de base dans le deuxième cycle.)

On montre l'agissement de chemin de données pour les deux cycles d'une instruction de rangement de données (STR) avec une offset immédiate dans la Figure II.6. Notons comment la valeur de PC incrémentée est stockée dans le banque de registre à la fin du premier cycle pour que le registre d'adresse soit libre d'accepter une adresse de transfert de données pour le deuxième cycle, ensuite à la fin du deuxième cycle la valeur de PC est inscrite différemment dans le registre d'adresse pour permettre à l'instruction pré-recherche (prefetching) de poursuivre.

Figure II.6 Comportement de chemins de données pour une instruction

de transfert de données

Il doit être noté à cet étage que la valeur envoyée au registre d'adresse dans un cycle est la valeur employée pour l'accès du mémoire dans le cycle suivant.

Le registre de l'adresse est, en effet, un registre de pipeline entre les chemins de donnée du processeur et la mémoire externe.

Quand l'instruction spécifie un rangement d’un type de donnée d’un octet, ‘ les données sortant ' le bloc extraient l'octet de fond de registre et le reproduisent quatre fois à travers le bus de données de 32 bits. La logique de contrôle du mémoire externe peut alors employer les deux bits du poids faible de bus d'adresse pour activer l'octet approprié dans le système de mémoire.

Les instructions de chargement suivent un modèle semblable sauf que les données de la mémoire seulement arrivent au même temps que ' les données entrant ' le registre sur le deuxième cycle et un troisième cycle est nécessaire pour transférer les données de là mémoire au registre de destination.

II.3.3 Instruction du branchement

Les instructions de branchement calculent l'adresse cible dans le premier cycle comme indiqué dans la Figure II.7. Un champ à 24 bits immédiats est extrait de l'instruction et ensuite décalé à gauche de deux positions de bit pour donner une offset alignée de mot qui va ajouter au PC. Le résultat est utilisé comme une adresse de recherche d'instruction et tandis que le pipeline d'instruction est occupé, à nouveau l'adresse de retour est copié dans le registre de lien (rl4) si c'est requis (c'est-à-dire si l'instruction est ' un branchement avec lien (branch with link)).

Le troisième cycle, qu’est requis pour achever le remplissage de pipeline, à nouveau, est aussi employé pour faire une petite correction à la valeur stockée dans le registre de lien (link register) afin qu'il indique directement à l'instruction qui suit la branche. C'est nécessaire parce que rl5 contient le PC + 8 tandis que l'adresse de l'instruction suivante est le PC + 4.