Des milliards de tout petits pas
Ton téléphone fait peut-être 2 milliards de calculs par seconde. C'est énorme.
Pourtant, chaque calcul est minuscule : ajouter deux nombres, copier une valeur, comparer deux nombres.
Comment des gestes si petits font-ils un jeu vidéo ? C'est le sujet de cette leçon.
Mots-clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Instruction | Un ordre très simple que le processeur sait faire. | Ajoute 5. |
| Programme | Une liste d'instructions, à suivre dans l'ordre. | Ajoute 5, ajoute 3, double. |
| Registre | Une toute petite case, dans le processeur, qui garde un nombre. | L'accumulateur |
| Accumulateur | Le registre où le processeur garde le résultat en cours. | Il vaut 8 après 5 + 3. |
| Compteur | Un registre qui garde le numéro de la prochaine instruction. | Compteur = 2 |
| Cycle | Les trois temps répétés sans fin : chercher, décoder, exécuter. | |
| Horloge | Elle donne le rythme. Un gigahertz (GHz) est un milliard de tops par seconde. | 2 GHz |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Le cycle en trois temps
Le processeur répète sans fin trois gestes.
Chercher : il lit la prochaine instruction dans la mémoire. Décoder : il comprend de quel ordre il s'agit. Exécuter : il le fait.
Puis le compteur avance d'un pas, et le cycle recommence.
Remets le cycle dans l'ordre
À toi de jouer
Remets le cycle dans l'ordre
3 questionsTes réponses sont corrigées ici et ne sont pas conservées. Un compte garde tes résultats.
Une machine inventée
Pour comprendre, inventons un processeur très simple. Il a un seul registre : l'accumulateur. Il vaut 0 au départ.
Il connaît trois instructions. AJOUTE n ajoute n. RETIRE n enlève n. DOUBLE multiplie par 2.
Exemple travaillé : les trois instructions
| Instruction | Ce qu'elle fait | Accumulateur avant | Accumulateur après |
|---|---|---|---|
| AJOUTE 5 | ajoute 5 | 0 | 5 |
| AJOUTE 3 | ajoute 3 | 5 | 8 |
| DOUBLE | multiplie par 2 | 8 | 16 |
| RETIRE 4 | enlève 4 | 16 | 12 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
À toi : lance la machine
# Une machine inventée : un seul registre, l'accumulateur.
noms = ["AJOUTE", "AJOUTE", "DOUBLE"]
valeurs = [5, 3, 0]
accumulateur = 0
compteur = 0 # le numéro de la prochaine instruction
while compteur < len(noms):
nom = noms[compteur] # 1. chercher
if nom == "AJOUTE": # 2. décoder
accumulateur = accumulateur + valeurs[compteur] # 3. exécuter
elif nom == "DOUBLE":
accumulateur = accumulateur * 2
print("instruction", compteur, nom, "-> accumulateur =", accumulateur)
compteur = compteur + 1
# Change les valeurs, puis ajoute une instruction "AJOUTE" avec la valeur 1.
Pourquoi deux listes ?
Remarque
Le programme est rangé dans deux listes. La première garde les noms. La deuxième garde les nombres. L'instruction numéro 1 est noms[1] et valeurs[1]. Le compteur sert d'indice.