Qu’est-ce qu’un ordinateur ?



Tout le monde sait ce qu’est un ordinateur, quelques personnes savent comment ça marche a peut près. Savez-vous comment ça marche en profondeur ?

Plus particulièrement je vais vous parlez du fonctionnement d’un ordinateur.

La définition la plus basique


Un ordinateur est un système de traitement de l’information programmable tel que défini par Alan Turing. Il fonctionne par la lecture séquentielle d’un ensemble d’instructions, organisées en programmes, qui lui font exécuter des opérations logiques et arithmétiques. Tous se reposent sur la logique binaire et sur des nombres formés à partir de chiffres binaires.

Le fonctionnement de l’ordinateur


Quand je parle de fonctionnement je parle :

  • D’entrées sorties
  • De bus
  • D’architecture
  • D’instructions

les Entrées sorties

Les dispositifs d’entrée/sortie permettent à l’ordinateur de communiquer avec l’extérieur. Du clavier à l’écran, d’un ordinateur portable à un écran, souris etc… La carte réseau permet par exemple de relier les ordinateurs en réseau informatique, dont le plus grand est Internet. Le point commun entre tous les périphériques d’entrée est qu’ils convertissent l’information qu’ils récupèrent en données compréhensibles par l’ordinateur. À l’inverse, les périphériques de sortie décodent l’information fournie par l’ordinateur afin de la rendre compréhensible par l’utilisateur.

Des exemples d’entrées sorties :

Les différents connecteurs

Les bus de connexions

Ces différentes parties sont reliées par trois bus, le bus d’adresse, le bus de données et le bus de contrôle. Un bus est un groupement d’un certain nombre de fils électriques réalisant une liaison pour transporter des informations binaires codées sur plusieurs bits. Le bus d’adresse transporte les adresses générées par l’UCT (Unité Centrale de Traitement) pour sélectionner une case mémoire ou un registre interne de l’un des blocs. Le nombre de bits véhiculés par ce bus dépend de la quantité de mémoire qui doit être adressée. Le bus de données transporte les données échangées entre les différents éléments du système. Le bus de contrôle transporte les différents signaux de synchronisation nécessaires au fonctionnement du système : signal de lecture (RD), signal d’écriture (WR), signal de sélection (CS : Chip Select).

Schéma des bus de connexions

Les types de bus

ARchitecture

La miniaturisation permet d’intégrer l’UAL et l’unité de contrôle au sein d’un même circuit intégré connu sous le nom de microprocesseur. Typiquement, la mémoire est située sur des circuits intégrés proches du processeur, une partie de cette mémoire, la mémoire cache, pouvant être située sur le même circuit intégré que l’UAL.

L’ensemble est, sur la plupart des architectures, complété d’une horloge qui cadence le processeur. Bien sûr, on souhaite qu’elle soit le plus rapide possible, mais on ne peut pas augmenter sans limites sa vitesse pour deux raisons :

  • plus l’horloge est rapide et plus le processeur dégage de la chaleur (selon le carré de la fréquence). Une trop grande température peut détériorer le processeur ;
  • il existe une cadence où le processeur devient instable ; il génère des erreurs qui mènent le plus souvent à un plantage.

Évolution du nombre de transistors sur un circuit intégré selon la loi de Moore.

La tendance a été à partir de 2004 de regrouper plusieurs UAL dans le même processeur. En effet, la miniaturisation progressive (voir Loi de Moore) le permet sans grand changement de coût. Une autre tendance, depuis 2006 chez ARM, est aux microprocesseurs sans horloge : la moitié de la dissipation thermique est en effet due aux signaux d’horloge quand le microprocesseur fonctionne ; de plus, un microprocesseur sans horloge a une consommation presque nulle quand il ne fonctionne pas : le seul signal d’horloge nécessaire est alors celui destiné au rafraîchissement des mémoires. Cet atout est important pour les modèles portables.

Le principal écart fonctionnel aujourd’hui par rapport au modèle de von Neumann est la présence sur certaines architectures de deux antémémoires différentes : une pour les instructions et une pour les données. La raison de cet écart est que la modification par un programme de ses propres instructions est aujourd’hui considérée (sauf sur les machines hautement parallèles) comme une pratique à proscrire. Dès lors, si le contenu du cache de données doit être récrit en mémoire principale quand il est modifié, on sait que celui du cache d’instructions n’aura jamais à l’être, d’où simplification des circuits et gain de performance.

Évolution du nombre de transistors sur un circuit intégré selon la loi de Moore.

instructions

Les instructions que l’ordinateur peut comprendre ne sont pas celles du langage humain. Le matériel sait juste exécuter un nombre limité d’instructions bien définies. Des instructions typiques comprises par un ordinateur sont par exemple :

  1. Copier le contenu de la cellule 123 et le placer dans la cellule 456 ;
  2. Ajouter le contenu de la cellule 321 à celui de la cellule 654 ;
  3. Placer le résultat dans la cellule 777 ;
  4. Si le contenu de la cellule 999 vaut 0, exécuter l’instruction à la cellule 345.

La plupart des instructions se composent de deux zones : l’une indiquant quoi faire, nommée code opération, et l’autre indiquant où le faire, nommée opérande.

Au sein de l’ordinateur, les instructions correspondent à des codes — le code pour une copie étant par exemple 001. L’ensemble d’instructions qu’un ordinateur supporte se nomme son langage machine, langage qui est une succession de chiffres binaires, car les instructions et données qui sont comprises par le processeur (CPU) sont constituées uniquement de 0 (zéro) et de 1 (un) :

  • 0 = le courant électrique ne passe pas ;
  • 1 = le courant électrique passe.

En général, ce type de langage n’est pas utilisé car on lui préfère ce que l’on appelle un langage de haut niveau qui est ensuite transformé en langage binaire par un programme spécial (interpréteur ou compilateur selon les besoins). Les programmes ainsi obtenus sont des programmes compilés compréhensibles par l’ordinateur dans son langage natif. Certains langages de programmation, comme l’assembleur sont dits langages de bas niveau car les instructions qu’ils utilisent sont très proches de celles de l’ordinateur. Les programmes écrits dans ces langages sont ainsi très dépendants de la plate-forme pour laquelle ils ont été développés. Le langage C, beaucoup plus facile à relire que l’assembleur, permet de produire plus facilement des programmes. Pour cette raison, on l’a vu de plus en plus utilisé à mesure que les coûts du matériel diminuaient et que les salaires horaires des programmeurs augmentaient.