Sunteți pe pagina 1din 7

Architecture des ordinateurs

jeudi 18 octobre 2012


par math@ [spip.php?auteur1]
popularit : 1%

lordinateur minimal
La mmoire.

Une mmoire peut tre


reprsente comme une
armoire de rangement
constitue de diffrents tiroirs.


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.

Ce numro est appel


adresse.

Chaque donne devient alors


accessible grce son
adresse.

Ladresse permet de reprer une


case : par exemple, si on
demande la mmoire H,
que contient la case n100 ? il
nous rpondra son contenu : Il
contient le nombre 41 ! .

Vous laurez compris : cest le


processeur qui va demander le
contenu des cases mmoires et
ce dernier va les lui donner. Et
cette communication se fait par
les "bus".

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 dadresse : lorsque le


processeur demande le
contenu dune case, cest ici
que passe le numro de la
case. Dans lexemple, cela correspond au n100 .

Le bus de commande : en gros, ce bus sert synchroniser lensemble afin que tout se passe dans le bon ordre.

Physiquement, elle se dcompose souvent en :

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 :

sa frquence dhorloge : en MHz ou GHz.


le nombre dinstructions par seconde quil est capable dexcuter : en MIPS (million dinstructions par seconde).
la taille des donnes quil est capable de traiter : en bits.

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 :

1971 : Intel 4004 : 2 300 transistors

1978 : Intel 8086 : 29 000 transistors

1982 : Intel 80286 275 000 transistors

1989 : Intel 80486 : 1 160 000 transistors

1993 : Pentium : 3 100 000 transistors

1995 : Pentium Pro : 5 500 000 transistors

1997 : Pentium II : 27 000 000 transistors

2001 : Pentium 4 : 42 000 000 transistors

2004 : Pentium Extreme Edition : 169 000 000 transistors

2006 : Core 2 Quad : 582 000 000 transistors

2010 : Core i7 : 1 170 000 000 transistors

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...

Le modle de Von Neumann


Pour traiter une information, un microprocesseur seul ne suffit pas, il faut linsrer au sein dun systme minimum de traitement programm de linformation.
John Von Neumann est lorigine dun modle de machine universelle de traitement programm de linformation (1946). Cette architecture sert de base la
plupart des systmes microprocesseur actuel. Elle est compos des lments suivants :

une unit centrale


une mmoire principale
des interfaces dentres/sorties

Les diffrents organes du systme sont relis par des voies de communication appeles bus.

Schma du modle de Von Neumann.


Remarque
La prsence dun "dcodeur dadresses" est ncessaire du fait de la multiplication des priphriques autour du processeur.

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.

Les cycles dhorloge


la notion du temps
le processeur effectue plein de calculs la suite ! En fait, on dit quil travaille en cycles. Ces cycles sont effectus sur lensemble du systme de transistors et
chaque cycle permet davancer dans les calculs.

Le nombre de cycles par seconde est nomm la frquence du processeur


(exprime en Hertz : 1 cycle en 1 seconde = 1 Hz).

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.

Exemple : Un programme en assembleur...


loadn 14 R0 # place le nombre 14 dans le registre R0

loadn 2 R1 # place le nombre 2 dans le registre R1

storer R1 R2 # copie le contenue de R1 dans R2

storer R1 R3 # copie le contenue de R1 dans R3

add R0 R2 # addition R0+R2 et place le rsultat dans R2

mul R0 R3 # multiplication R0R3 et place le rsultat dans R3

store R0 0 # place le contenu de R0 ladresse mmoire @0

store R1 1 # place le contenu de R1 ladresse mmoire @1

store R2 2 # place R2 dans @2

store R3 6 # place R3 dans @6

Au final, la mmoire contiendra quelques valeurs :

On a utilis le processeur pour aller modifier des donnes prsentes en mmoire.

Cest a, la programmation.

Lassembleur, peu pratique ?


Mme si coder en
assembleur est plus
rapide quen binaire,
cela reste une tape
fastidieuse : manipuler
les donnes et les
placer octet par octet
dans la mmoire ou
dans les registres, cest
long.

De plus que chaque


processeur possde des
noms et des numros
dinstructions diffrents !
Ainsi, un code en
assembleur qui
fonctionne sur un
processeur Pentium ne
marchera pas forcment
sur un AMD 64 ou sur
un processeur ARM. En
gros, si vous crivez un
programme sur votre ordinateur, il ne marchera pas sur le mien ! Cest embtant...

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.

Les langages de haut niveau


Les langages de haut niveau permettent une programmation rapide et plus simple que lassembleur. Le code source est humainement comprhensible

Parmi les langages de haut


niveau, il y a une multitude
de langages diffrents.

Le C est un exemple, mais


peut-tre avez vous entendu
parler des langages Java,
Python, PHP ?

Ce sont tous des langages


de haut niveau ! Il en va des
prfrences du programmeur
dutiliser lun ou lautre des
langages pour faire ses
programmes.

Chaque langage possde sa


syntaxe et ses objectifs.

Par exemple, le langage Perl


est trs bon pour chercher et
analyser dans des fichiers
textes, le langage PHP est
utilis pour gnrer des sites
web.

Il nest pas rare non plus de


voir un programme qui soit
crit en diffrents langages :
on utilise le langage le plus
convenable pour chaque
tche.

Voici un petit tableau avec le code qui permet dafficher le message hello world dans quelques langages :

Bref, vous voyez quil y en a pour tous les gots :)

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.

Cette traduction, cest ce quon appelle la compilation.

Une fois en langage assembleur, il faut ensuite lassembler en langage binaire :

La compilation est lassemblage en binaire.

Les langages de haut niveaux permettent donc dacclrer la cration dun programme, et de le rendre portable !

vido fabrication dun processeur et images fabrication dun micro-processeur

Muse virtuel de linformatique


von neumann

voir lanimation en plein cran

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 :

LOAD A charge dans laccumulateur le contenu de lemplacement dadresse A (soit a)


ADD B ajoute au contenu de laccumulateur celui de lemplacement dadresse B (soit b)
STO C range le contenu de laccumulateur (soit a+b) dans lemplacement dadresse C

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 ....

Le processeur effectue des calculs sur des nombres .


Ces nombres sont stocks dans la mmoire .
Les nombres transitent entre le processeur et la mmoire en empruntant un chemin appel bus.
Le processeur et la mmoire sont des assemblages de transistors .
Le nombre de transistors dans un processeur est de lordre du milliard, et ils sont gravs sur une plaque de silicium, mme la matire .
Les processeurs permettent de faire un trs grand nombre de types de calculs diffrents.
Le processeur effectue un calcul lmentaire par cycle ; Plusieurs cycles la suite permettent lordinateur de faire des calculs complexes .
La frquence du processeur est gale au nombre de cycles par seconde. Plus elle est haute, plus le processeur calcule vite, et donc plus il est puissant.
La frquence dun processeur est de lordre du GigaHertz.
Les programmes sont des suites dinstructions (en binaire) que le processeur excute.
Le langage assembleur est une transcription humainement comprhensible des instructions en binaire.
Lassembleur devient trs vite long et lent coder. On a donc invent les langages de haut niveau.
Les langages de haut niveau sont faciles et rapides coder mais il faut passer par une tape supplmentaire (la compilation) pour pouvoir utiliser finalement
le programme.
Enfin, il y a plein de langages de haut niveau ayant chacun sa propre syntaxe dcriture (C, Java, Python...).

Documents joints

principes_materiel_beamer
principes_materiel_papier

Commentaires

S-ar putea să vă placă și