Je préfère utiliser l'analogie pneumatique, car la propagation d'un fluide est plus simple à  visualiser que celle de l'électricité. Quand au fonctionnement d'un transistor (équivalent de l'inhibiteur), il est si complexe qu'il a nécessité une matière à  part entière, dans mes cours de l'an dernier. Je pourrais cependant l'expliquer... en faisant un cours complet d'électromagnétisme, ce qui n'est pas le sujet.

[quote:32fcvpn6]L'électricité est préféré parce qu'elle permet des calculateurs d'une taille minuscule et la possibilité de programmer les processeurs sans intervenir sur le circuit[/quote:32fcvpn6]

Hum ? &quot;Programmer un processeur sans intervenir sur le circuit&quot; est tout a fait possible en pneumatique, c'est d'ailleurs l'objet du chapitre 4. Tu m'arrêteras si je me trompes.


[size=200:32fcvpn6][b:32fcvpn6]Petits compléments[/b:32fcvpn6][/size:32fcvpn6]

[spoiler:32fcvpn6][size=150:32fcvpn6][b:32fcvpn6]L&#39;horloge[/b:32fcvpn6][/size:32fcvpn6]

[img:32fcvpn6]http&#58;//arkhitude&#46;free&#46;fr/Cours/Ordinateur/complements/1&#46;png[/img:32fcvpn6]

Le cycle suivant se répète à  l&#39;infini :

L&#39;inhibiteur reçoit de l&#39;air comprimé, il mord le tuyau.
L&#39;air ne passe plus.
L&#39;inhibiteur ne reçoit plus d&#39;air comprimé, il se relâche.
L&#39;air passe à  nouveau.

La sortie vaut donc 0, puis 1, puis 0, puis 1, puis 0, puis 1...
Ce phénomène est aussi régulier qu&#39;un tic-tac d&#39;horloge, d&#39;où le nom du circuit.
Pour ralentir ce tic-tac, il suffit de rallonger le tuyau.


[size=150:32fcvpn6][b:32fcvpn6]Le rafraîchisseur[/b:32fcvpn6][/size:32fcvpn6]

C&#39;est un &quot;plug&quot; que l&#39;on installe devant une cellule mémoire :

[img:32fcvpn6]http&#58;//arkhitude&#46;free&#46;fr/Cours/Ordinateur/complements/2&#46;png[/img:32fcvpn6]

Quand &quot;ordre d&#39;écriture&quot; passe à  1, les inhibiteurs se relâche, et le contenu de &quot;donnée&quot; est écrit dans la cellule mémoire. En effet...
- Si &quot;donnée&quot; vaut 1, Set vaudra 1 et Reset vaudra 0 : la cellule est mise à  1.
- Si &quot;donnée&quot; vaut 0, Set vaudra 0 et Reset vaudra 1 : la cellule est mise à  0.

Cela permet de décider à  quel moment on &quot;met a jour&quot; la mémoire.

Symbole du rafraîchisseur :

[img:32fcvpn6]http&#58;//arkhitude&#46;free&#46;fr/Cours/Ordinateur/complements/3&#46;png[/img:32fcvpn6]

On peut remplacer les fil par des bus :

[img:32fcvpn6]http&#58;//arkhitude&#46;free&#46;fr/Cours/Ordinateur/complements/4&#46;png[/img:32fcvpn6]

Cela signifie juste que l&#39;on rafraîchit chaque fil du bus.


[size=150:32fcvpn6][b:32fcvpn6]Exemple : le compteur[/b:32fcvpn6][/size:32fcvpn6]

[img:32fcvpn6]http&#58;//arkhitude&#46;free&#46;fr/Cours/Ordinateur/complements/5&#46;png[/img:32fcvpn6]

A chaque fois que l&#39;horloge passe à  1, &quot;comptage&quot; est remplacé dans l&#39;espace mémoire par &quot;comptage + 1&quot;. Ce circuit compte donc les tic-tac de l&#39;horloge.[/spoiler:32fcvpn6]

[size=200:32fcvpn6][b:32fcvpn6]Chapitre 4 - Le microprocesseur[/b:32fcvpn6][/size:32fcvpn6]

[spoiler:32fcvpn6][size=150:32fcvpn6][b:32fcvpn6]Fonctionnement général d&#39;un ordinateur[/b:32fcvpn6][/size:32fcvpn6]

[img:32fcvpn6]http&#58;//img89&#46;imageshack&#46;us/img89/8129/62393303xe5&#46;png[/img:32fcvpn6]

A chaque fois que l&#39;horloge passe à  1, les sorties du circuit logique sont écrites dans les espaces mémoires. Elle deviennent alors ses nouvelles entrées. Et ainsi de suite.

Dans ce schéma,
- Le circuit logique est appelé [b:32fcvpn6]microprocesseur[/b:32fcvpn6].
- Les espaces mémoires sont appelés [b:32fcvpn6]registres[/b:32fcvpn6].

Il y a tout au plus une dizaine de registres, parmi lesquels...
- Des registres quelconques : reg1, reg2, reg3...
- Des registres spéciaux : [b:32fcvpn6][color=#8000BF:32fcvpn6]instruction[/color:32fcvpn6][/b:32fcvpn6] et [b:32fcvpn6][color=#8000BF:32fcvpn6]curseur[/color:32fcvpn6][/b:32fcvpn6]. Leur fonction sera expliquée plus loin.


[size=150:32fcvpn6][b:32fcvpn6]L&#39;accès à  la mémoire vive[/b:32fcvpn6][/size:32fcvpn6]

Ajoutons quelques éléments au microprocesseur, pour qu&#39;il puisse accéder à  la mémoire vive du chapitre 3 :

[img:32fcvpn6]http&#58;//img73&#46;imageshack&#46;us/img73/9910/36924626vy6&#46;png[/img:32fcvpn6]

Il possède à  présent de nouvelles entrées et sorties :

- Un bus &quot;adresse&quot;, qui permet de sélectionner l&#39;espace mémoire voulu.
- Un bus &quot;lecture&quot;, qui délivre le contenu de l&#39;espace mémoire sélectionné.
- Un bus &quot;écriture&quot;, qui transporte les &#40;éventuelles&#41; nouvelles données à  écrire dans l&#39;espace mémoire sélectionné.
- Un fil &quot;ordre d&#39;écriture&quot;, qui permet d&#39;écrire le contenu du bus &quot;écriture&quot; dans l&#39;espace mémoire sélectionné, par le biais d&#39;un rafraîchisseur.

On peut donc manipuler à  souhait les milliards d&#39;espaces de la mémoire vive... un par un. &#40;Mais comme il y a quelques milliards de tic-tac d&#39;horloge par seconde, ça compense.&#41;


[size=150:32fcvpn6][b:32fcvpn6]L&#39;instruction[/b:32fcvpn6][/size:32fcvpn6]

Le microprocesseur contient en fait plusieurs circuits logiques, chacun correspondant à  une fonction : additionner, soustraire, permuter, comparer...

[img:32fcvpn6]http&#58;//img146&#46;imageshack&#46;us/img146/7296/10523172kv8&#46;png[/img:32fcvpn6]

Pour sélectionner la fonction voulue, on utilise un système d&#39;adressage, comme au chapitre 3 :

[img:32fcvpn6]http&#58;//img233&#46;imageshack&#46;us/img233/3260/21604954ur2&#46;png[/img:32fcvpn6]

Le bus d&#39;instruction lit le contenu du registre [color=#8000BF:32fcvpn6][b:32fcvpn6]instruction[/b:32fcvpn6][/color:32fcvpn6], qui contient le numéro de la fonction à  sélectionner... et peut lui-même être manipulé par le microprocesseur ! Commencez-vous à  comprendre l&#39;[i:32fcvpn6]oméga-power[/i:32fcvpn6] de la chose ?


[size=150:32fcvpn6][b:32fcvpn6]Le programme[/b:32fcvpn6][/size:32fcvpn6]

Un programme est une suite d&#39;instructions élémentaires :

[color=#8000BF:32fcvpn6][b:32fcvpn6]&gt;&gt; Faire ci
&gt;&gt; Faire ça
&gt;&gt; ...[/b:32fcvpn6][/color:32fcvpn6]

A chaque instruction élémentaire correspond un circuit logique dans le microprocesseur. On peut donc écrire le programme en remplaçant les instructions par leur numéro :

[color=#8000BF:32fcvpn6][b:32fcvpn6]&gt;&gt; 010110001
&gt;&gt; 101100101
&gt;&gt; ...[/b:32fcvpn6][/color:32fcvpn6]

Où est est stocké ce programme ? Dans la mémoire vive, pardi. Voyons comment le microprocesseur s&#39;y prend pour le lire.

Déjà , nous avons un registre spécial, nommé [color=#8000BF:32fcvpn6][b:32fcvpn6]curseur[/b:32fcvpn6][/color:32fcvpn6], qui stocke l&#39;adresse de la prochaine ligne de programme.

Ensuite, le microprocesseur contient un circuit logique &quot;lecteur de programme&quot;. Il est sélectionné lorsque le registre [color=#8000BF:32fcvpn6][b:32fcvpn6]instruction[/b:32fcvpn6][/color:32fcvpn6] vaut 00000....0. Voici la fonction qu&#39;il réalise :

- Il envoie le contenu du registre [color=#8000BF:32fcvpn6][b:32fcvpn6]curseur[/b:32fcvpn6][/color:32fcvpn6] dans le bus d&#39;adresse.
- Il envoie le contenu du bus de lecture &#40;la prochaine ligne de programme, donc&#41; dans le registre [color=#8000BF:32fcvpn6][b:32fcvpn6]instruction[/b:32fcvpn6][/color:32fcvpn6]. 
- Il additionne 1 au registre [color=#8000BF:32fcvpn6][b:32fcvpn6]curseur[/b:32fcvpn6][/color:32fcvpn6].

&#40;Pour les deux premiers points, il suffit de connecter des fils. Pour le dernier, on utilise l&#39;additionneur binaire d&#39;un chapitre 2.&#41;

Ainsi, dès le prochain &quot;top&quot; &#40;passage à  1 de l&#39;horloge&#41;, on sélectionnera le circuit logique correspondant à  notre ligne de programme &#40;à  présent stockée dans [color=#8000BF:32fcvpn6][b:32fcvpn6]instruction[/b:32fcvpn6][/color:32fcvpn6]&#41;.

Comme les autres circuit ne balancent rien dans le registre [color=#8000BF:32fcvpn6][b:32fcvpn6]instruction[/b:32fcvpn6][/color:32fcvpn6] &#40;soit 00000...0&#41;, le circuit &quot;lecteur de programme&quot; sera à  nouveau sélectionné au &quot;top&quot; suivant. Sauf que, comme il a précédemment ajouté 1 au registre [color=#8000BF:32fcvpn6][b:32fcvpn6]curseur[/b:32fcvpn6][/color:32fcvpn6], c&#39;est la ligne de programme suivante qui sera lue.

Et ainsi de suite.


[size=150:32fcvpn6][b:32fcvpn6]Exemple : programme multiplicateur[/b:32fcvpn6][/size:32fcvpn6]

Voici un programme qui multiplie le contenu des registres &quot;reg1&quot; et &quot;reg2&quot;, et stocke le résultat dans &quot;reg3&quot;. On a donc : reg3 = reg1 x reg2 = reg1 + reg1 + reg1 + reg1....  &quot;reg2&quot; fois.

[color=#8000BF:32fcvpn6][b:32fcvpn6]&gt;&gt; Mettre &quot;reg3&quot; à  0000...0
&gt;&gt; Additionner le contenu de &quot;reg1&quot; à  &quot;reg3&quot;
&gt;&gt; Soustraire 1 à  &quot;reg2&quot;
&gt;&gt; Si &quot;reg2&quot; vaut 000...0, additionner 1 à  &quot;curseur&quot;
&gt;&gt; Soustraire 4 à  &quot;curseur&quot;[/b:32fcvpn6][/color:32fcvpn6]

Petite explication :

[quote:32fcvpn6]Quand &quot;reg2&quot; vaut 0000...0, cela signifie que l&#39;on a additionné &quot;reg1&quot; à  &quot;reg3&quot; un nombre de fois égal au contenu initial de &quot;reg2&quot;. Autrement dit, &quot;reg3&quot; contient à  présent le résultat de la multiplication ! On additionne alors 1 à  &quot;curseur&quot;, ce qui revient à  sauter la ligne de programme suivante, et passer à  la suite du programme.

Si &quot;reg2&quot; n&#39;est pas encore égal zéro, cela signifie que l&#39;on doit continuer à  additionner &quot;reg1&quot; dans &quot;reg3&quot;. On exécute donc la dernière ligne de programme, qui soustrait 4 à  &quot;curseur&quot; : cela revient à  reculer de trois ligne dans le programme &#40;trois lignes et pas quatre, car il faut anticiper le fait que le lecteur de programme additionnera 1 à  &quot;curseur&quot;, quoiqu&#39;il arrive&#41;.[/quote:32fcvpn6]
Bien sûr, on n&#39;utilise pas cette méthode bourrine dans les ordinateurs, mais un algorithme similaire à  celui qu&#39;on vous a enseigné à  l&#39;école primaire.


[size=150:32fcvpn6][b:32fcvpn6]En conclusion...[/b:32fcvpn6][/size:32fcvpn6]

Tout les programmes que vous utilisez sur votre ordinateur, sont en fait une série d&#39;instructions basiques. Bien sûr, ce &quot;langage&quot; de programmation &#40;dit &quot;langage machine&quot;&#41; est atroce à  manipuler : les programmeurs utilisent donc des compilateurs, programmes qui convertissent un langage de programmation plus &quot;humain&quot; en langage machine. Compilateurs programmés eux-mêmes à  partir de compilateurs... mais il a bien fallu programmer le premier compilateur directement en langage machine, hé.

Un système d&#39;exploitation &#40;Windows, Linux...&#41; est en fait un méta-programme : un programme qui gère l&#39;ensemble de programmes ouverts simultanément. Ce méta-programme est exécuté à  l&#39;allumage de l&#39;ordinateur, il doit donc commencer à  l&#39;adresse mémoire 00000...0 &#40;car &quot;curseur&quot; est initialement à  zéro&#41;.

Donc, [i:32fcvpn6]voilà [/i:32fcvpn6]. Des questions ? Le moindre point obscur ou douteux se doit d&#39;être éclairci.[/spoiler:32fcvpn6]

[size=200:32fcvpn6][b:32fcvpn6]Les périphériques[/b:32fcvpn6][/size:32fcvpn6]

[spoiler:32fcvpn6][size=150:32fcvpn6][b:32fcvpn6]La souris[/b:32fcvpn6][/size:32fcvpn6]

Les coordonnées x et y de la souris sont stockés dans des espaces mémoires réservés. On peut donc y accéder à  tout instant.


[size=150:32fcvpn6][b:32fcvpn6]Le clavier[/b:32fcvpn6][/size:32fcvpn6]

[img:32fcvpn6]http&#58;//img233&#46;imageshack&#46;us/img233/1125/81572423ok3&#46;png[/img:32fcvpn6]

Quand une touche est pressée, deux des fils de sortie passent à  0 : on peut ainsi identifier cette touche.

Le numéro de la dernière touche pressée est stockée en mémoire. On a également un bit spécial &#40;toujours en mémoire&#41; qui vaut 1 à  l&#39;instant où une touche est pressée, 0 sinon.


[size=150:32fcvpn6][b:32fcvpn6]La mémoire morte[/b:32fcvpn6][/size:32fcvpn6]

Le principe est le même que pour la mémoire vive, seul l&#39;intérieur de cellules mémoire change :

[img:32fcvpn6]http&#58;//img148&#46;imageshack&#46;us/img148/3578/38195198iw6&#46;png[/img:32fcvpn6]

Quand on envoie de l&#39;air dans Set, le clapet est poussé à  droite.
Quand on envoie de l&#39;air dans Reset, le clapet est poussé à  gauche.

Cela permet de mémoriser l&#39;information lorsque l&#39;ordinateur est éteint &#40;plus d&#39;alimentation en air comprimé&#41;, ce qui n&#39;est pas le cas de la mémoire vive.

Pour pouvoir lire le contenu de la cellule, on relie le clapet à  un tiroir pneumatique :

[img:32fcvpn6]http&#58;//img401&#46;imageshack&#46;us/img401/4092/51319269fv8&#46;png[/img:32fcvpn6]


[size=150:32fcvpn6][b:32fcvpn6]L&#39;écran[/b:32fcvpn6][/size:32fcvpn6]

L&#39;écran est un tableau de pixels. Un pixel est un ensemble de trois diodes lumineuses : une rouge, une verte, une bleue &#40;R, V, B&#41;. En dosant l&#39;intensité lumineuse dans chaque diode, on peut reconstituer n&#39;importe quelle couleur.

Le contenu d&#39;un pixel tient dans un espace mémoire de 24 bits :

- 8 bits codent l&#39;intensité du rouge &#40;de 0 à  255&#41;
- 8 bits codent l&#39;intensité du vert &#40;de 0 à  255&#41;
- 8 bits codent l&#39;intensité du bleu &#40;de 0 à  255&#41;

Ce qui nous fait 255 x 255 x 255 = 16 581 375 couleurs.

A chaque pixel de l&#39;écran correspond un espace mémoire. Comme on ne peut pas faire passer un million de pixels par un seul bus, on &quot;repeint&quot; l&#39;écran pixel par pixel, très rapidement :

[img:32fcvpn6]http&#58;//img267&#46;imageshack&#46;us/img267/6262/69536491qa3&#46;png[/img:32fcvpn6]

Sur le schéma ci-dessus, un pixel est sélectionné s&#39;il est alimenté horizontalement et verticalement. Un double-système d&#39;adressage permet de faire correspondre une adresse à  un pixel. Il suffit donc de parcourir toutes les adresses &#40;avec un compteur, par exemple&#41; tout en envoyant les informations correspondantes dans le bus de données.


[size=150:32fcvpn6][b:32fcvpn6]Le son[/b:32fcvpn6][/size:32fcvpn6]

Le son est produit par la vibration acoustique d&#39;une membrane. Un espace mémoire correspond, à  chaque instant, à  la valeur de la position de cette membrane. Il faut ensuite convertir ce nombre binaire en position réelle :

[img:32fcvpn6]http&#58;//img80&#46;imageshack&#46;us/img80/2152/56999343yq1&#46;jpg[/img:32fcvpn6]

En effet :
- Le bit a0 vaut 1 en décimal
- Le bit a1 vaut 2 en décimal
- Le bit a2 vaut 4 en décimal
- Le bit a3 vaut 8 en décimal
- etc...[/spoiler:32fcvpn6]