Africa Computing - Introduction théorique à l’informatique - Architecture des ordinateurs.

Rubrique : Accueil > Initiation théorique > Architecture des ordinateurs
 

Chapitre 2 : Architecture des ordinateurs





2.1. Introduction

En première approche, un ordinateur est constitué d’un processeur qui effectue les traitements, d’une mémoire centrale où ce processeur range les données et les résultats de ces traitements et de périphériques permettant l’échange d’informations avec l’extérieur. Tous ces constituants sont reliés entre eux par l’intermédiaire d’un bus, qui est l’artère centrale et leur permet de s’échanger des données. Pratiquement, tous les ordinateurs actuels ont cette architecture, que ce soient les micro-ordinateurs personnels ou les gros ordinateurs des entreprises. Les différences résident essentiellement dans les performances des constituants.

L’ensemble des communications à l’intérieur de l’ordinateur s’effectue en langage binaire.

La plupart des systèmes supportent les mêmes types de périphériques ; leur nombre dépend de la taille et des performances de l’unité centrale.

Les matériels à vocation scientifique ou industrielle sont également dotés de périphériques particuliers spécifiques des fonctions qui leur sont demandées.



2.2. Codage de l’information (qu’est ce que le système binaire ?)

Le microprocesseur et tous les composants qui l’entourent doivent traiter les nombres usuels (0, 1, 2...8, 9) dont la représentation au moyen d’états électriques est très complexe. C’est la raison pour laquelle les ordinateurs travaillent sur des nombres "binaires", et n’utilisent que les chiffres 1 ("allumé") et 0 (« éteint »). Chaque 0 ou 1 d’un nombre binaire constitue un bit. C’est la plus petite unité envisageable (un périphérique qui ne serait capable que de stocker des zéros ne pourrait pas être utilisé comme mémoire, il faut pouvoir distinguer au moins deux valeurs).

Il faut, par exemple, 4 bits pour représenter un chiffre ordinaire tel que "8" (qui s’écrit 1000 en représentation binaire).

Une lettre majuscule telle que "A" est codée 01000001. Un groupe de huit bits est appelé octet, chaque octet correspondant ainsi à un caractère. Les PC disposent de microprocesseurs très puissants qui peuvent manipuler des nombres de 32 bits (4 octets à la fois). Pour toutes les opérations portant sur des nombres plus importants, le microprocesseur doit travailler sur des portions réduites, puis reconstituer le résultat sous forme d’un nombre unique.



2.2.1. Un code Universel

Si mystérieux que paraissent les ordinateurs, ils ne font qu’allumer et éteindre des milliers de minuscules interrupteurs. En combinant un grand nombre de ces interrupteurs, on peut créer une grande variété d’instructions pour diriger l’ordinateur.

On dit toujours qu’on utilise en informatique l’arithmétique binaire parce que c’est la plus efficace. Cela veut dire qu’une information numérique peut être stockée en distinguant plusieurs valeurs d’un phénomène physique continu comme une tension ou une intensité. Plus on distinguera de valeurs, plus l’espace entre les valeurs sera petit et moins le dispositif de mémorisation sera fiable. Avec la numération binaire, il suffit de savoir distinguer deux états, c’est en ce sens que c’est la méthode la plus fiable pour coder l’information numérique.

Deux autres systemes, l’octal (base 8) et le l’hexadecimal (base 16) sont très souvent employés, car ils facilitent le dialogue entre informaticiens. Difficile en effet d’exprimer oralement une adresse mémoire avec les seuls 0 et 1 du binaire !

DECIMAL BINAIRE OCTAL HEXADECIMAL
0 0 0 0
1 01 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
16 10000 20 10
17 10001 21 11

Comment coder le nombre 1944 avec seulement nos deux digits, 0 et 1 ?

On peut coder chacun de ses chiffres séparément (minimum 4 bits par chiffre) : 0001 1001 0100 0100

On peut coder la valeur 1944 entièrement en binaire : 0000011110011000

Avec 16 bits, on peut représenter les nombres de 0 à 9999 en format décimal, ce qui nous donne 10000 combinaisons, alors qu’avec 16 bits en binaire pur, on peut représenter 65536 nombres différents. C’est pour cela aussi qu’on dit que le binaire est plus efficace.

Ainsi un groupement de p éléments binaires successifs assure la représentation de 2p caractères distincts. Réciproquement, pour représenter 2p caractères distincts il faut p éléments binaires successifs choisis parmi deux signes (0,1).



2.2.2. Quelques exemples de conversions

Binaire Hexadécimal Décimal
1001 9 9
101101 2D 45
11110111 F7 247


