Manuel Lab7
Manuel Lab7
Cyclisme Informatique | 61
LABORATOIRE
7
Cyclisme informatique
OBJECTIF
Apprenez le cycle de récupération-exécution des ordinateurs.
RÉFÉRENCES
: s i uqe r ■ l e i c i goL■
■ 1)■ Application■CPU■Super■Simple■du■site■web■du■manuel■de■laboratoire■(Super■Simple■CPU.jar)
CONTEXTE
Revoyez ces sujets de votre manuel, notes de cours ou ressources en ligne :
■Le concept de programme stocké, mémoire
ALU, unités d'entrée et de sortie, unité de contrôle
Cycle de récupération-décodage-exécution, instructions en code machine, opcodes
■Représentation des nombres, nombres binaires, notation en complément à deux
ACTIVITÉ
Les ordinateurs sont incroyablement complexes, mais à un niveau fondamental, ils sont étonnamment simples.
Un programme se compose de milliers, millions ou milliards d'instructions, toutes exécutées
éblouissant rapide. Mais chaque instruction individuelle est assez simple.
Si chaque instruction est simple et facile à comprendre, pourquoi mettre des milliers
ensemble aboutit à un logiciel qui mettrait à l'épreuve l'intelligence d'Albert Einstein?
Les gens essaient de le comprendre depuis des années, car le comprendre pourrait donner
des indices pour comprendre, écrire et maintenir ce logiciel. La difficulté semble
être dans ce que certains appellent le "écart sémantique" entre les problèmes que les informaticiens
vouloir résoudre en utilisant des ordinateurs et les outils avec lesquels ils les résolvent - des outils tels que
comme des logiciels, des langages de programmation, et même du matériel. Si les outils sont trop simples, nous
il faudra les utiliser de manière complexe pour mener à bien le travail. Si les outils sont plus
complexes, ils peuvent faire plus en une étape et sont plus faciles à décrire. Pensez à combien
Le travail nécessaire pour préparer un repas, mais combien il est facile de passer une commande dans un restaurant.
Dans ce laboratoire, nous étudierons les instructions d'un ordinateur très simple, puis nous observerons
des programmes s'exécutent sur cet ordinateur.
Démarrez l'application Super Simple CPU. Les dispositifs d'entrée et de sortie sont uniquement textuels.
zones à gauche. Le CPU et la mémoire sont clairement indiqués, bien que la mémoire de ceci
l'ordinateur est ridiculement petit : 16 mots de mémoire, chacun de 16 bits de long, soit environ
0,0000305 mégaoctets !
Sélectionnez l'exemple 5 dans le menu déroulant pour charger le programme exemple, puis
cliquez sur le bouton Exécuter. Après quelques secondes, vous devriez voir ceci :
Au fur et à mesure que le programme s'exécute, il parcourt le cycle d'instruction de base, qui est
couramment appelé le cycle de récupération-exécution. Cette application affiche les étapes du cycle dans le
zone de texte bleue au milieu.
Il y a trois registres dans ce processeur :
PC Le compteur de programme
ACC L'accumulateur
IR Le registre d'instruction
OPCODES
1S
PI This stops the computer; no more fetch/decode/execute cycles
jusqu'à ce que vous réinitialisiez.
mémoire.)
1001 JNG Sautez à l'instruction à l'emplacement mémoire indiqué si le
la valeur de l'accumulateur est négative ; sinon, il suffit d'ajouter 1 au
PC. (Par exemple, 1001000000001111 : Mettre la valeur 15 dans le PC, si
accumulateur < 0 ; sinon, allez à l'instruction suivante.
1010 JZR Sautez à l'instruction à l'emplacement mémoire indiqué si le
la valeur de l'accumulateur est zéro ; sinon, ajoutez simplement 1 au PC.
(Par exemple, 10 10000000001111 : Mettre la valeur 15 dans le PC, si
accumulateur = 0; sinon, passez à l'instruction suivante.)
Chaque instruction dans cet ordinateur super-simple a deux parties : le code opération et l'opérande.
L'opcode est les quatre premiers bits et représente les instructions. Par exemple, 0001 est le
Ajouter une instruction, comme le montre la liste de référence des codes opcode ci-dessus. L'opérande peut être plusieurs
différentes choses selon l'opcode que vous utilisez. C'est souvent l'adresse
d'une cellule de mémoire, utilisée par ADD, SUB, LOD et STO. Si l'instruction est LDI (charger
immédiat), l'opérande est une constante de 12 bits qui est directement mise dans l'accumulateur.
Les instructions de saut (JMP, JNG, JZR) utilisent l'opérande de 12 bits comme valeur qui est
stocké dans le registre PC, provoquant ainsi un saut de contrôle vers cet emplacement en mémoire. Quelques
instructions (STP, IN, OUT) ignore complètement l'opérande.
Cette application CPU vous permet de voir chaque instruction dans des détails presque microscopiques. Si
l'application est en cours d'exécution, appuyez sur les boutons Arrêter et Réinitialiser. Ensuite, faites défiler vers le bas le choix de vitesse
dans le menu à côté de Exécuter et sélectionnez manuel.
Cette fonction vous permet de contrôler les étapes de chaque instruction. Cliquez sur Exécuter
pour commencer le programme. Chaque instruction commence et fait une partie du cycle de récupération-exécution
cycle avant de s'arrêter. Quand il s'arrête, le mot « prêt... » apparaît dans la boîte à côté du
Bouton d'avance. Des informations sur ce qui est sur le point de se produire sont fournies dans la boîte bleue
au-dessus des boutons.
Utiliser le bouton Avancer pour parcourir les instructions prend un certain temps, mais cela
vous permet d'observer attentivement chaque partie de chaque instruction. De plus, les adresses et
valeurs qui circulent entre le CPU et la mémoire, et entre l'unité d'entrée/sortie et
le CPU, sont animés en nombres binaires jaunes à travers le bus rouge.
La vitesse normale désactive le bouton Avancer mais anime toujours les instructions,
bien que la vitesse rapide ne montre pas les animations, permettant au programme de s'exécuter rapidement.
En plus d'exécuter chaque instruction, vous pouvez "faire étape unique" dans un programme. Étape unique
le pas se réfère à l'exécution d'une instruction complète puis à l'arrêt du programme par
cliquer sur le bouton Étape1. De nombreux débogueurs pour des langages de programmation réels ont également
une option de pas à pas afin que vous puissiez approfondir un programme problématique et en déceler les
bugs. Pensez au pas à pas comme à une sorte de microscope temporel : vous amplifiez le temps de retard
entre les instructions à une très grande quantité afin que vous puissiez voir ce qui se passe.
Il existe un certain nombre de programmes d'exemple, allant de ridiculement courts et
simple à quelque peu compliqué. Le plus grand commun diviseur est assez complexe à
comprendre, et cela remplit presque toute la mémoire de 16 mots.
Chargez le programme GCD (exemple 6). Les cellules mémoire 0 à 10, incluses, contiennent
le programme. La cellule mémoire 14 contient la première valeur entière (dans l'exemple, c'est 18,
qui est 100102), et la cellule 15 contient le deuxième entier (dans l'exemple, c'est 24, ce qui
est 110002).
Il est extrêmement difficile de déterminer exactement ce que fait le programme en se contentant de regarder.
dans le contenu de la mémoire. En fait, il est impossible de se fier à la mémoire seule
si un emplacement contient un entier de 16 bits ou une instruction. Alors, comment un ordinateur
« savoir » ce qui est dans un mot mémoire ? Cela ne le sait jamais vraiment ; seul le PC détermine cela. Si
le contenu du mot mémoire est récupéré dans le registre d'instructions (IR) et traité comme une instruction, puis
ils sont une instruction.
Attends une minute ! Cela ouvre la porte à un terrible problème ! Que se passe-t-il si un programme "saute" ?
dans une section de données ? Cela peut-il arriver ? Quel sera le résultat ? La réponse à la
la deuxième question est certainement oui, un ordinateur peut plonger dans les données. C'est l'un des principaux
implications du concept de programme stocké.
Un inconvénient de cette capacité à plonger dans les données est qu'une conception inappropriée
le programme peut obtenir la mauvaise instruction de saut (à cause d'une conception inappropriée
le programmeur l'a écrit de cette façon !), commencez à interpréter les données comme des instructions, et probablement faites
quelque chose de terrible, comme effacer toute la mémoire ou lancer des missiles nucléaires. Matériel
les designers ont inventé des moyens pour s'assurer que cela n'arrivera pas. Malheureusement, de mauvaise humeur
les gens peuvent utiliser cette capacité à modifier des programmes pour écrire des choses malveillantes appelées virus.
Un avantage de la capacité à plonger dans les données est qu'un programme peut créer un nouveau
programmer, ou même réécrire une partie de lui-même, puis l'exécuter immédiatement. Puisque les programmes
sont vraiment des données, cette capacité a été perçue par certains pionniers comme un moyen pour les programmes
apprendre et s'améliorer. Cela ne s'est pas tout à fait passé ainsi, tout simplement parce que l'apprentissage est un
un processus extrêmement complexe (comme vous le savez bien !), mais l'esprit de cette exécution dynamique est
utilisé dans de nombreux aspects de l'informatique aujourd'hui.
Le but de l'application Super Simple CPU n'est pas de vous transformer en programmeur.
Au contraire, il est destiné à vous permettre de voir le cycle de récupération-exécution suivre son chemin à travers un
CPU typique. Dans les exercices, vous étudierez quelques instructions individuellement. La plus grande
des programmes ont été inclus afin que vous puissiez vous faire une idée de ce à quoi ressemble un programme complet et
agit à ce niveau bas.
EXERCICE 1
Nom______________________________________ Date_____________________
Section____________________________________
2) Sélectionnez le premier exemple en déroulant la liste des exemples et en sélectionnant Exemple 1 - séquence.
3) Le programme comprend trois instructions, aux adresses mémoire 0, 1 et 2. Notez les trois
instructions ou prenez une capture d'écran.
4) Cliquez sur la liste des Opcodes ou sur le bouton Plus d'infos pour obtenir une clé des opcodes.
5) Décodez les trois instructions. Regardez les quatre premiers bits de chaque cellule mémoire et trouvez ces bits.
modèles dans la clé des opcodes. Écrivez le mnémonique correspondant en trois lettres.
EXERCICE 2
Nom______________________________________ Date_____________________
Section____________________________________
4) Puisque vous avez remplacé l'instruction STP à l'étape 3, vous devez créer une nouvelle instruction STP dans le mot 3.
pour vous assurer que votre programme s'arrête.
5) Exécutez votre programme. Lorsque celui-ci se termine, vous devriez voir votre numéro d'entrée dans la cellule mémoire.
étiqueté “15.”
6) Prenez une capture d'écran de votre programme.
EXERCICE 3
Nom
Section____________________________________
1) Démarrez l'application Super Simple CPU, ou appuyez sur les boutons Réinitialiser et Effacer Mémoire s'il est déjà en cours d'exécution.
Tapez les instructions suivantes dans les cellules de mémoire 0 et 1. (Les nombres sur 16 bits sont séparés par
des espaces pour les rendre plus faciles à lire. Ne mettez pas d'espaces dans vos chiffres lorsque vous les tapez !
4) Exécutez le programme en pas à pas. Appuyez sur le bouton Étape. Une fois la première instruction terminée
(la boîte bleue dira « Mise à jour de l'PC »), écrivez son moyen mnémotechnique de trois lettres et la valeur dans le
accumulateur.
7) Expliquez la différence entre les deux instructions. (Conseil : Ce sont toutes deux des instructions de chargement, qui
cela signifie qu'ils provoquent qu'un nouveau nombre soit mis dans l'accumulateur. Mais il y a une différence.)
9) Quelle séquence d'instructions régulières pourrait être utilisée pour faire la même chose ? C'est-à-dire, comment pourrions-nous
stocker un numéro spécifique, disons 133, dans un emplacement mémoire spécifique, disons la cellule mémoire 13 ?
EXERCICE 4
Nom______________________________________ Date_____________________
Section____________________________________
5) Soyez un "désassembleur" humain. Traduisez les instructions informatiques dans les cellules 1 à 5 en mnémotechniques.
Rappelez-vous, seuls les 4 premiers bits de chaque instruction sont l'opcode. Pour voir la liste des opcodes, cliquez sur le
Liste des opcodes du bouton.
EXERCICE 5
Nom______________________________________
Section____________________________________
5) Exécutez le programme. Une fois terminé, prenez une capture d'écran. Trouvez la cellule mémoire qui contient le PGCD et
Entourez-le.
6) Quel est le PGCD de 30 et 31 ? Vous pourriez utiliser l'application pour confirmer vos soupçons. Cliquez sur ceux-ci
buttons:Stop,Reset. Then type “30” into cell 14, and type “31” into cell 15. Press theRunbutton.
Section____________________________________
0 LDI 13
1 LOD 13
2 MST 12
3 STP
LIVRABLES
Remettez vos feuilles manuscrites montrant vos réponses aux exercices, ainsi que le
captures d'écran comme demandé.
ENQUÊTE APPROFONDIE
Nous avons été très rusés avec l'application Super Simple CPU. Nous vous avons appris quelques
programmation élémentaire ! Il est difficile d'examiner un dispositif programmable comme un ordinateur
sans parler de programmation juste un petit peu. Peut-être plonger vos pieds dans
cette eau peu profonde avant d'apprendre officiellement les tenants et aboutissants de la programmation diminue le
la peur, ou aiguiser l'appétit ! Demandez à n'importe quel programmeur : bien sûr, la programmation peut être frustrante,
agaçant, ou irritant par moments, mais surtout, quand vous le comprenez, c'est amusant ! Beaucoup de plaisir !
Si chaque programme est finalement composé de milliers de CPU individuels et simples
instructions, comme nous l'avons vu dans l'application Super Simple CPU, qu'est-ce qui rend le logiciel si complexe ?
Investigons par analogie, en nous tournant vers d'autres disciplines.
Pensez à un domaine d'études que vous aimez : la musique, la chimie, la politique, la linguistique.
géologie. Dans la plupart des domaines, il existe des éléments de base à partir desquels des choses plus complexes sont
construit. La musique a des tonalités et des rythmes. La chimie a des atomes et des couches de valence des électrons.
D'où vient la complexité ? Par exemple, en chimie, il n'y a qu'un nombre limité de
différents éléments (types d'atomes), et il n'y a que quelques façons différentes dont ils peuvent se lier
les uns aux autres et s'accrochent ensemble. Pourquoi, alors, y a-t-il environ 100 000 composés ?
Écrivez quelques paragraphes dans lesquels vous spéculerez sur la manière dont des choses complexes peuvent émerger.
de combiner quelques éléments de base. Comment pouvez-vous assembler des éléments de base pour atteindre
systèmes complexes ?