Architecture des ordinateurs

La page sur l'architecture au format PDF

Note : cette page est seulement une première approche du fonctionnement d'un ordinateur.
Les descriptions de tous les mécanismes, de toutes les fonctions, de tous les composants sont simplifiés et réduits à l'essentiel.
Un ordinateur est composé de multiples parties qui n'apparaissent pas ici !
De plus ces systèmes sont en constante évolution et les chiffres donnés ici peuvent rapidement devenir obsolètes.

Vous trouverez de nombreuses informations complémentaires sur le Site du Zéro : l'architecture des ordinateurs y est décrite de manière beaucoup plus détaillée.

Un ordinateur depuis zéro

I. La théorie

1) Introduction

Partons de l'addition de deux nombres écrits sous forme binaire.
Exemple : 101101 + 1110101 = 10100010 car :
0 + 0 = 0
1 + 1= 0 et une retenue de 1
0 + 1 = 1
1 + 1+ 1 = 1 et une retenue de 1.
Un booléen est une variable qui peut prendre deux valeurs qui peuvent être (VRAI ou FAUX) ou (0 ou 1), ce qui correspond à un bit (binary digit). Dans toute la suite, on appellera un booléen un nombre qui vaut 0 ou 1.
Pour additionner deux booléens A et B , on voit que : le bit de poids faible est 1 si A ou B valent 1 mais que A et B ne valent pas 1 ensemble. C'est la fonction booléenne XOR.
La retenue vaut 1 si A et B valent 1 : c'est la fonction booléenne AND.

Exercice : écrire un algorithme dans lequel l'utilisateur entre deux chiffres (0 ou 1).
L'algorithme calcule le bit de poids faible de la somme et la retenue.

2) Fonctions booléennes

Pour approfondir on pourra utiliser le lien suivant :

Booléen-université de Lyon

Une fonction booléenne est une fonction qui prend pour paramètres des booléens et qui retourne un ou des booléens.
Les plus simples sont :
NOT qui à un booléen associe son contraire
OR qui à deux booléens A et B associe 1 si A ou B valent 1.
AND qui à deux booléens A et B associe 1 si A et B valent 1.
XOR qui à deux booléens A et B associe 1 si A ou B valent 1, mais que A et B ne valent pas tous les deux 1.
En combinant ces fonctions booléennes on peut obtenir d'autres fonctions booléennes.
Ces fonctions se caractérisent par leurs tables de vérité. Voici celle de la fonction OR :

OR01
001
111

Exercice : écrire les tables de vérité de AND et XOR.

3) Les circuits logiques

On peut aussi représenter ces fonctions booléennes par des circuits logiques :

circuit

On peut alors schématiser la somme de deux booléens comme ci dessous :

circuitsomme

Tous ces circuits sont dits "combinatoires" car leur résultat ne dépend que des données entrées.
D'autres circuits, dits "séquentiels" dépendent des entrées, mais aussi de leur état antérieur : ils sont utilisés pour les mémoires des ordinateurs

Le circuit que l'on vient de voir permet d'additionner deux nombres à un chiffre, d'autres circuits (plus complexes) permettent d'additionner des nombres à n chiffres en binaire, et d'autres encore de faire d'autres opérations élémentaires.

4) Assembleur

Les opérations élémentaires que peut réaliser un processeur sont en petit nombre et dépendent de la conception du processeur. Elles sont de quatre types : les échanges avec la mémoire, les opérations arithmétiques, les opérations logiques et les contrôles (qui permettent de faire des sauts, des boucles etc...)
L'ensemble de ces opérations est appelé un "jeu d'instructions".
On exprime souvent ces instructions dans un langage de bas niveau (très proche de la machine) appelé assembleur.
Pour comprendre ce qui suit, il faut savoir que le processeur dispose de mémoires très rapides, mais en petit nombre, qui s'appellent des "registres".
On suppose qu'on a ici deux registres A et B.
Voyons à quoi peuvent ressembler les instructions nécessaires pour faire une somme de deux nombres :
LDA 11 : transfère ce qui est stocké dans la case mémoire d'adresse 11 dans le registre A (LD comme LOAD)
STA 11 : fait l'opération inverse (ST comme STOCK)
ADD A: ajoute au registre A ce qu'il y a dans le registre B et le stocke dans A
Supposons que l'on veuille additionner le contenu de la case mémoire 11 et celui de la case mémoire 22 et mettre le résultat dans la mémoire 30. Voici une suite d'instructions possibles :
LDA 11, LDB 22, ADD A, STA 30.
Remarque : les lectures et les écritures dans la mémoire vive nécessitent une synchronisation qui est obtenue grâce à une horloge.
Par exemple pour effectuer STA 11 : le processeur met les différents fils qui composent le bus d'adresses (la voie de communication des adresses entre le processeur et la mémoire) à l'expression de 11 en base 2 et les fils qui composent le bus de données dans un état qui correspond au contenu de A. Au signal de l'horloge, chaque case mémoire compare son numéro avec celui qui circule sur le bus d'adresses et la case 11 se reconnaît et enregistre ce qui arrive sur le bus de données.

