L'objectif de ce chapitre est de distinguer les rôles et les caractéristiques des
différents constituants d'une machine et de dérouler l'exécution d'une séquence
d'instructions simples en langage machine.
Architecture de Von Neumann
Le mathématicien John Von Neumann
a élaboré en 1944 la première description d'un ordinateur dont le
programme est stocké dans sa mémoire. Son architecture comporte 4 éléments :
L'UAL ou unité de traitement effectue les opérations de base ;
L'unité de contrôle est chargée du séquençage des opérations ;
La mémoire contient les données et les instructions ;
Les périphériques (entrées-sorties) communiquent avec l'extérieur.
Les constituants d'une tour d'ordinateur
Constituant et rôle
Caractéristiques
Photo
Le boitier d'alimentation convertit le 230 V alternatif en 12V ou 5V ou 3,3V ou 2,5V ou 1,8 V pour alimenter tous les composants de l'unité centrale.
Puissance (Watt)
La carte mère centralise tous les périphériques de l'unité centrale et la connectique. Le processeur y est directement rattaché.
Socket processeur
Format (ATX, mini-ITX, ...)
Connectique (SATA, USB, PCI, ...)
Le processeur est le cerveau de l'ordinateur. Il traite plusieurs milliards d'opérations par seconde.
Nombre de cœurs
Fréquence (GHz)
La mémoire RAM, très rapide mais volatile (provisoire), stocke les informations en cours de traitement par le processeur.
Capacité (Go)
Type (DDR, ...)
Fréquence (MHz)
Le disque dur stocke le système d'exploitation, les logiciels et les données de l'utilisateur.
Capacité (Go ou To)
Type (HDD, SSD, ...)
Fréquence (MHz)
La carte graphique (optionnelle) aide le processeur pour le calcul
de l'image affichée à l'écran.
Mémoire (Mo ou Go)
Le lecteur ou graveur de disque (optionnel) peut lire ou écrire
les données stockées sur un CD, un DVD ou un Blu-Ray.
Format supportés
Vitesse de lecture
Vitesse de gravure
Associer chacun des constituants à une partie de l'architecture de Von Neumann.
Processeur :
Mémoire RAM :
Disque dur :
Carte graphique :
Lecteur ou graveur de disque :
.
La carte mère
La carte mère est une carte de circuit imprimé qui est essentielle pour connecter tous les composants d'un ordinateur,
aussi bien les composants internes que les périphériques externes via des ports spécifiques.
Les connecteurs internes
Connecteurs d'alimentation : ces connecteurs permettent l'alimentation électrique de la carte mère et du
processeurs depuis le boîtier d'alimentation.
Le socket CPU, également appelé emplacement processeur permet de connecter le processeur (CPU) à la carte mère.
Emplacements de mémoire RAM pour connecter des barrettes de mémoire vive à la carte mère.
Ports SATA pour connecter des disques durs et des lecteurs optiques internes.
Ports PCI pour brancher des cartes d'extension telles que des cartes son, vidéo, réseau, Wi-Fi, etc.
Connecteurs pour les boutons en façade : on/off et reset.
Connecteurs pour les LED en façade.
Connecteurs pour les ports USB en façade.
Emplacement pour la pile du BIOS (ou pile CMOS). Celle-ci permet de conserver les paramètres de
configuration du BIOS, même lorsque l'ordinateur est éteint.
Les connecteurs externes
Les périphériques permettent d'assurer la communication de l'ordinateur avec l'extérieur
(clavier, écran, imprimante, réseau, carte d'acquisition, etc...).
Ports USB : ces ports permettent de connecter différents périphériques USB, tels que des claviers, des souris, des disques durs externes, des imprimantes, des lecteurs de CD, etc.
Port Ethernet : ce port permet de connecter un ordinateur à un réseau local ou à Internet via un câble Ethernet.
Port audio (prise jack ou SPDIF) : ces ports permettent de connecter des haut-parleurs, des casques ou des microphones.
Port HDMI : ce port permet de connecter un moniteur ou un téléviseur.
Port VGA : ce port permet de connecter un moniteur ou un écran plus ancien.
Ports eSATA : ces ports sont utilisés pour connecter des disques durs externes.
Ports PCI et PCIe : ces ports sont des ports d'extension qui permettent d'ajouter des cartes d'extension, telles que des cartes graphiques, des cartes son, des cartes réseau, etc.
Il existe également d'autres ports moins courants que l'on peut trouver sur certaines cartes mères, tels que des ports FireWire,
des ports PS/2 pour les claviers et souris plus anciens, des ports Thunderbolt, etc.
Associer aux périphériques d'entrée ou de sortie les ports concernés :
Écran :
Enceintes avec amplificateur :
Box internet :
Disque dur externe :
Quel port permet de connecter des cartes d'extensions à une carte mère ?
La mémoire
Une mémoire peut être vue comme une armoire où chaque tiroir contient une et une seule donnée.
Chaque tiroir est repéré par une adresse.
Elle contient les instructions du ou des programmes en cours d'exécution et les données associées à
ce programme.
Les types de mémoires :
une mémoire morte (ROM = Read Only Memory) stocke un programme.
C'est une mémoire à lecture seule.
une mémoire vive (RAM = Random Access Memory) stocke les données intermédiaires ou les
résultats de calculs. On peut y lire et y écrire des données.
une mémoire volatile perd les informations lors de la mise hors tension au contraire d'une mémoire non-volatile.
Hiérarchie des mémoires
Les registres sont les mémoires les plus rapides car ils stockent
les opérandes et les résultats des opérations effectuées par le processeur.
Ils sont intégrés au processeur.
La mémoire cache est utilisée pour stocker temporairement les données
les plus fréquemment utilisées par le processeur. Elle permet d'accélérer l'accès aux données en
évitant de les récupérer à chaque fois depuis la mémoire principale. Elle est généralement intégrée
directement sur le processeur.
La mémoire principale (mémoire vive) est l'espace principal de
stockage du processeur. C'est une mémoire vive et volatile qui stocke les instructions
des programmes et les données à utiliser. Elle est sur des barrettes de mémoire
branchée sur la carte mère.
La mémoire de masse (mémoire de stockage) est une mémoire vive,
non-volatile, périphérique et de grande capacité. Il s'agit des disques dur HDD ou SSD.
Les bus
Les différents organes du système sont reliés par des voies de communication appelées bus.
Un bus est un ensemble de fils qui assure la transmission du même type d'information. Trois types de bus véhiculent des informations en parallèle dans un système de traitement programmé de l'information :
bus de données : il assure le transfert des informations entre le microprocesseur et
son environnement ;
bus d'adresses : unidirectionnel qui permet la sélection des informations à traiter l'espace mémoire ;
bus de commande : il assure la synchronisation du système en étant le support du signal de l'horloge.
Le processeur
Les composants d'un processeur
Le microprocesseur (Central Processing Unit : CPU) est chargé d'interpréter et d'exécuter les instructions d'un programme, de lire et de sauvegarder les résultats dans la mémoire.
Il est composé par :
une horloge qui synchronise toutes les opérations ;
une unité de commande qui appelle les données et décode les instructions ;
une unité arithmétique et logique (UAL) qui effectue les calculs,
des registres qui stockent les opérandes et les résultats des calculs.
Chaque opération que peut effectuer un processeur est le résultat d'un circuit logique (circuit combinatoire)
fait de portes logiques qui réalisent les fonctions élémentaires définies en algèbre de Boole :
NON, ET et OU.
Les transistors sont des composants électroniques essentiels au fonctionnement d'un processeur.
Plus un processeur possèdent de transistors, plus il sera capable d'effectuer des calculs.
Loi de Moore
La loi de Moore est une loi empirique
qui décrit que le nombre de transistors sur une puce électronique double environ tous les deux ans, ce
qui entraîne une augmentation exponentielle de la performance et une diminution du coût des ordinateurs.
Elle a été formulée par Gordon E. Moore, cofondateur d'Intel, en 1965.
Exécution d'une instruction par le processeur
Recherche de l'instruction à traiter dans la mémoire :
Le PC (Program Counter) contient l'adresse de la
première instruction du programme. Cette valeur est
placée sur le bus d'adresses pour émettre un ordre de
lecture.
Au bout d'un certain temps (temps d'accès à la
mémoire), le contenu de la case mémoire demandée
est disponible sur le bus des données.
L'instruction est stockée dans le RI (Registre
Instruction) du processeur qui contient maintenant
l'opération à effectuer (addition, ...) et les opérandes
nécessaires.
Décodage de l'instruction :
L'instruction est découpée en une suite de
commandes élémentaires par l'unité de commande
qui les transmet à l'unité de calcul (UAL).
Si l'instruction nécessite une donnée en provenance
de la mémoire, sa valeur est ordonnée sur le bus
d'adresses et récupérée sur le bus de données.
L'opérande est stockée dans un registre.
Exécution de l'instruction :
L'instruction est exécutée par l'unité de calcul (UAL)
et le résultat est stocké dans un registre.
L'unité de commande inscrit l'adresse de la
prochaine instruction à traiter dans le PC.
Un jeu d'instruction est un ensemble d'opérations élémentaires que le microprocesseur exécute.
Il est capable de réaliser seulement trois types d'instruction :
Transfert de données depuis ou vers la mémoire ou entre deux registres.
Opérations logiques : ET, OU, NON, comparaison, test, etc...
Chaque instruction nécessite un certain nombre de cycles d'horloges pour s'effectuer : c'est le temps d'exécution. Il est dépendant de la complexité de l'instruction.
Langage machine et langage assembleur
Le langage machine (binaire) est le langage compris par le
microprocesseur.
Le langage assembleur est le langage le plus « proche » du langage machine. Il est composé par
des instructions en général assez rudimentaires que l'on appelle des mnémoniques.
Python est un langage :
.
Le binaire est un langage :
.
Pour comprendre le principe de l'exécution d'un programme par un processeur
écrit en langage d'assemblage (Assembleur), nous allons utiliser un logiciel de
simulation développé en JavaScript par Pierre Boudes : AMIL et modifié par nos soins.
Le code source du simulateur est disponible ici : AMIL.7z
Prise en main du simulateur Ouvrir le simulateur. Décrire l'action de chacune des lignes d'instruction du programme
suivant en vous aidant de l'aide mise à disposition et présentant toutes les mnémoniques :
JMP 3 ; saute à la ligne 3
7 ; donnée de l'utilisateur
? ; espace réservé pour le résultat
WR 5 r1 ; 1er instruction du programme
MOV 1 r0 ; ...
SUB r1 r0
WR 1 r2
JP r0 9
WR 0 r2
MOV r2 2 ; ...
STOP ; fin du programme
JMP 3 ; saute à la ligne 3
7 ; donnée de l'utilisateur
? ; espace réservé pour le résultat
WR 5 r1 ; écrit l'entier 5 dans le registre 1
MOV 1 r0 ; déplace la valeur ligne 1 de la mémoire dans le registre 0
SUB r1 r0 ; soustrait la valeur du registre 1 à celle du registre 0
WR 1 r2 ; écrit l'entier 1 dans le registre 1
JP r0 9 ; saute à la ligne 9 si la valeur du registre 0 est positive
WR 0 r2 ; écrit l'entier 0 dans le registre 1
MOV r2 2 ; déplace la valeur du registre 2 dans la ligne 2 de la mémoire
STOP ; fin du programme
Modifier la valeur de la donnée de l'utilisateur (ligne 1) de la mémoire et trouver à quelle
question répond ce programme sachant que le résultat « 0 » code pour FAUX et « 1 » code pour VRAI.Ce programme répond à la question : Est-ce plus grand ou égal à 5 ?Conversion Écrire un programme qui convertit des degrés Fahrenheit (c'est une donnée) en degré Celsius : °C = (°F-32)×5/9
JMP 3
68
?
MOV 1 r0
WR 32 r1
SUB r1 r0
WR 5 r1
MUL r1 r0
WR 9 r1
DIV r1 r0
MOV r0 2
STOP
JMP 3 ; Saute à la ligne 3
68 ; Donnée (Température en Fahrenheit)
? ; Place mémoire pour le résultat
MOV 1 r0 ; Copie la donnée dans le registre r0
WR 32 r1 ; Écrit la valeur 32 dans le registre r1
SUB r1 r0 ; Soustrait la valeur dans r1 à celle dans r0 et écrit le résultat dans r0
WR 5 r1 ; Écrit la valeur 5 dans le registre r1
MUL r1 r0 ; Multiplie la valeur dans r0 par celle dans r1 et écrit le résultat dans r0
WR 9 r1 ; Écrit la valeur 9 dans le registre r1
DIV r1 r0 ; Divise la valeur dans r0 par celle dans r1 et écrit le résultat dans r0
MOV r0 2 ; Écrit la valeur du registre r0 dans la mémoire ligne 2
STOP ; Fin du programme
Valeur maximale Écrire un programme qui renvoie la valeur maximale parmi trois données.