• Aucun résultat trouvé

Cours 5 : Introduction aux microprocesseurs

N/A
N/A
Protected

Academic year: 2022

Partager "Cours 5 : Introduction aux microprocesseurs"

Copied!
6
0
0

Texte intégral

(1)

Cours 5 : Introduction aux microprocesseurs

Q5.1 : À 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.2 : À 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.3 : 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.4 : Pourquoi a-t-on besoin du registre MAR?

Il faut un buffer où mettre la valeur des lignes d’adresses voulues.

Q5.5 : Quel matériel pourrait être utilisé afin de concevoir un registre?

Bascules SRs, bascules D, autres flip-flops…

Q5.6 : 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.7 : 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.8 : 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.9 : 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.10 : 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.

(2)

Q5.11 : Qu’est-ce qu’une micro instruction? Quel est l’avantage d’utiliser des micro- instructions 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.12 : 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.13 : 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 Description

Fetch 1 et 2; PC –> Bus d’adresse Mettre l’adresse de l’instruction LOAD R0, MaVar sur le bus d’adresse

Fetch 3; Contrôle Activer la ligne de lecture de la mémoire

Fetch 4,5; Bus de données –> IR Mettre l’instruction provenant de la mémoire dans le registre d’instruction

Load 1,2; IR –> Bus d’adresse Mettre l’adresse de la variable contenue dans l’instruction sur le bus d’adresse

Load 3; Contrôle Activer la ligne de lecture de la mémoire

Load 4, 5; Bus de données –> R0 Mettre la donnée provenant de la mémoire dans R0 PC = PC + 1 instruction Passer automatiquement à l’instruction suivante Fetch 1 et 2; PC –> Bus d’adresse Mettre l’adresse de l’instruction ADD R0, R0, R0 sur

le bus d’adresse

Fetch 3; Contrôle Activer la ligne de lecture de la mémoire

Fetch 4,5; Bus de données –> IR Mettre l’instruction provenant de la mémoire dans le registre d’instruction

Add 1; ALU Additionner R0 avec R0

Add 2; ALU Mettre le résultat dans R0

PC = PC + 1 instruction Passer automatiquement à l’instruction suivante

1 Les noms et les numéros des sous-instructions proviennent de l’annexe du cours 5

(3)

Cours 6 : La famille 8086

Q6.1 Le 8086 a-t-il une architecture CISC ou RISC?

CISC

Q6.2 Le 8086 a-t-il un pipeline?

Non

Q6.3 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.4 Pourquoi le 8086 a-t-il un buffer d’instruction de 6 bytes?

Les instructions sont de longueur variables.

Q6.5 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.6 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.7 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.8 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.9 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

(4)

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.10 Quelle(s) broche(s) du 8086 servent à signaler une interruption au microprocesseur?

INTR, NMI et RESET

(5)

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?

(6)

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.

Références

Documents relatifs

Ci-contre, un tableau reportant le nombre de cas cumulé de Covid autour du début du mois de mars 2020.. Représenter les données du tableau avec un nuage de points (jour en abcisse

Q5.12 : 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

Mii) En fonction des valeurs de l’annexe B, comment serait encodée l’instruction MOV R0, Mavar, sachant que Mavar est une variable en mémoire? Choisissez l’adresse de MaVar.

Si la valeur stockée dans le registre R0 est égale 42 alors la prochaine instruction à exécuter se situe à l'adresse mémoire 85 , sinon la prochaine instruction à exécuter se situe

Montrer que, dans une base bien choisie, la matrice de s a est triangulaire supérieure.. En déduire l'existence d'un supplémentaire de V stable

Comme il est demandé de combien est l’augmentation, on répond qu’il s’agit d’une hausse

Pour obtenir la commande des deux rotations, il suffit de définir des points suffisamment proches les uns des autres et permettant de décrire le déplacement souhaité du point B3

[r]