5) Le langage machine

Il faut maintenant se souvenir que l'ordinateur ne comprend que des 0 et des 1... Il faut donc traduire les instructions en langage binaire.
Dans un ordinateur très simple on peut par exemple numéroter les différentes instructions et stocker dans des cases numérotées successives la suite des instructions à effectuer.
Imaginons que nous ayons attribué les numéros suivants à nos instructions et registres :

ABLDALDBADDSTA
012345

Chaque instruction va correspondre à deux cases en mémoire : l'une pour le numéro de l'instruction, l'autre pour l'argument
Par exemple, le premier programme du paragraphe précedent devient :

100101102103104105106107
21132240530

Ceci est vraiment illisible, surtout si tous les nombres de ce tableau sont écrits en binaire !
Le langage que l'on obtient alors est le "langage machine", propre à chaque processeur....

On a aussi un registre qui s'appelle le compteur de programme (PC ou aussi compteur ordinal) qui est initialisé à 100 pour notre exemple.
Pour effectuer ce programme le processeur :

  • charge le contenu des cases mémoires d'adresses PC et PC+1 dans des registres
  • décode le premier nombre comme une instruction et le deuxième comme son argument
  • exécute l'instruction
  • incrémente PC de 2

Voyons quelques instructions supplémentaires pour comprendre comment fonctionne une boucle (ces instructions peuvent évidemment être différentes d'un ordinateur à l'autre, même si les principes restent identiques) :
DEC A : enlève 1 au registre A
JMP n : met le PC à l'adresse n
JMPZ n : met le PC à l'adresse n si A vaut 0
On voudrait programmer l'algorithme suivant :
Si ce qu'il y a dans la case 11 vaut 2, lui ajouter ce qu'il y a dans la case 12 sinon lui ajouter ce qu'il y a dans la case 13. Stocker le résultat dans la case 30.
PC Instruction
100 LDA 11
102 DEC A
104 DEC A (si A valait 2, on a maintenant 0 dans le registre A)
106 JMPZ 114 (si A vaut zéro on saute à l'instruction stocké à la case 114)
108 LDA 11 (on recharge la mémoire 11 car on a enlevé 2 à A)
110 LDB 13 (si A ne valait pas 0, voici ce que l'on fait)
112 JMP 118 (la suite est au n°118)
114 LDA 11
116 LDB 12
118 ADD A
120 STA 30
Le passage d'un langage évolué au langage machine s'appelle la compilation.
Certains langages ne sont pas compilés, mais sont interprétés : le programme n'est pas traduit d'un bloc en langage machine, mais chaque instruction est interprétée et exécutée (après un passage en langage machine). Python est un langage "semi-interprété"....
Certains programmes sont distribués en mode compilé (sans la source, c'est à dire le programme en langage évolué), ce qui permet l'utilisation du programme, mais rend sa compréhension et sa modification éventuelle très difficiles.

II.Architecture matérielle

Pour comprendre comment et où notre addition va s'effectuer, commençons par ouvrir un ordinateur.
Nous identifierons les principaux composants, puis nous étudierons le processeur, les mémoires et les programmes

1) Les principaux composants

Après avoir enlevé le capot d'un (vieil) ordinateur voici ce que l'on découvre :

vue ordi

On voit surtout une grosse boîte en bas à droite qui est l'alimentation électrique.
C'est un élément très important qui alimente tous les composants et qui doit fournir des tensions très stables.


Vue de l'extérieur de cette alimentation :

alim

On enlève cette alimentation et son ventilateur, on découvre la vue suivante :

vuesansventilo


la carte mère (au fond),
un petit ventilateur qui est au-dessus du processeur,
en bleu, les slots pour les barettes mémoire (RAM),
les connecteurs blancs (PCI) qui sont destinés à connecter des cartes graphique, réseau, son etc...,
le connecteur AGP (marron) destiné à une carte graphique,
le chipset (composé des deux carrés noirs) qui est une véritable tour de contrôle de la circulation des données,
les nappes (qui permettent le transport des données) et qui avec leurs connecteurs et l'électronique associée constituent les bus et les connecteurs pour les prises externes en haut à gauche.
Actuellement ces nappes IDE, qui transportent de 32 à 64 bits en parallèle, sont remplacées par des câbles PCI-express, qui transportent les bits un par un (en série), mais à des fréquences très élevées, ce qui les rend plus rapides que les nappes IDE.

En enlevant le ventilateur au-dessus du processeur, on découvre un radiateur, puis le processeur collé sous ce radiateur : un processeur dégage beaucoup de chaleur et doit être constamment refroidi.

ventilo proc

radiateur proc

radiateur proc

radiateur proc

Sur ces photos on voit les broches qui permettent de brancher le processeur sur son connecteur qui est appelé un socket (photo suivante).
Le processeur est le cerveau de l'ordinateur, c'est lui qui traite les données.

socket

Voyons de plus près les barettes mémoires :

mémoire

mémoire

Partenaire de travail du processeur, la mémoire vive (appelée aussi RAM pour Random Access Memory) stocke temporairement les données à traiter par le processeur.
Par exemple, quand on ouvre un programme (un traitement de texte, un logiciel de messagerie, un navigateur...) il se charge dans la mémoire vive. Ainsi, plus il y a de mémoire de disponible, plus il est possible d'y conserver des données temporairement (ce qui évite d'accéder au disque dur qui est plus lent). La mémoire vive est vidée à chaque arrêt ou redémarrage de votre ordinateur : on dit qu'elle est volatile

Voici une photo de disque dur (ouvert) :

Le disque dur est dans un boîtier de taille approximative 2cm × 14cm × 14cm.

mémoire

Contrairement à la mémoire vive, les données stockées sur un disque dur sont permanentes et ne sont pas effacées à l'arrêt de votre ordinateur C'est donc sur un disque dur que votre système d'exploitation, vos logiciels et vos documents sont conservés.

Voici le connecteur AGP

AGP

Puis les cartes (qui contiennent aussi un processeur spécialisé, un controleur de bus...)
Carte graphique AGP : on voit le ventilateur du processeur sur cette photo ainsi que les mémoires (rectangles noirs)

graphique

Photo libre de droits du domaine public

Carte réseau

réseau

Prise réseau (RJ45)

prise

Carte son enfichée dans le slot PCI

son

Les prises externes

prises

On distingue :
les prises jack (pour le son, les micros, les haut-parleurs etc...) rondes de différentes couleurs (à droite et au milieu)
le port VGA (pour le video-projecteur, etc..) en bleu au milieu
la prise db25, en rose (n'existe quasiment plus) : port parallèle pour une imprimante par exemple
la prise ethernet (pour le réseau) à côté de la prise jack bleue
les prises USB
les prises PS2 à gauche pour la souris et le clavier
et on ne voit pas de prise HDMI (l'ordinateur est trop vieux) pour la video.
Voici un câble HDMI :

HDMI

Il existe bien sûr encore d'autres type de prises...

On voit ensuite la pile pour l'horloge de l'ordinateur

son

L'horloge est indispensable à la bonne marche d'un ordinateur car de nombreuses opérations doivent être synchrones (simultanées)

Voici maintenant les deux parties du chipset : le "north bridge" qui est situé près du processeur et sert à réguler les flux rapides (entre la mémoire vive et le processeur par exemple) et le "south bridge" qui joue le même rôle pour des flux à cadence moindre, comme par exemple les échanges avec le disque dur.

north bridge

south bridge

Pour finir, voici la carte mère : elle joue un rôle fondamental dans la structure des ordinateurs. C'est elle qui accueille l'ensemble des composants internes de votre ordinateur (processeur, mémoire, …) et gère les différentes interfaces avec vos périphériques : prise pour les éléments internes et ports USB pour les périphériques externes.

carte mère

Cette photo de Darkone est sous licence Creative Common

Les autres photos, sans mentions particulières, sont personnelles


Un ordinateur a aussi des périphériques : clavier, souris, écran, imprimante etc....dont tout le monde connaît les usages.

2) Organisation simplifiée d'un ordinateur

organisation ordinateur

3) Le processeur

L'élément principal de l'ordinateur est son processeur, qui est composé esentiellement de
son unité de contrôle(UC) et de son unité arithmétique et logique (UAL).
l'UC lit les données et lit et décode les instructions, gère le compteur de programme, envoie les ordres d'éxécution d'instructions élémentaires à l'UAL.
l'UAL est un circuit complexe qui assure le traitement des opérations logiques (OR, AND etc..) et les calculs arithmétiques.
Les deux unités comprennent des registres (mémoires très rapides) pour stocker les données chargées depuis la mémoire (le programme, les autres données), le compteur de programme, l'instruction à exécuter, les résultats etc...
On trouve aussi dans le processeur une mémoire cache où sont rangées les données récemment utilisées (ces données sont souvent réutilisées, et il sera alors beaucoup plus rapide de les chercher dans la mémoire cache que dans la mémoire vive).

Pour bien comprendre le fonctionnement du processeur, on pourra visionner l'animation du site de l'IUT de Nîmes dont voici le lien:

Cours d'architecture de l'IUT

Il faut aller sur "Modèle de Von Neumann" puis sur "animation"


Un processeur est un assemblage de nombreux circuits dont la "brique" de base est un transistor.
Un transistor est un composant électronique (utilisant des semi-conducteurs) avec trois broches : le drain, la source et la grille.
Il joue le rôle d'un interrupteur qui s'ouvre ou se ferme suivant la tension qui est appliqué sur sa grille.

transistor

.

Sur certains transistors quand la bonne tension est appliquée sur la grille (de 5V il y a quelques années à environ 1,5 V actuellement), le courant passe entre la source et le drain, l'interrupteur est fermé, et autrement le courant ne passe pas. Sur d'autres c'est l'inverse.
Voici un montage avec deux transistors qui matérialise la fonction booléenne NOT ;

circuit not

Le transistor du haut se bloque quand la tension est appliquée et celui du bas laisse passer le courant au même moment.
On peut ainsi construire des circuits pour les autres fonctions booléennes, pour les différentes opérations etc....Un processeur compte plusieurs millions de transistors, et même, récemment, quelques milliards.

Des informations supplémentaires sur le lien suivant :

Les transistors-Site du zero
Résumons les caractéristiques principales d'un processeur:

  • son jeu d'instructions
  • la capacité de la mémoire cache et les mécanismes d'accès à cette mémoire
  • la consommation électrique
  • le nombre de coeurs (c'est à dire de noyaux de calcul)
  • l' architecture interne
  • le chipset associé (très important pour la vitesse du système)
  • la taille de ses registres généraux : un processeur 32 bits cela signifie que ces registres ont une capacité de 32 bits
  • la cadence en Ghz : 3,4 GHz signifie que l'horloge délivre 3,4 milliards de tops en une seconde. On trouve aussi parfois le MIPS : le nombre de millions d'instructions par seconde ou le FLOPS (nombre d'opérations sur des flottants par seconde)

Toutes ces informations ne permettent cependant de juger ni de l'efficacité, ni de la rapidité d'un processeur, tant les architectures et les techniques ajoutées pour booster leurs performances sont variables et tant les applications sont diverses (traitement de l'image, du son, calculs, jeux etc...). Des tests avec diverses applications sont indispensables, en complément, pour révèler les qualités et défauts de chacun des modèles.

4) Les mémoires

On retrouve la mémoire à différents endroits dans l'ordinateur (et dans les périphériques). Ces mémoires font appel à différentes technologies qui ont beaucoup évolué depuis l'utilisation de bandes magnétiques... Les principales caractéristiques d'une mémoire sont :

  • la capacité
  • Le temps d'accès
  • le débit
  • la volatilité (les données sont-elles perdues si la mémoire n'est plus alimentée en courant)

Vocabulaire :
RAM : random access memory, mémoire volatile située dans les barettes mémoire, aussi appelée mémoire vive. C'est la mémoire utilisée par les différentes applications, pour un stockage temporaire.
ROM : read only memory, mémoire non volatile, située sur la carte mère et utilisée pour stocker entre autre les informations nécessaires au démarrage de l'ordinateur.
Le schéma suivant explique pourquoi différentes sortes de mémoires sont nécessaires.

pyramide des mémoires

5) Les programmes

Lorsqu'on allume un ordinateur, le premier programme qui se lance est le BIOS (basic input and output system) : il est installé dans la mémoire morte (ROM) de la carte mère. Il initialise et teste les différents composants, recherche et initialise les périphériques, et amorce le système d'exploitation.
Le système d'exploitation (linux, windows...) gère les périphériques, l'organisation des fichiers et gère l'accès aux ressources des différentes applications.
Les applications sont les différents programmes permettant d'accomplir une tâche donnée avec l'ordinateur (bureautique, jeux, traitements d'images etc..)