2.2.3. Les unités de mesure

Devant l’augmentation croissante des volumes de données mis en jeu, de nouvelles unités apparaissent pour caractériser les nouveaux supports de stockage. Aujourd’hui, un disque dur fait couramment une taille de 2 Go, la mémoire centrale 32 Mo et une disquette 1,44 Mo.

1 octet = 8 bits
1000 octets (1024 octets pour être précis...) = 1 Ko (Kilo-octets)
1 000 000 octets = 1000 Ko = 1 Mo (méga-octets)
1 000 000 000 octets = 1000 Mo = 1 Go (Giga-octets)
1 000 000 000 000 octets = 1000 Go = 1 To (Téra-octets)
1 000 000 000 000 000 octets = 1000 To = 1 Po (Péta-octets)


2.2.4. Données non numériques

Pour permettre la manipulation, l’échange et le stockage de fichier texte, il faut les coder sous un format universel qui peut être reconnu par tous les ordinateurs. Le codage des caractères alphanumériques se fait par une table de correspondance propre à chaque code utilisé :

  • BCD (Binary Coded Decimal) : le caractère est codé sur 6 bits
  • ASCII (American Standard Code for Information Interchange) : le caractère est codé sur 7 bits
  • EBCDIC (Extended Binary Coded Decimal Internal Code) : le caractère est codé sur 8 bits
  • UNICODE : Le caractère est codé sur 16 bits (soit 65536 combinaisons possible) ; il permet de traiter des textes écrits aussi bien en hiéroglyphes qu’en français.


2.2.5. Nombres entiers

Entier positif :

Conversion d’une base à l’autre :

Décimal à binaire :

La conversion se fait par divisions entières successives par 2. L’arrêt se fait à un quotient nul. Le nombre binaire est obtenu en lisant le reste, du dernier au premier.

Exemple : 25
25 / 2 = 12 reste 1
12 / 2 = 6 reste 0
6 / 2 = 3 reste 0
3 / 2 = 1 reste 1
1 / 2 = 0 reste 1
donc 25(10) = 11001 (2) (NB : 25 en base 10 équivaut a 11001 en base 2)

Octal à décimal :

La conversion se réduit à une addition de puissance de 8 (ou 16).

Décimal à octal :

La conversion se fait par divisions entières successives par 8 (ou 16). L’arrêt se fait à un quotient nul. Le nombre binaire est obtenu en lisant le reste, du dernier au premier.

-  Octal (ou hexadécimal) à binaire

La conversion correspond à un éclatement de chaque chiffre octal (ou hexa) en son équivalent binaire sur 3 (ou 4) bits.

Exemple :
7(8) = 111(2) car 1(8) = 001(2) et 7(8) = 111(2)
A(16) = 1010(2) car 2(16) = 10(2) et A(16) = 1010(2)

-  Binaire à octal (ou hexadécimal)

On effectue un remplacement de droite à gauche de 3(ou 4) bits par le chiffre octal (hexa) correspondant. Si le nombre de bits n’est pas multiple de 3(ou 4), il faut compléter à gauche avec des 0.

Exemple :
01101(2) = 55(8) = 2D(16)

Entier négatif :

Il existe quatre façons de représenter les nombres négatifs en machine. La première, la valeur signée, consiste à réserver tout simplement un bit pour le signe (le bit le plus à gauche avec 0 pour + et 1 pour -), les autres bits servant à représenter la valeur absolue du nombre. Dans la deuxième méthode, le complément à 1 (ou complément restreint), on a également un bit de signe qui vaut 0 pour + et 1 pour -. Pour effectuer la négation d’un nombre, on remplace tous les bits (y compris le bit de signe) qui sont à 0 par 1 et tous les bits qui sont à 1 par 0. La troisième méthode, le complément à 2 (ou complément vrai), a elle aussi un bit de signe avec 0 pour + et 1 pour -. On effectue la négation d’un nombre en deux étapes : on remplace d’abord tous les 1 par 0 et tous les 0 par 1, comme dans le complément à 1. Puis on additionne 1 au résultat ainsi obtenu. L’addition binaire ressemble fort à l’addition décimale à ceci près qu’on engendre une retenue si la somme et supérieure à 1 au lieu de 9.

Essayons de convertir 6 en complément à deux. Il faut deux étapes :

00000110 (+6)
11111001 (-6 en complément à 1)
       1 (on additionne 1)
11111010 (-6 en complément à 2)

