Étymologie Architecture de von Neumann

Transcription

Étymologie Architecture de von Neumann
Cédric Vanconingsloo
Supports de cours destinés aux étudiants de l'Ifosup Wavre, accessibles à
tous
http://vanconingsloo.be
Author : Cédric Vanconingsloo
Ce cours est principalement axé sur la compréhension du fonctionnement d'un ordinateur et l'étude du seul
langage qu'il connaisse, le binaire. De ce fait, le cours est relativement axé sur les mathématiques.
Chaque chapitre traitera d'un aspect du binaire. Pour vous exercer, j'ai créé un logiciel adapté qui génère
des exercices à la volée, telles que vous pourriez en avoir lors des interrogations et de l'examen.
Ce logiciel est disponible ici. Vous devez avoir Java 8 minimum, disponible ici.
Une version javascript sera disponible directement dans le cours prochainement.
Étymologie
Le terme ordinateur (computer) est une machine capable d'acquérir, de conserver, de traiter et de
restituer des informations.
Un ordinateur peut traiter divers types d'informations (textes, musiques, vidéo,...). Mais de manière
interne, l'ordinateur ne comprend qu'une seule chose : des chiffres.
Le terme informatique (computer science) est donc la science du traitement l'information.
Un système informatique est un ensemble de moyens logiciels et matériels nécessaires pour satisfaire les
besoins des utilisateurs.
Architecture de von Neumann
Selon von Neumann, l'ordinateur est constitué de 4 parties :
1 / 13
Cédric Vanconingsloo
Supports de cours destinés aux étudiants de l'Ifosup Wavre, accessibles à
tous
http://vanconingsloo.be
1.
L’unité arithmétique et logique (UAL ou ALU en anglais) ou unité de traitement : son rôle est
d’effectuer les opérations de base ;
2.
L’unité de contrôle, chargée du séquençage des opérations ;
3.
La mémoire qui contient à la fois les données et le programme qui dira à l’unité de contrôle quels
calculs faire sur ces données. La mémoire se divise entre mémoire volatile (programmes et données
en cours de fonctionnement) et mémoire permanente (programmes et données de base de la
machine).
4.
Les dispositifs d’entrée-sortie, qui permettent de communiquer avec le monde extérieur.
En réalité, un ordinateur possède une architecture légèrement différente.
2 / 13
Cédric Vanconingsloo
Supports de cours destinés aux étudiants de l'Ifosup Wavre, accessibles à
tous
http://vanconingsloo.be
Un ordinateur se compose d'une mémoire centrale. Elle contient :
Les instructions des différents programmes ;
les données traitées lors de l'exécution des programmes.
Les instructions sont stockées sous forme de code machine. Les instructions comme les données sont
écrites en langage binaire.
La mémoire centrale est divisée physiquement en cellules. Chaque cellule correspond à un mot1 mémoire
et possède une adresse propre.
L'unité centrale de traitement, ou le CPU est le véritable cœur de l'ordinateur. Elle contient l'unité de
commande et l'unité arithmétique et logique. L'unité de commande contient un dispositif permettant de
décoder les instructions afin de reprogrammer les circuits interne de l'unité arithmétique et logique.
L'unité d'entrées/sorties, aussi appelé unité d'échange, sont des éléments qui permettent de transférer des
informations entre l'UCT, la mémoire et les périphériques. L'unité I/O dialogue avec les contrôleurs de
périphériques, qui servent d'interface entre le logiciel et le matériel.
Codage de l'information
Quels sont les types d'informations traitées par un ordinateur ? On en distingue deux types : les
instructions et les données.
Instructions
Écrite en langage machine, une instruction représente une opération précise effectuée par un ordinateur.
En réalité, l'ordinateur ne comprend que quelques instructions. C'est la combinaison de ces instructions qui
permet de traiter l'information. Une instruction se compose de l'opcode (code de l'opération à effectuer)
et des opérandes impliqué dans l'opération.
L'instruction doit être décodée par l'unité de contrôle afin de réaliser l'opération sur les opérandes.
Données
Une donnée est un opérande sur lequel on peut effectuer une opération. Le résultat de l'opération produira
aussi une donnée, qui peut servir d'opérande à son tour. Ces données seront ainsi stockée en mémoire.
3 / 13
Cédric Vanconingsloo
Supports de cours destinés aux étudiants de l'Ifosup Wavre, accessibles à
tous
http://vanconingsloo.be
Attention, il ne faut pas confondre données et fichier. Un fichier est un conteneur rassemblant les
données.
Les données sont constituées logiquement de deux parties. Les données numériques, sur lesquelles nous
pouvons effectuer des opérations mathématiques, et les données alphanumériques, principalement
utilisées pour l'affichage. Ces données alphanumérique sont des mots binaires codé selon une certaine
norme. Les plus connues sont les normes ASCII et Unicode.
L'ASCII
Le format de codage ASCII (Amercian Standard Code for Information Interchange) est une table de
codage sur 7 bits qui permet d'assigner à chaque mot binaire un caractère alphanumérique. Il est donc
possible d'écrire en anglais avec la table ASCII.
L'ASCII définit 128 caractères numérotés de 0 à 127 et codés en binaire de 0000000 à 1111111.
Toutefois, les ordinateurs travaillant sur un octet depuis les années 1970, chaque caractère d'un texte en
ASCII est stocké dans un octet dont le MSB est 0.
Les caractères de numéro 0 à 31 et le 127 ne sont pas affichables ; ils correspondent à des commandes de
contrôle de terminal informatique. Les autres caractères sont les chiffres arabes, les lettres latines
majuscules et minuscules et quelques symboles de ponctuation. Vous pouvez, dans un programme en C par
exemple, demander d'afficher le caractère ASCII 7 pour faire retentir la cloche interne de l'ordinateur !
Seulement, le code ASCII ne permet pas de gérer les caractères accentués, ou les idéogrammes asiatiques.
L'Unicode
Le format Unicode a été créé pour pallier les manques de l'ASCII. Unicode spécifie un numéro unique
pour chaque caractère, quel que soit la forme, le logiciel ou la langue. Ce numéro unique s'appelle un point
de code.
4 / 13
Cédric Vanconingsloo
Supports de cours destinés aux étudiants de l'Ifosup Wavre, accessibles à
tous
http://vanconingsloo.be
Le format Unicode n'est pas une police de caratères !
L'Unicode se divise en 17 plans de 256x256 cellules, soit 65536 points de code par plan. Il est donc
possible de stocker plus d'1 millions de caractères !
Chaque plan est divisé en blocs de tailles variables. Ces blocs contiendront les points de code regroupés
par caractères d'un même style d'écriture (latin, grec,...).
Unicode est une base de données. Dans cette base sont stocké le point de code, mais aussi description et
d'autres informations (sa catégorie, son plan, son bloc, les correspondances de casse, etc.)
Puisque l'Unicode est une base de données, il faut pouvoir la traduire en code exploitable pour
l'ordinateur ! Il faudra utiliser certaines normes de codage. C'est le rôle du standard UTF. Il se divise en 3
formes : UTF-8, très utilisé en Internet, UTF-16, et l'UTF-32 ; Les chiffres indiquent le nombre de bits
utilisés pour le codage du caractère.
1Un mot est une suite finie de nombres dans un ensemble donné. Par exemple, un byte et un mot de 8
bits.
Introduction
Dans le monde humain, nous utilisons régulièrement 1010 chiffres. C'est ce que nous appelons le système
décimal. L'ordinateur, lui, ne comprend que 102 chiffres, le 0 et le 1. C'est le système binaire.
Claude Shannon démontra, dans les années 30, qu'avec l'aide de contacteurs (interrupteurs électriques), il
est possible de réaliser des opérations logiques.
Pour mieux comprendre le binaire, regardons à l'intérieur du processeur d'un ordinateur. Un processeur est
constitué de plusieurs millions de transistors. Ces transistors fonctionnent comme des interrupteurs
électriques : soit ils laissent passer le courant, soit ils le bloquent. Il n'y a donc que deux états possibles :
soit il y a du courant (1), soit il n'y en a pas (0).
Principe
5 / 13
Cédric Vanconingsloo
Supports de cours destinés aux étudiants de l'Ifosup Wavre, accessibles à
tous
http://vanconingsloo.be
En arithmétique, une base est la valeur qui sert à définir un système de numération. La base la plus connue
est la base du système décimal, qui est celle que nous employons couramment. Nous employons aussi, sans
le savoir, plusieurs autres bases :
la base sexagésimale, pour les minutes et les secondes (base 60) ;
la base duodécimale, pour les mois et les heures (base 12) ;
la base sénaire, pour les dés à jouer (base 6).
En informatique, les bases les plus couramment utilisées sont :
le binaire (base 2) ;
l'octal (base 8, pour grouper les bits en triplets), de 0 à 7 ;
l'hexadécimal (base 16, pour grouper les bits en nibbles1), de 0 à F.
Quelque soit la base, chaque nombre suit la relation mathématique :
[pmath]sum{i=0}{n}{(b_i a^i)} = b_n a^n + {cdots} + b_3 a^3 + b_2 a^2 + b_1 a^1 + b_0 a^0 [/pmath]
où bi est la valeur numérique de rang i et ai la puissance de la base a de rang i.
Exemple : [pmath]2496_10 = 2*10^3 + 4*10^2 + 9*10^1 + 6*10^0[/pmath]
Par convention, la base de travail est notée en indice.
Représentation décimale
La représentation décimale comporte dix chiffres, de 0 à 9. Si l'on regarde bien, le nombre 10 est constitué
de 2 chiffres : le 1 et le 0. Imaginez le compteur kilométrique de votre voiture.
0
0
0
0
0
0
0
9
Que se passe-t-il si vous continuez à rouler ? Le rouleau des dizaines passe à 1, et celui des unités revient à
0. Idem au passage de 99 à 100.
Nous pouvons aussi représenter nos nombres dans un abaque. Plaçons le nombre 1453 dans l'abaque.
1000 = 10³
100 = 10²
10 = 101
1 = 100
6 / 13
Cédric Vanconingsloo
Supports de cours destinés aux étudiants de l'Ifosup Wavre, accessibles à
tous
http://vanconingsloo.be
1
4
5
3
Le nombre 1453 est décomposé en : 1*1000 + 4*100+5*10+3, ou, de manière plus mathématique :
[pmath] 1*10^3 + 4*10^2 + 5*10^1 + 3*10^0[/pmath]
Représentation binaire
Reprenons le compteur de la voiture. En binaire, il n'existe que 0 et 1, donc que se passera-t-il si nous
roulons ?
0
0
0
0
0
0
0
1
Le principe n'a pas changé : le rouleau de droite retourne à 0, tandis que l'autre passe à 1. En roulant, nous
verrons successivement 0000 0000, 0000 0001, 0000 0010, etc.
Reprenons maintenant le principe de l'abaque. Plaçons le nombre 1110 :
27=128
26=64
25=32
24=16
23=8
22=4
21=2
20=1
1
1
1
0
Le nombre 1110 est décomposé en [pmath]1*2^3 + 1*2^2 + 1*2^1 + 0*2^0[/pmath], ou plus simplement
[pmath]2^3+2^2+2^1[/pmath]
On représente aussi un nombre binaire sous la forme 1110b ou b1110.
Le bit
Le bit (pour Binary DigIT) est la plus petite unité informatique manipulable par les ordinateurs. Un bit ne
peut posséder que deux états : soit 0, soit 1. Si nous prenons 2 bits, nous pouvons donc avoir 4 états
différents :
a
0
1
7 / 13
Cédric Vanconingsloo
Supports de cours destinés aux étudiants de l'Ifosup Wavre, accessibles à
tous
http://vanconingsloo.be
b
0
1
00
01
10
11
De même, avec 3 bits, nous pouvons obtenir 8 états différents. De manière générale, pour un groupe de n
bits, nous avons 2n valeurs différentes.
Poids binaire
Dans un nombre binaire, la valeur d'un bit dépend de sa position. Cette position s'appelle le poids binaire.
Ce poids se compte en partant de la gauche du nombre binaire. Le poids d'un bit augmente d'une
puissance, en lisant de droite à gauche à partir de zéro. Ainsi, le dernier bit à droite d'un nombre binaire est
de 0, le 4e bit est de poids 3, etc.
Représentation octale
Le système octal est un système de numération allant de 0 à 7. Le principe est le même que pour le binaire
ou le décimal. On utilisera généralement le système octal pour grouper les bits en triplets. En effets, en
groupant les bits par 3, chaque groupe ne peut posséder que 8 valeurs différentes (de 000 à 111).
Cette base obéit aux mêmes règles de décomposition. Par exemple, le nombre 7628 se décomposera en :
[pmath]762_8 = 7*8^2 + 6*8^1+2*8^0=
7*64_10+6*8_10+2*1_10=448_10+48_10+2_10=498_10[/pmath]
Nous remarquons donc que 7628=49810, d'où l'importance de spécifier la base de travail !
En informatique, le système octal se notera en précédant le nombre d'un 0 (7628 sera noté 0762).
Représentation hexadécimale
Le système hexadécimal est la notation la plus employée en informatique. Elle permet à l'utilisateur
humain de travailler avec des nombres binaires assez élevés. Les bits seront groupés en nibbles (4 bits),
notés de 0 à F (A vaut 1010, jusque F valant 1510).
La règle de décomposition est aussi valable pour le système hexadécimal.
En informatique, le système hexadécimal se notera en précédant le nombre d'un 0x ou du symbole $. le
nombre 0F16 sera noté 0x0F.
8 / 13
Cédric Vanconingsloo
Supports de cours destinés aux étudiants de l'Ifosup Wavre, accessibles à
tous
http://vanconingsloo.be
1Un nibble est un groupement de 4 bits.
Chapitre 2.1 : Conversions
Binaire → Décimal
Pour convertir un nombre binaire vers son homologue décimal, il suffit de multiplier la valeur binaire par
son poids.
Prenons par exemple le nombre b11000111.
27=128
26=64
25=32
24=16
23=8
2²=4
21=2
20=1
1
1
0
0
0
1
1
1
En appliquant la formule, nous obtenons : [pmath]2^7+2^6+2^5+2^2+2^1+2^0 = 128+64+4+2+1 =
199_10 [/pmath]
Binaire → Octal
La conversion du binaire vers l'octal est plus simple, car 8 est une puissance de 2. La conversion se fait en
groupant les bits en triplets, en partant de la droite.
Reprenons le nombre 11000111. En le divisant en triplets, nous obtenons 011 000 111.
9 / 13
Cédric Vanconingsloo
Supports de cours destinés aux étudiants de l'Ifosup Wavre, accessibles à
tous
http://vanconingsloo.be
0112=38
0002=08
1112=78
Le nombre 110001112 s'écrira donc 3078, ou 0307.
Binaire → Hexadécimal
La conversion du binaire vers de l'hexadécimal suit le même principe que celui du binaire vers de l'octal,
mis à part le groupement qui se fait en nibbles (4 bits), toujours de droite à gauche.
Reprenons une dernière fois le nombre 110001112. En le divisant en nibbles, nous obtenons 1100 0111.
11002=C16
01112=716
Le nombre 110001112 s'écrira donc C716 ou 0xC7.
Décimal → Binaire
/2
reste
158310
1
791
1
395
1
197
1
10 / 13
Cédric Vanconingsloo
Supports de cours destinés aux étudiants de l'Ifosup Wavre, accessibles à
tous
http://vanconingsloo.be
98
0
49
1
24
0
12
0
6
0
3
1
1
1
La conversion d'un nombre décimal vers un nombre binaire revient à faire une division euclidienne
(division entière avec reste) par 2, en notant à chaque fois le reste obtenu.
Prenons le nombre 158310 à convertir en binaire.
Il existe un « truc ».
Si le nombre décimal n'est pas divisible, retirez 1 et placez-le à côté.
Par exemple : 1583 n'est pas divisible par 2. 1583 = 1582 +1.
1582 est divisible par 2 et il reste 1.
Recommencez l'opération jusqu'au bout. La dernière division mènera toujours à 1, qui est le dernier reste.
Le nombre converti se lira alors de bas en haut.
1582 = b110 0010 1111.
Octal → Binaire et Hexadécimal → Binaire
11 / 13
Cédric Vanconingsloo
Supports de cours destinés aux étudiants de l'Ifosup Wavre, accessibles à
tous
http://vanconingsloo.be
Convertir de l'octal en binaire est beaucoup plus simple. En effet, chaque chiffre composant le nombre
octal est un triplet de bits. La conversion se fait presque mentalement.
Prenons le nombre 0562.
octal
5
6
2
binaire
101
110
010
0562 = 101 110 0102.
De même, le passage de l'hexadécimal se fait en reprenant chaque chiffre et en le convertissant en nibble
correspondant.
hexadécimal
D
8
binaire
1101
1000
0xD8 = 1101 10002
Décimal→ Octal , Décimal→ Hexadécimal, Décimal → toute base
La conversion d'un nombre décimal en octal ou en hexadécimal est beaucoup plus complexe. Il s'agit de
faire des divisions euclidiennes successives, tout en reportant les restes obtenus. Cette méthode étant très
lente, il est parfois plus facile de convertir le nombre décimal en binaire, puis de le reconvertir en octal ou
en hexadécimal.
Exemple pour la base 8 :
12 / 13
Cédric Vanconingsloo
Supports de cours destinés aux étudiants de l'Ifosup Wavre, accessibles à
tous
http://vanconingsloo.be
Ce qui donne comme résultat : 1248 = 02340.
Exercices
Dans l'exerciseur, utilisez le bouton Conversions.
13 / 13
Powered by TCPDF (www.tcpdf.org)

Documents pareils