Professional Documents
Culture Documents
lordinateur minimal
La mmoire.
Chaque tiroir reprsente alors
une case mmoire qui peut
contenir un seul lment : des
donnes.
Le nombre de cases
mmoires pouvant tre trs
lev, il est alors ncessaire
de pouvoir les identifier par un
numro.
Il y a 3 sortes de bus :
Le bus de donnes : il
transporte les donnes.
Dans lexemple prcdent, il
transporte le nombre 41 .
Le bus de commande : en gros, ce bus sert synchroniser lensemble afin que tout se passe dans le bon ordre.
Une mmoire morte ( ROM = Read Only Memory ) charge de stocker le programme. Cest une mmoire lecture seule.
Une mmoire vive ( RAM = Random Access Memory ) charge de stocker les donnes intermdiaires ou les rsultats de calculs. On peut lire ou crire des
donnes dedans, ces donnes sont perdues la mise hors tension.
Le microprocesseur.
Un microprocesseur est un circuit intgr complexe.
Il rsulte de lintgration sur une puce de fonctions logiques combinatoires (logiques et/ou arithmtiques) et squentielles
(registres, compteur, etc...). Toutes ces fonctions sont obtenues partir de transistors.
Il est capable dinterprter et dexcuter les instructions dun programme, de lire ou de sauvegarder les rsultats dans la
mmoire et de communiquer avec les units dchange. Toutes les activits du microprocesseur sont cadences par une
horloge.
On caractrise le microprocesseur par :
Un processeur actuel comporte plusieurs milliards de transistors. Le nombre de transistors sur un processeur suit la loi de Moore
[http://fr.wikipedia.org/wiki/loi_de_Moore], du nom dun des fondateurs dIntel qui prdit alors cette loi empirique.
Depuis le tout premier circuit intgr (le 4004) jusqu nos jours, cette loi sest toujours vrifie, mme si on sen loigne actuellement. Voici un exemple avec
quelques processeurs dIntel :
Remarque
La ralisation de circuits intgrs de plus en plus complexe a t rendue possible par lapparition du transistor en 1947. Il a fallu attendre 1958 pour voir
apparatre le premier circuit intgr ralis par Texas Instrument.
Laugmentation du nombre de transistors sur une puce est possible par la miniaturisation des transistors. Mais a ne sera pas possible indfiniment : en
2010, les transistors sont gravs en 32 nanomtres, soit 32 milliardimes des mtres : cest la taille de quelques dizaines datomes.
En rduisant trop la taille de la structure en maillage de transistors, il risque de se crer des interactions lectroniques parasites entre les transistors eux
mme (leffet tunnel par exemple, un effet de la mcanique quantique) et cela peut crer des problmes...
Un jour, il faudra donc utiliser une solution autre que celle des puces en silicium, si lon veut continuer augmenter la puissance des ordinateurs...
Les diffrents organes du systme sont relis par des voies de communication appeles bus.
Le processeur peut communiquer sur le bus de donnes avec les diffrentes mmoires et les diffrents priphriques. Pour viter les conflits on attribue
chaque priphrique un zone dadresse et une fonction "dcodage dadresse" charge de "mettre" le processeur en communication avec le bon
priphrique.
Pour donner un ordre de grandeur, le processeur de mon ordinateur tourne une frquence de 2,5 GHz : il effectue donc 2,5 milliards de cycles par seconde.
Ce cadencement du processeur est assur par une horloge (un quartz qui vibre sous leffet pizolectrique
[http://fr.wikipedia.org/wiki/pi%C3%A9zo%C3%A9lectrique]).
Concrtement, le signal dhorloge est un signal lectrique alternatif qui dclenche un nouveau cycle de calcul chaque priode du signal.
Le processeur suit le signal dhorloge et effectue un nouveau calcul chaque cycle. Les calculs sont donc effectus les uns la suite des autres.
Du matriel au programme.
Un processeur est constitu de milliards de transistors, ces transistors comparent des tensions lectriques pour effectuer des calculs. Il utilise des donnes qui
sont stockes dans des mmoires.
Pour servir quelque chose, lordinateur doit recevoir des donnes sur lesquelles il va calculer. Ces donnes sont fournies par un programme.
Un programme, cest une suite dinstructions lmentaires. Elles mmes tant des suites dtats lectriques dans les transistors.
Le programme est enregistr dans la mmoire et le processeur va lire des instructions dans cette mmoire. Chaque cycle dhorloge permet davancer un peu
plus dans les calculs.
Un processeur ne sait calculer quen binaire (avec des 0 et des 1) : les programmes sont donc fournis en binaire.
Donc si on veut que le processeur effectue un calcul, il faudrait lui dire quelque chose de ce genre l :
01010100 10110101 01101101 110110101 10101010 11011110 10101011 10111100 1100011 0101101 01111110 .
Ce qui est totalement impossible pour un humain.
On peut dj crire tout a en hexadcimal, pour allger lcriture : 54 B5 6D DA D5 6F 55 DE 63 5A FC , mais a reste illisible. Le processeur, lui ne
comprend que a.
Les fabricants de processeurs ont donc donn des noms facile retenir pour chaque instruction en binaire.
Par exemple, le nom mov peut correspondre linstruction 10101101 01111001 . Lensemble des noms faciles retenir constitue le langage assembleur.
Voici, par exemple, quelques-unes des quelques dizaines dinstructions utilises pour programmer un processeur x86 :
mov : (move) dplace le contenu dune case mmoire dans une autre case.
inc : (increment) incrmente la valeur contenue dans une case mmoire.
neg : (negative) prend un nombre et donne son oppos.
cmp : (compare) compare deux nombres.
jmp : (jump) saute un autre endroit du programme.
Le langage assembleur nest constitu que des instructions basiques comme celles ci.
Pour effectuer des calculs plus complexes, il faut au pralable dcomposer ce calcul en une suite dinstructions quil connat. Tout comme on peut dcomposer
une puissance en une suite de multiplications, puis en une suite dadditions
73 = 7 7 7 = 7 + 7 + 7 + 7 + 7 + 7 + 7 + 7 + 7 + 7 + 7 + 7 + 7 + 7 + 7 + 7 + 7 + 7 + 7 + 7 + 7
Pour que le processeur comprenne notre programme cod avec des mov et des inc, il faut les retranscrire en binaire. Cette tape est nomme lassemblage.
Cest a, la programmation.
Si le programme ne marche que sur un processeur et non sur un autre, on dit que le programme nest pas portable.
Ds les dbuts de linformatique moderne on a donc invent un moyen pour palier ces deux inconvnients que sont la lenteur coder et la non portabilit : les
langages de haut niveau.
Voici un petit tableau avec le code qui permet dafficher le message hello world dans quelques langages :
La compilation
Le problme des langages de haut niveau cest quils ne sont absolument pas comprhensibles par le processeur !
Avant de pouvoir tre utilis, le code doit tre traduit en langage assembleur.
Les langages de haut niveaux permettent donc dacclrer la cration dun programme, et de le rendre portable !
Lanimation ci-contre illustre le fonctionnement dune machine trs simple construite selon le modle de von Neumann. La taille des emplacements de mmoire
est de 16 bits. Le format des instructions est dit " une adresse : il comporte un code dopration sur 5 bits, spcifiant lopration excuter et une adresse sur
11 bits qui est celle de loprande de cette instruction. Ainsi il peut y avoir 25 = 32 oprations diffrentes, et on peut adresser au plus $2^11=2048$
emplacements.
Soit raliser lopration c a+b (donner c la valeur de la somme a+b), o a, b, c sont des donnes contenues dans des emplacements de mmoire dont
ladresse est note A, pour la donne a, B pour la donne b, et C pour la donne c.
Cette opration est ralise par la squence de programme LOAD A ; ADD B ; STO C, o LOAD, ADD et STO dnotent des instructions dont leffet est le
suivant :
Attention : Il faut bien distinguer ici ladresse dun emplacement de son contenu. Les adresses sont A, B, C ; les contenus sont a, b, c. Ici, A=1027 (10000000011
en binaire), B=1152 (10010000000) et C=681 (01010101001). Les instructions dsignent les donnes par leur adresse (en binaire) et les codes dopration par
un numro (galement en binaire) attribu une fois pour toutes par convention (ici LOAD est 10, ou 01010 en binaire), ADD est 23 (10111) et STO est 14
(01110). Cette squence dinstructions, ainsi codes, est contenue dans les emplacements de mmoire conscutifs dadresses 465, 466 et 467. Dans lunit de
commande, un compteur ordinal de 11 bits contient chaque instant ladresse de linstruction excuter. Une fois linstruction excute, il dsigne ladresse de
la prochaine instruction (celle de lemplacement suivant en mmoire, sauf si linstruction excute tait un branchement, cest dire un droutement vers une
adresse diffrente). Initialement, nous supposons que le compteur ordinal contient ladresse de LOAD A (soit 465, ou 00111010001).
partir de l, on peut suivre le droulement de notre squence de programme. Linstruction excuter, dsigne par le compteur ordinal, est charge dans un
registre dinstruction o son contenu est dcod : la partie code opration indique lopration effectuer, et la partie adresse ladresse de loprande. Ces deux
informations sont transmises lunit arithmtique qui va excuter linstruction. Le compteur ordinal est alors incrment, et le cycle recommence : voir
lanimation ci-contre, o les flches rouges indiquent le choix dun emplacement de mmoire (que ce soit celui dune instruction ou dune donne), et les flches
bleues des transferts dinformation.
Mme un morceau de programme aussi simple peut donner lieu des incidents. Ainsi, il se peut que le rsultat de lopration a+b soit trop grand pour tenir
dans un emplacement de mmoire. Dans ce cas, un message derreur est mis pour signaler lincident et peut activer un programme de rcupration derreur
... condition que le programmeur ait prvu un tel programme. Cest prcisment une omission de cette nature (combine avec dautres fautes) qui a caus en
1996 la perte de la fuse Ariane 501.
Conclusion
Il faut retenir que ....
Documents joints
principes_materiel_beamer
principes_materiel_papier
Commentaires