Si une retenue est engendrée au niveau du bit le plus à gauche, elle est ignorée. La quatrième méthode, le codage par excédent, consiste, pour les nombres de m bits, à stocker la somme du nombre et de 2,n-1. Par exemple, pour les nombres sur 8 bits, on stocke la valeur du nombre plus 128. C’est ainsi que -3 devient -3 + 128 = 125, soit en binaire 0 1 1 1 1 1 0 1. On mappe ainsi sur l’intervalle O..255, les nombres de l’intervalle -128,..., +127. On peut remarquer que cette méthode donne un résultat identique à celle du complément à 2, au bit de signe près qui est inversé. Les deux premières méthodes (valeur signée et complément à 1) autorisent deux représentations distinctes de la valeur 0 : un « zéro positif » (+O) et un « zéro négatif » (-O). C’est un inconvénient important. La méthode du complément à 2 n’engendre pas de problème de ce côté-là car le complément à 2 de +0, c’est encore +0. En revanche, on doit noter qu’une configuration binaire formée d’un 1 suivi de 0 est son propre complément à 2 ; l’intervalle dans lequel les nombres négatifs prennent leur valeur n’est pas le symétrique de celui des nombres positifs : il y a un nombre négatif qui n’a pas de contrepartie positive. Le même problème survient avec la quatrième méthode.



2.2.6. Les nombres fractionnaires

Nombres fractionnaires :

Changement de base :

-  Binaire à décimal

On additionne les puissances de 2.

Exemple : 0,01 (2) = 0 * 2e - 1 + 1 * 2e - 2 = 0,25(10)

-  Décimal à binaire

La conversion s’effectue par des multiplications successives par 2, de nombres purement fractionnaires. On s’arrête dès que l’on obtient une partie fractionnaire nulle. Le résultat est obtenu en lisant les parties entières de la première vers la dernière.

Exemple : 0,125 * 2 = 0,250 = 0 + 0,250 0,25 * 2 = 0,50 = 0 + 0,50 0,5 * 2 = 1,0 = 1 + 0,0 on lit donc de haut en bas 0,125(10) = 0,001(2)

Nombres fractionnaires à virgule fixe :

Les nombres sont traités comme des entiers avec une virgule virtuelle gérée par le programmeur ; le problème est la gestion de la place de la virgule au cours des opérations ce qui rend son traitement très difficile et le résultat peu précis.



2.2.7. Protection contre les erreurs

Avec l’augmentation constante des vitesses et des taux de transfert, il a fallut sans cesse perfectionner les algorithmes de vérification de l’intégrité des données transmises. On recense plusieurs type de codes vérificateurs mais les principaux sont les suivants :

Codes autovérificateurs :

Le contrôle de parité est le plus simple ; le mot se compose de m+1 bits ; la valeur est telle que le nombre total de bit à 1 (calculé sur m+1) est pair ou impair. Si la parité n’est plus respectée, l’erreur est détectée, mais s’il y a double erreur, la parité est aussi respectée et alors l’erreur n’est plus détectée.

Codes autocorrecteurs :

La double parité est un contrôle double du code mais seul un nombre impair d’erreur est possible à détecter.

Le code de Hamming est basé sur les tests de parité et ne permet de corriger qu’un bit en erreur. On peut aussi l’utiliser dans le cas d’erreurs multiples sur une séquence de bits en arrangeant le message de façon matricielle.

Détection d’erreurs groupées :

CRC (Cyclique Redondancy Check) ou méthode des codes polynomiaux qui consiste avant la transmission à ajouter des bits de contrôle. Une information de n bits peut être considérée comme la liste des coefficients binaires d’un polynôme de n termes et donc de degré n-1.

101101 = 1+x2+x3+x5

Ce sont ces types de détection d’erreur que l’on utilise aujourd’hui car ce sont de loin les plus performantes.



2.3. éléments de logique

Certaines des fonctions accomplies par l’ordinateur peuvent être obtenues avec d’autres circuits. Cette technique s’appelle la "logique cablee".

2.3.1. Les opérateurs

Le micro-ordinateur, ou plus exactement l’un de ses composants, l’UC (unité centrale) peut accomplir aussi bien des opérations arithmétiques que des opérations logiques.

Les opérations sont surtout utilisées pour comparer des données entre elles et déclencher, à partir du résultat, une transaction particulière.

Par exemple, on peut insérer dans un programme calculant la feuille de paie, un système de contrôle du nom qui se présente ; Si ce nom est FIN, la machine doit en aviser l’opérateur et mettre fin au programme.

