Architecture externe d’un processeur (Exemple de MIPS) 1 Introduction L'archite
Architecture externe d’un processeur (Exemple de MIPS) 1 Introduction L'architecture externe d’un processeur représente ce que doit connaître un programmeur souhaitant programmer directement avec le langage du processeur. Ce langage, dit lagunage machine, est représenté par des chaînes binaires propres à chaque processeur. Pour manipuler facilement ce langage, les programmeurs utilisent une forme plus conviviale dite langage d’assemblage. Le langage d’assemblage est équivalent au langage machine sauf qu’il utilise des représentations mnémoniques des opérations telles que Add, Mouv, Jump, …etc, au lieu de manipuler des chaînes binaires. La programmation d’un processeur en assembleur est, en générale, plus complexe mais elle permet d’écrire des programmes plus rapides exploitant les performances maximales du processeur. Elle permet, entre autres, de réaliser des compilateurs permettant de traduire un programme écrit en langage évolué (Pascal, C, etc) en un programme en langage machine. L’architecture externe d’un processeur concerne les éléments suivants : - Les registres visibles. - L'adressage de la mémoire. - Le jeu d'instructions. - Les mécanismes de traitement des interruptions et des exceptions 2 Présentation du processeur MIPS R3000 Dans le but d’illustrer les différents concepts, nous prendrons comme exemple le processeur MIPS R3000 qui est un processeur 32 bits. Son jeu d'instructions est de type RISC (Reduced Instruction Set Computer). Il existe plusieurs réalisations industrielles de cette architecture (SIEMENS, NEC, LSI LOGIC, SILICON GRAPHICS, etc...). Ce processeur est suffisamment simple pour présenter les principes de base, et suffisamment puissante pour supporter un système d'exploitation multi-tâches tel que UNIX. 2-1 Registres visibles du MIPS-R3000 MIPS-R3000 est un microprocesseur moderne possédant des mécanismes de protection et de multi-tâches (permettant d’exécuter plusieurs tâches à la fois). Le processeur possède deux modes de fonctionnement : utilisateur/superviseur. Le mode superviseur est le mode protégé dans lequel les programmes du système d’exploitation s’exécutent. Le mode utilisateur est le mode dans lequel les programmes des utilisateurs s’exécutent. Chacun des modes dispose de ses propres registres visibles. a) Registres non protégés Le processeur possède 35 registres manipulés par les instructions standard (c'est-à-dire les instructions qui peuvent s’exécuter aussi bien en mode utilisateur qu’en mode superviseur). Les 32 registres à usage général ($R0 à $R31) Ce sont des registres de 32 bits utilisés par les instructions pour stocker les opérandes en vue de réaliser les opérations arithmétiques et logiques. Le registre $R0 en particulier retourne toujours un zéro quel que soit ce qu’on y enregistre. Le registre $R31 est utilisé pour sauvegarder l’adresse de retour dans le cas d’appel de procédure. Le compteur programme $PC (compteur ordinal) Ce registre contient l'adresse de l'instruction en cours d'exécution. Sa valeur est modifiée par toutes les instructions. Les registres HI et LO Ces registres à 32 bits sont utilisés pour la multiplication ou la division pour stocker le résultat de l’opération b) Registres protégés L'architecture MIPS définit 32 registres (numérotés de 0 à 31), qui ne sont accessibles, en lecture comme en écriture, que par les instructions privilégiées (c'est à dire les instructions qui ne peuvent être exécutées qu'en mode superviseur). On dit qu'ils appartiennent au "coprocesseur système". En particuliers nous avons : Le registre d'état SR (Status Register) Il contient en particulier le bit qui définit le mode : superviseur ou utilisateur, ainsi que les bits de masquage des interruptions Registre de cause CR (Cause Register) En cas d'interruption ou d'exception, son contenu définit la cause pour laquelle on fait appel au programme de traitement des interruptions et des exceptions. Registre d'exception EPC (Exception Program Counter). Il contient l'adresse de retour (PC + 4) en cas d'interruption. Il contient l'adresse de l'instruction fautive (PC) en cas d'exception. Registre d'adresse illégale BAR (Bad Address Register). En cas d'exception de type "adresse illégale", il contient la valeur de l'adresse mal formée. 3 Organisation de la mémoire L’organisation de la mémoire diffère d’un processeur à un autre. La différence réside dans la taille affectée aux bus de données et d’adresses. La taille du bus de données est d’une importance capitale. Elle détermine la taille du mot mémoire. En générale, la taille est de 4, 8, 16, 32, 64 ou 128 bits. Les processeurs actuels permettent d’adresser des mots de tailles variables. Un processeur 32 bits peut, par exemple, charger des mots de 32 bits mais peut aussi charger des mots de tailles plus petites. En générale, le plus petit objet que le processeur peut charger est l’octet. Le processeur est dit, dans ce cas, adressable par octet. Les mots de tailles plus grandes sont stockés comme une séquence d’octets. L’adresse du mot correspond à l’adresse du premier octet de la séquence. Il existe deux choix pour l’ordre dans lequel les octets d’un objet sont stockés en mémoire (un entier sur 32 bits par exemple) ; le poids fort d’abord (Big- Endian) ou le plus faible d’abord (Little-Endian). Dans le Big-Endian, l’adresse du mot correspond à l’adresse de l’octet des poids forts. Les octets de poids faibles suivent ceux de poids forts. Dans le Little-Endian, l’adresse du mot correspond à l’adresse de l’octet de poids faibles et les octets de poids forts suivent ceux de poids faibles. La figure III-1 illustre les deux principes : L’adresse du mot est X dans les deux cas Figure 1 organisation Big-Endian et Little-Endian 3-1 Organisation mémoire de MIPS-R3000 MIPS-R3000, est un processeur ayant un bus de données de 32 bits et un bus d’adresse de 32 bits également. Il est adressable par octet selon le mode Little-Endian. Les instructions sont toutes codées sur 32 bits. Les données sont codées sur un mot (4 octets consécutifs), demi-mot (2 octets consécutifs), ou sur un octet. Une instruction ou un mot doit toujours être alignée sur une adresse qui est un multiple de 4 car elle est formée de 4 octets. Un demi-mot doit être aligné sur une adresse qui est multiple de 2. Le processeur passe en exception si on tente d’accéder à un objet non aligné. L’espace mémoire est découpé en 2 segments identifiés par le bit de poids fort de l’adresse (31eme bit). Un 0 sur ce bit correspond au segment utilisateur et un 1 correspond au segment système. Quand le processeur est en mode superviseur, les 2 segments sont accessibles. Quand le processeur est en mode utilisateur, seul le segment utilisateur est accessible. Le processeur part en exception si une instruction essaye d'accéder à la mémoire avec une adresse correspondant au segment système alors que le processeur est en mode utilisateur. En général, un programme est composé d’une section instruction, d’une section données, et d’une pile utilisée pour réaliser des appels de procédures et de fonctions. Par convention, l’espace mémoire du MIPS R3000 est décomposé selon cette structure comme indiquée dans la figure III-2. (Les adresses sont indiquées en hexadécimal). La section .text contient le code exécutable en mode utilisateur. Elle est implantée conventionnellement à l’adresse 0x00400000. La section .data contient les données globales manipulées par le programme utilisateur. Elle est implantée conventionnellement à l’adresse 0x10000000. Sa taille peut déborder sur la section de pile utilisateurs .stack, implantée à l’adresse 0x7FFFFFFF et qui s’étend vers les adresses décroissantes. Le mode superviseur dispose aussi de trois sections contenant les programmes, les données et la pile du système d’exploitation. Octet 0 LSB 31 MSB x x +1 x +2 x +3 Big-Endian Octet 0 LSB 31 MSB x x +1 x +2 x +3 Little-Endian Figure 2 Organisation mémoire du MIPS-R3000 4 Modes d’adressage L’accès à la mémoire se fait par une adresse spécifiée dans un champ (une partie) de l’instruction. Il arrive que l’espace mémoire adressé par le processeur soit plus grand que la capacité d’adressage du champ de l’instruction. Il est aussi fréquent de manipuler des structures complexes tels que les tableaux et les enregistrements nécessitant des techniques d’adressage particulières. Il existe en effet plusieurs modes d’adressages. Les plus connus sont les suivants 1) Adressage immédiat Ce mode est utilisé pour manipuler des constantes connues sans passer par la mémoire pour les chercher. L’opérande est une valeur immédiate se trouvant directement dans l’instruction Exemple Load RA, #10 ; mettre la valeur immédiate 10 dans le registre A 2) Adressage direct L’adresse de l’information à chercher se trouve directement dans l’instruction. Ce mode est le plus simple mais l’espace mémoire accessible dépend de la taille du champs adresse de l’instruction Exemple Bus de données (32 bits) 0x00000000 0x00000004 . . . 0x003FFFFC . . . 0x00400000 . . . 0x0FFFFFFC 0x10000000 . . . 0x7FFFFFFC . . . 0x80000000 0xBFFFFFFC . . . 0xC0000000 . . . 0xFFFFEFFC . . . 0xFFFFF000 0xFFFFFFFC Octet 0 Segment utilisateur 31eme bit = 0 Segment système 31eme bit = 1 Octet 1 Octet 2 Octet 3 Réservé Section programme utilisateurs (.TEXT) Section données utilisateurs (.DATA) Section pile utilisateurs (.STACK) Section programme système (.KTEXT) Section données système (.DATA) Section pile système (.KSTACK) Réservé 10 RA Load RA, 10 ; charger le registre A avec la donnée se trouvant en ; mémoire à l’adresse 10 3) Adressage indirect L’instruction contient une adresse qui contient l’adresse de l’information à uploads/Ingenierie_Lourd/ architecture-externe-mips 1 .pdf
Documents similaires
-
17
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Aoû 10, 2021
- Catégorie Heavy Engineering/...
- Langue French
- Taille du fichier 0.4707MB