É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)