Dans l’éxécution d’un calcul arithmétique normal, nous pouvons distinguer trois entités fondamentales :

  1. Les opérandes : nombres sur lesquels on effectue l’opération.
  2. L’opérateur : symbole indiquant l’opération à accomplir
  3. Le résultat : nombre associé par l’opérateur aux opérandes.

On connaît les opérateurs correspondant aux opérations arithmétiques ordinaires mais il existe aussi une série d’operateurs appelée : les opérateurs logiques. Ces opérateurs obéissent à des règles spécifiques, parfois très complexes.



2.3.2. Les opérateurs logiques

Prenons l’exemple des feux de circulation. Il y a quatre situations possibles :

  1. feux éteints
  2. feu rouge
  3. feu orange
  4. feu vert

A la question : "Quel est l’état des feux de circulation ?", la réponse est nécessairement l’une des quatre situations énumérées plus haut.

Soit : éteint OU rouge OU orange OU vert

Le mot OU est un opérateur logique. Le symbole est OU. On peut donc exprimer les quatre situations possibles de la façon suivante : état des feux de circulation : 1 OU 2 OU 3 OU 4

Question : "Quand une voiture a-t-elle le droit de passer ?"

Réponse : "Feux éteints OU feu vert."

On peut traduire symboliquement la réponse par : PASSEZ = 1 OU 4

En réalité, l’expression 1 OU 4 n’est pas suffisante puisque si les feux sont éteints, il faut encore s’assurer que la voie est libre.

La réponse complète est donc : PASSEZ = feu vert OU feux éteints ET voie libre

Considérons cette dernière condition. Le mot ET signifie qu’on doit avoir simultanément les deux situations : feux éteints et voie libre

C’est un nouvel opérateur logique que l’on symbolise par ET. En attribuant le chiffre 5 à la condition voie libre, on aura : PASSEZ = 4 OU 1 ET 5

Mais cette expression est susceptible de deux interprétations :

a) PASSEZ = (4 OU 1) ET 5
b) PASSEZ = 4 OU (1 ET 5)

L’expression a) signifie que le passage est autorisé si l’on a (4 OU 1) et en même temps 5. C’est une interprétation erronée contrairement à l’expression b) qui est correcte.

Il est donc indispensable d’utiliser correctement les parenthèses, exactement comme dans les formules algébriques.
Les opérateurs ET / OU s’appliquent à deux éléments d’un ensemble quelconque.

Considérons un exemple à deux chiffres binaires A et B. Ces deux éléments peuvent prendre la valeur 0 ou 1. Il s’ensuit que les diverses combinaisons entre les valeurs A et B sont les suivantes :

A
1
1
0
0
B
1
0
1
0

En faisant appel aux opérateurs ET/OU, nous obtenons :

A B
1 1
1 0
0 1
0 0
A ET B
1
0
0
0
A OU B
1
1
1
0

Introduisons maintenant un nouvel opérateur : OU exclusif, OUX (XOR en anglais). cet opérateur est équivalent à OU sauf dans le cas où A=1 et B=1 où il donne 0 comme résultat.
En d’autres termes, OUX n’équivaut à 1 que si l’un seulement de A ou de B a pour valeur 1. La table de vérité de cet opérateur est par conséquent :

A B
1 1
1 0
0 1
0 0
B OUX B
0
1
1
0

Le dernier des opérateurs est le NON (NOT en anglais). Il s’applique à un seul opérateur avec un sens complémentaire. Il remplace donc le symbole 1 par 0 et réciproquement.

A
1
0
NON A
0
1

On peut également appliquer les opérateurs logiques à des nombres binaires à plusieurs chiffres.

Si nous prenons :

A = 01101
B = 10011

on a :

NON A = 10010
NON B = 01100
A ET B = 00001

A OU B = 11111 A OUX B = 11110



2.3.3. La logique cablée

Les opérateurs logiques peuvent s’appliquer aux signaux électriques de la même manière qu’ils s’appliquent aux symboles 0 et 1 (signaux électriques numériques).

L’opération qui permet d’obtenir le signal A ET B est effectué par des circuits numériques spécialisés que l’on appelle les circuits logiques.

Chacun de ces circuits a une fonction qui lui est propre. A chaque opérateur logique correspond un circuit spécifique.
Il faut donc construire un appareil particulier renfermant un circuit pour chacune des fonctions logiques dont on a besoin. Concevoir un circuit, c’est relier électriquement entre eux un certain nombre de composants. On obtient ainsi un circuit intégré. Cette opération de connexion s’appelle un câblage et le circuit prend alors le nom de logique cablée.

Les opérateurs logiques peuvent s’appliquer sur des nombres quelque soit la base concernée.