13.08.2012 Views

Fonctionnement d'un ordinateur depuis zéro

Fonctionnement d'un ordinateur depuis zéro

Fonctionnement d'un ordinateur depuis zéro

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Partie 3 : Processeur et Assembleur 85/343<br />

Un peu de programmation !<br />

Notre processeur va exécuter des programmes, fabriqués à l'aide de ce qu'on appelle un langage de programmation. Ces<br />

langages de programmations sont des langages qui permettent à un humain de programmer plus ou moins facilement un<br />

<strong>ordinateur</strong> pour que celui-ci fasse ce qu'on veut. Ces langages de programmations ont influencés de façon notable les jeux<br />

d'instructions des processeurs modernes : de nombreux processeurs implémentent des instructions spécialement conçues pour<br />

faciliter la traduction des "briques de base" de certains langages de programmation en une suite d'instructions machines. Ces<br />

fameuses "briques de base" sont ce que l'on appelle les structures de contrôle.<br />

Autant prévenir tout de suite : j'ai fait en sorte que même quelqu'un qui ne sait pas programmer puisse comprendre cette partie.<br />

Ceux qui savent déjà programmer auront quand même intérêt à lire ce chapitre : il leur permettra de savoir ce qui se passe quand<br />

leur <strong>ordinateur</strong> exécute du code. De plus, ce chapitre expliquera beaucoup de notions concernant les branchements et les<br />

instructions de test, survolées au chapitre précédent, qui serviront plus tard quand on abordera la prédiction de branchement et<br />

d'autres trucs du même acabit. Et c'est sans compter que vous allez apprendre des choses intéressantes, comme l'utilité de la pile<br />

dans les architectures actuelles.<br />

C'est un ordre, éxecution !<br />

On va commencer ce chapitre par quelques rappels. Vous savez déjà qu'un programme est une suite d'instructions stockée dans<br />

la mémoire programme. Lorsqu'on allume le processeur, celui-ci charge automatiquement la première instruction du programme : il<br />

est conçu pour. Puis, il va passer à l'instruction suivante et l'exécuter. Notre processeur poursuivra ainsi de suite, en passant<br />

automatiquement à l'instruction suivante, et exécutera les instructions du programme les unes après les autres.<br />

Il fera ainsi jusqu'à la dernière instruction de notre programme. Celle-ci est souvent une instruction qui permet de stopper<br />

l'exécution du programme au point où il en est (du moins si le programme ne boucle pas indéfiniment). Cette fameuse instruction<br />

d'arrêt est souvent exécutée par le programme, histoire de dire : "j'ai fini" ! Ou alors pour dire : "j'ai planté !" .<br />

Certains processeurs modernes fonctionnent <strong>d'un</strong>e manière légèrement différente de ce qu'on vient de voir. Par exemple,<br />

ils peuvent éxecuter plusieurs instructions à la fois, ou peuvent exécuter les instructions <strong>d'un</strong> programme dans un ordre<br />

différent de celui imposé par notre programme. On verra cela plus tard, dans la suite du tutoriel. Qui plus est, il existe<br />

une classe de processeurs un peu spéciaux, qui n'utilise pas de registre d'adresse d'instruction et n’exécute pas<br />

vraiment les instructions dans l'ordre imposé par un programme qui demanderait de les exécuter unes par unes, en série<br />

: il s'agit des fameuses architectures dataflow !<br />

Passage à l'instruction suivante<br />

Il est évident que pour éxecuter une suite d'instructions dans le bon ordre, notre <strong>ordinateur</strong> doit savoir quelle est la prochaine<br />

instruction à exécuter. Il faut donc que notre processeur se souvienne de cette information quelque part : notre processeur doit<br />

donc contenir une mémoire qui stocke cette information. C'est le rôle du registre d'adresse d'instruction, aussi appelé Program<br />

Counter. Ce registre stocke l'adresse de la prochaine instruction à exécuter. Cette adresse permet de localiser l'instruction<br />

suivante en mémoire. Cette adresse ne sort pas de nulle part : on peut la déduire de l'adresse de l'instruction en cours d’exécution<br />

par divers moyens plus ou moins simples qu'on verra dans la suite de ce tutoriel.<br />

Program Counter<br />

Ce calcul peut être fait assez simplement. Généralement, on profite du fait que ces instructions sont exécutées dans un ordre bien<br />

précis, les unes après les autres. Sur la grosse majorité des <strong>ordinateur</strong>, celles-ci sont placées les unes à la suite des autres dans<br />

l'ordre où elles doivent être exécutées. L'ordre en question est décidé par le programmeur. Un programme informatique n'est donc<br />

qu'une vulgaire suite d'instructions stockée quelque part dans la mémoire de notre <strong>ordinateur</strong>.<br />

Par exemple :<br />

Adresse Instruction<br />

0 Charger le contenu de l'adresse 0F05<br />

1 Charger le contenu de l'adresse 0555<br />

2 Additionner ces deux nombres<br />

3 Charger le contenu de l'adresse 0555<br />

4 Faire en XOR avec le résultat antérieur<br />

... ...<br />

www.siteduzero.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!