doc

publicité
Cours 5 : Introduction aux microprocesseurs
Q5.1 : Qu’est-ce qu’un ALU?
Un circuit électronique qui effectue des opérations mathématiques et logiques.
Q5.2 : Qu’est-ce que le Control Central Unit d’un microprocesseur?
C’est la partie du microprocesseur qui lit, décode et exécute les instructions.
Q5.3: Lorsque le microprocesseur lit une instruction, où la met-il avant de la décoder?
Le microprocesseur a un registre ou un tampon qui contient la ou les dernières instructions lues en mémoire.
Q5.4 : Combien de coups d’horloges sont requis pour lire et exécuter une instruction?
Il n’y a pas de réponse unique à cette question : ça dépend du microprocesseur, de la mémoire, de la vitesse
d’horloge, de l’instruction et de plusieurs autres facteurs (caches, bus et accès au bus, architecture du
microprocesseur, jeu d’instructions…). Habituellement, les microprocesseurs modernes (disons depuis 2005)
exécutent plusieurs instructions par coup d’horloge (une moyenne entre 2 et 4, en fonction du microprocesseur et
des instructions à exécuter).
Q5.5 : De combien est incrémenté automatiquement PC entre chaque instruction?
PC est incrémenté de la taille de l’instruction exécutée, à moins que les instructions ne disent de faire autrement.
Q5.6 : À quoi sert la ligne de contrôle LOAD/COUNT pour le CPU en exemple dans le
cours 5?
Déterminer s’il faut charger la prochaine série de micro-instructions qui sera à exécuter ou s’il faut continuer la
série de micro-instructions actuelle.
Q5.7 : À quoi sert l’entrée 0 pour le MUX A et le MUX B pour le CPU en exemple dans le
cours 5?
Permettre de mettre un registre ou l’accumulateur à zéro facilement, ou rendre nulle l’une des entrées de l’ALU
pour faire des affectations.
Q5.8 : Pour le CPU en exemple dans le cours 5, quel est la valeur des lignes de contrôle
pour la sous-instruction MDR+A->A? Inspirez-vous de l’acétate « Microprogramme pour
addition (Annexe) » afin de répondre.
Même réponse que dans l’acétate, sauf pour un seul champs de l’u-instruction 124 : MUX_B SEL doit être ACC.
Q5.9 : Pourquoi a-t-on besoin du registre MAR?
Il faut un buffer où mettre la valeur des lignes d’adresses voulues.
Q5.10 : Quel matériel pourrait être utilisé afin de concevoir un registre?
Bascules SRs, bascules D, autres flip-flops…
Q5.11 : Donnez quatre différences entre une architecture RISC et une architecture CISC.
Longueur des instructions
Taille des programmes
Nombre de registres
Facilité de traitement des instructions
Q5.12 : Donnez trois conséquences d’utiliser des instructions ayant toujours la même
longueur?
Pipeline plus facile a implémenté
Program counteur plus facile a géré
Moins d’instructions possibles
Q5.13 : Qu’est-ce qu’un pipeline?
Une série de composantes matérielles indépendantes exécutant chacune une partie d’une instruction. Chaque
composante peut travailler sur une instruction différente.
Q5.14 : Dites si les énoncés suivant sont vrai ou faux. Justifier dans tous les cas :
A) Un pipeline permet toujours de compléter une instruction par coup d’horloge
Faux. Il peut y avoir des dépendances entre les instructions. Il y a aussi des instructions de saut, des
branchements, etc.
B) Un ordinateur super scalaire sera assurément plus performant qu’un ordinateur
scalaire.
Faux.
C) Un pipeline ayant une profondeur de 6 exécute 6 instructions à la fois et l’exécution
de chaque instruction est divisée en 6 parties.
Vrai
Q5.15 : Nommez cinq composantes d’un CPU moderne.
CCU, ALU, Registres, unité de gestion des bus externes, unité de traitement des sauts pour la pipeline, etc.
Q5.16 : Qu’est-ce qu’une micro instruction? Quel est l’avantage d’utiliser des microinstructions par rapport à concevoir un micro processeur avec une logique câblée
(hardwired, c’est-à-dire où chaque instruction est exécutée par une séquence d’action dans
du matériel qui lui est propre).
Une micro instruction est une étape d’une instruction. Chaque instruction est exécutée avec une séquence de
micro instructions. Comme des instructions différentes ont souvent plusieurs parties commune, utiliser des
microprogrammes permet de réduire la quantité et la complexité du matériel nécessaire à l’exécution des
instructions.
Q5.17 : Lors de la lecture et de l’exécution d’une instruction comme LOAD R0, MaVar
(lire MaVar en mémoire et mettre la valeur lue dans le registre R0), le microprocesseur met
des adresses sur le bus d’adresse. Dites combien d’adresses seront mises sur le bus
d’adresse et quel registre du microprocesseur fournira l’adresse.
Deux adresses seront mises sur le bus d’adresse :
-
L’adresse de l’instruction LOAD, fournie par le compteur de programme (registre PC)
L’adresse de la variable MaVar, fournie par l’instruction elle-même (registre IR)
Q5.18 : L’annexe du cours 5 présente un microprocesseur rudimentaire. Expliquez quelles
seraient les sous-instructions nécessaires afin de lire et d’exécuter l’instruction LOAD R0,
MaVar (lire MaVar en mémoire et mettre la valeur lue dans le registre R0), puis lire et
exécuter l’instruction ADD R0, R0, R0 (additionne R0 = R0 + R0), pour ce
microprocesseur rudimentaire.
Les sous-instructions sont présentées dans l’annexe :
Sous-instruction1
Fetch 1 et 2; PC –> Bus d’adresse
Fetch 3; Contrôle
Fetch 4,5; Bus de données –> IR
Load 1,2; IR –> Bus d’adresse
Load 3; Contrôle
Load 4, 5; Bus de données –> R0
1
Description
Mettre l’adresse de l’instruction LOAD R0, MaVar sur
le bus d’adresse
Activer la ligne de lecture de la mémoire
Mettre l’instruction provenant de la mémoire dans le
registre d’instruction
Mettre l’adresse de la variable contenue dans
l’instruction sur le bus d’adresse
Activer la ligne de lecture de la mémoire
Mettre la donnée provenant de la mémoire dans R0
Les noms et les numéros des sous-instructions proviennent de l’annexe du cours 5
PC = PC + 1 instruction
Fetch 1 et 2; PC –> Bus d’adresse
Fetch 3; Contrôle
Fetch 4,5; Bus de données –> IR
Add 1; ALU
Add 2; ALU
PC = PC + 1 instruction
Passer automatiquement à l’instruction suivante
Mettre l’adresse de l’instruction ADD R0, R0, R0 sur
le bus d’adresse
Activer la ligne de lecture de la mémoire
Mettre l’instruction provenant de la mémoire dans le
registre d’instruction
Additionner R0 avec R0
Mettre le résultat dans R0
Passer automatiquement à l’instruction suivante
Cours 6 : ARM, 8086 et Cie
Q6.1 Les microprocesseurs ARM sont-ils vendus comme les microprocesseurs d’Intel pour
PC?
Non, les microprocesseurs ARMs sont intégrés à l’intérieur de microcontrôleurs.
Q6.2 Le cœur ARM a-t-il une architecture CISC ou RISC?
RISC.
Q6.3 Le cœur ARM a-t-il un pipeline?
Oui. L’exécution de chaque instruction se fait en trois étapes.
Q6.4 Pourquoi peut-on dire que le microprocesseur ARM est un microprocesseur 32 bits?
La plupart des paramètres d’opération du microprocesseurs valent 32 bits : largeur d’un mot de données = 32
bits, registres de 32 bits, instructions de 32 bits, adresses de mémoire sur 32 bits, et plus…
Q6.5 Qu’est-ce qu’une architecture LOAD/STORE?
Une architecture LOAD/STORE est une architecture dans laquelle un nombre très limité d’instructions permet
d’accéder à la mémoire (instructions LOAD et STORE seulement).
Q6.6 Comment modifie-t-on les drapeaux de l’ALU?
En exécutant une instruction arithmétique ou logique!
Q6.7 À quoi sert le Barrel Shifter du cœur ARM?
Il sert à décaler vers la gauche ou vers la droite les bits d’un registre en plus des autres opérations de l’ALU.
Q6.8 Quels jeux d’instructions sont supportés par le cœur ARM?
Les jeux d’instructions ARM, Thumbs, Thumb2 et Jazelle. Notez que ce ne sont pas tous les processeurs ARMs
qui supportent tous les jeux d’isntructions. En fonction de la famille du cœur, les jeux d’instructions changent.
Q6.9 Pourquoi supporte-t-on des instructions 16 bits en plus des instructions ARM 32 bits?
Pour permettre de faire des programmes plus petits et plus denses.
Q6.10 Combien d’adresses de mémoires ou de périphériques sont disponibles pour le
processeur ARM
2^32 = 4 Giga addresses (4*1024*1024*1024)
Q6.11 Le 8086 a-t-il une architecture CISC ou RISC?
CISC
Q6.12 Le 8086 a-t-il un pipeline?
Non
Q6.13 Décrivez les 40 pins du 8086 (Notez bien que quelques pins sont décrites dans les
cours 8, 9, 10 et 11).
16 lignes de données/adresse avec 2 rôles (A0-A15)
4 lignes d’adresse (A16-A19)
11 lignes pour gérer le mode, les latchs des bus de données/adresses et les bus eux-mêmes (pins 22 + 25 à 34)
3 lignes d’alimentation (GND, GND, VCC)
4 lignes pour les interruptions (NMI, INTR, RESET, INTA)
1 ligne d’horloge (CLK)
1 lignes pour tester le chip (TEST)
Q6.14 Pourquoi le 8086 a-t-il un buffer d’instruction de 6 bytes?
Les instructions sont de longueur variables.
Q6.15 A quoi sert le « transceiver » dans le schéma du mode minimum à l’intérieur de la
« datasheet » du 8086?
Même rôle que MDR. Interface pour transférer les données du CPU au bus de données.
Q6.16 Dans quel ordre et quelles pins du 8086 sont activés tour à tour afin de lire une
donnée ou une instruction en mémoire? Pour écrire?
Voir l’acétate 4 du cours 6.
Q6.17 Comment le 8086 distingue-t-il la mémoire des périphériques au niveau du bus de
contrôle?
Il se sert de la ligne M/IO.
Q6.18 Avec combien d’adresses de mémoire le 8086 peut-il communiquer? Avec combien
d’adresses d’I/O?
2^20 adresses de mémoire.
2^16 adresses d’I/O.
Q6.19 Quel est le premier microprocesseur d’Intel à…
a) … contenir un pipeline?
80486, 1989
b) … des améliorations au pipeline comme les prédicateurs de saut?
Pentium, 1993
c) … contenir une cache?
8086 si on considère le buffer d’instruction comme une cache en 1979, sinon le 286 en 1982
d) … contenir deux caches
Pentium Pro, 1995
e) … être superscalaire?
Pentium, 1993
f) … permettre l’exécution du jeu d’instruction MMX?
Pentium MMX
g) … permettre l’exécution du jeu d’instruction IA-64?
Itanium
h) … contenir deux unités de contrôle?
Dual-Core
i) … contenir un bus PCI?
Pentium, 1993
j) …traiter les fractions avec un coprocesseur dédié?
80486, 1989
Pour tous les microprocesseurs trouvés, donnez les années d’apparition.
Voir plus haut…
Q6.20 Quelle(s) broche(s) du 8086 servent à signaler une interruption au microprocesseur?
INTR, NMI et RESET
Cours 7 : Assembleur, Compilateur et Éditeur de Liens
Q7.1 : Supposons un même programme construit avec les langages de programmation
suivant:
-
Assembleur 8086 (assembleur)
Matlab (langage interprété)
Langage C (haut niveau)
Quel langage produira …le plus gros programmme? …le plus petit? …le plus rapide? ...le
plus lent?
Avec quel langage le programme sera-t-il le plus long à créer? le plus court?
Plus gros = Haut niveau
Plus petit = Assembleur ou langage interprété (si on ne compte pas la taille de l’interpréteur)
Plus rapide = Assembleur
Plus lent = langage interprété
Plus long à créer = Assembleur
Plus court à créer = Haut niveau ou interprété
Q7.2 : Quel le but principal et fondamental d’un langage de programmation?
Permettre de créer rapidement et efficacement un programme.
Q7.3 : Que fait un assembleur? un compilateur?
Transformer un fichier texte écrit selon une certaine convention en code machine.
Q7.4 : Qu’est-ce qu’une DLL (Dynamic Link Library)?
Des fonctions compilées communes à plusieurs programmes.
Q7.5 : Quel type du fichier peut être assemblé, compilé ou interprété? Pourquoi?
Un fichier texte, pour simplicité
Q7.6 : Qu’est-ce qu’un fichier objet?
Un fichier objet est généré par le compilateur. Il s’agit du code correspondant au fichier texte édité par le
programmeur. Les fichiers objets sont reliés entre eux par l’éditeur de lien afin de construire les programmes.
Q7.7 : Que contient un fichier objet?
Un fichier objet contient du code compilé et de l’information sur le code et les variables du fichier compilé pour
l’éditeur de lien.
Q7.8 : Un fichier exécutable contient-il uniquement du code en binaire?
Non. Un fichier exécutable contient aussi des données ou de l’espace réservé pour les données. Il contiendra
également toutes les informations nécessaires pour que le système d’exploitation puisse charger le programme en
mémoire, puis l’exécuter.
Q7.9 : Quels sont les rôles principaux de l’éditeur de liens?
Le premier rôle de l’éditeur de lien est de construire un fichier exécutable ou programme à partir des fichiers
objets et des DLLs. Il associe les symboles trouvés dans certains fichiers objets avec les symboles des autres
fichiers (il fait le lien entre les variables ou fonctions utilisées dans plusieurs fichiers), assigne des emplacements
aux fonctions et aux variables (emplacements relatifs au début du programme), puis produit l’information
nécessaire au système d’exploitation pour charger et exécuter le programme.
Q7.10 : Que fait le compilateur lorsqu’il compile un fichier qui fait référence à une
variable définie dans un autre fichier?
Le compilateur utilise la déclaration de la variable avant de déterminer les instructions qui serviront à manipuler
cette variable. Il indiquera ensuite à l’éditeur de lien, à travers le fichier objet, que la variable n’a pas de mémoire
allouée dans le fichier objet et qu’elle doit se retrouver dans un autre fichier.
Q7.11 : Peut-on faire un programme avec du code écrit en assembleur, du code écrit en C
et du code écrit en C++?
Oui, si l’assembleur, le compilateur C et le compilateur C++ génèrent des fichiers objets de même nature.
Q7.12 : Lorsque vous compilez ou assemblez un programme pour un microprocesseur
d’Intel, pourquoi ce programme fonctionne-t-il sur un microprocesseur d’AMD?
Les deux microprocesseurs supportent les mêmes instructions.
Q7.13 : Lorsque vous utilisez la variable “MaVariable” dans le code de votre programme,
le mot “MaVariable” se retrouvera-t-il dans l’exécutable sur votre disque dur?
Non. Le compilateur/assembleur et l’éditeur de lien remplaceront toutes les références à MaVariable par une
adresse à l’intérieur du programme, l’adresse de la mémoire allouée pour MaVariable.
Téléchargement