logo Prof-TC.png
Des cours, des TP, des exercices corrigés pour les élèves du lycée
Recherche
SECONDE - PC
SCIENCES PREMIERE
SCIENCES TERMINALE
PREMIERE PC
SCIENCES & LABO
ANCIENNES TS
KHOLLES MPSI
Modèle d'architecture séquentielle
 

Machine de Turing
 
Turing est né le 23 juin 1912. C'est un scientifique Britannique considéré aujourd'hui comme le "père de l'informatique". En 1936, il rédige la "Théorie des nombres calculables, suivie d’une application au problème de la décision ». Son idée: une machine peut calculer différentes tâches toute seule si on lui indique précisément comment procéder. La "machine de Turing" est une machine abstraite. C'est un ruban infini sur lequel se déplace une tête de lecture qui peut lire, écriture se déplacer vers la droite ou la gauche et agir en fonction de ce qui est lu. La tête de lecture possède un nombre fini d'états et réagit en fonction de son état à ce qui est lu. C'est ce qui permet de programmer la machine de Turing.

Plus tard, en 1950, une fois les premiers ordinateurs construits, Turing invente le "test de Turing", un test d'intelligence artificielle. Le principe du test: si un humain et un ordinateur communiquent, un juge humain n'est pas capable de discerner l'homme de la machine. Ce test est inspiré d'un jeu d'imitations où un homme et une femme communiquent dans des pièces séparées et les personnes qui conversent avec eux doivent deviner qui est la femme alors que l'homme essai de se faire passer pour une femme.

Un exemple simple de programme sur la machine de Turing. Inverser indéfiniment les 0 et les 1 d'un nombre. La machine démarre à gauche du nombre. Etat 1: elle va vers la droite et démarre le programme en se plaçant en état 2. En état 2, la machine remplace les 0 par des 1 et inversement. Si la case est vide cela veut dire qu'il faut repartir à l'envers, c'est l'état 3, etc....

Von Neumann
 
En 1936, Alan Turing imagine une machine universelle capable de simuler n'importe quelle machine de Turing. La machine universelle ne peut réussir cela qu'en lisant sur son propre ruban la description de la machine à simuler et ses données d'entrées.

On peut considérer que cette machine virtuelle est l'origine de l'ordinateur tel qu'on le connait aujourd'hui. C'est John Von Neuman qui va donner concrètement naissance à l'ordinateur en décrivant un modèle pour l'ordinateur: l'architecture de Von Neumann.

L'idée est de stocker dans un même endroit le programme ET les données: la mémoire. Ce qui n'était pas le cas avec les machines construites entre 1937 et 1945 puisqu'elles nécessitaient d'être programmées en câblant un tableau de connexion (L'Eniac par exemple).

Les premières machines à programme enregistré sont construites en Angleterre en 1949: L'EDASAC (eletroniqc Delay Storage Automatic Calculator) et le Mark1.

 
Voici le schéma, toujours d'actualité, de l'architecture de Von Neumann:
 
VonNeumann.png
- Le MBR (Memory Buffer Register) contient les données/instruction à être stockées/lu on l'appelle aussi MDR (Memory Data Register).
- Le MAR (Memory Adress Register): registre contenant l'adresse de la mémoire où sera stocké la donnée.)

Le problème avec ce système c'est que le programme et les données ne sont pas séparées. Et de ce fait, un programme peut très bien effacer son propre programme!

L'UAL (Unité Arithmétique et Logique) (ou ALU en anglais) et l'unité de commande sont à l'intérieur du processeur et communiquent avec la mémoire par trois bus:
- Le bus d'adresse.
- Le bus de contrôle.
- Le bus de données.

L'unité de contrôle (appelé aussi séquenceur, unité de commande) gère le processeur. Elle décode les instructions, choisit les registres (petites mémoires internes 64bits sur un pc 64 bits) à utiliser et assure la communication avec les entrée-sortie, la mémoire. En particulier le registre du CO (Compteur Ordinal) et le RI (Registre d'Instruction) qui contiennent respectivement l'adresse mémoire de la prochaine instruction et l'instruction en cours de traitement. Elle utilise aussi les registres ACC (ACCumulateur) qui stockent les opérandes intermédiaires et le CC (Code Condition) pour les instructions conditionnelles qui vont donc impliquer un saut dans la mémoire en fonction de la condition.

L'UAL est la partie qui effectue les calculs. A minima, sur les entiers, elle effectue les opérations arithmétiques de base, les opérations logiques (ou, et, complément à 1 etc...), les comparaisons. Certaines UAL sont spécialisées et permettent de faire des calculs à virgule flottante, d'autres encore plus spécialisées implémentent des fonctions mathématiques ou calculs vectoriels. Il peut y avoir plusieurs UAL dans un processeur et peuvent alors fonctionner en parallèle.

Voici ci-dessous ce qu'il se passe indéfiniment dans votre ordinateur.

 
Fetch.png
 

- L'UAL va soit écrire le résultat dans un registre, dans la mémoire principale, ou vers un autre périphérique externe. L'ALU peut aussi modifier le CO s'il a traité une condition.
- Il lance un "cycle fetch" pour chercher l'instruction à l'adresse demandée et se place le CO à la prochaine instruction.

- Ensuite il décode l'instruction, l'envoie à l'ALU qui fait soit des calculs, soit des comparaisons.
- L'ALU renvoie soit une nouvelle adresse au CO, soit des résultats dans un type de sortie (mémoire, périphérique externe,...)

 

La fréquence du processeur (aujourd'hui 3Ghz en moyenne) donne un signal régulier pour synchroniser le fonctionnement du processeur. A chaque impulsion, une étape est faite (il y en a 5, on appelle cet ensemble pipelines). Une astuce utilisée depuis les processeurs de type "486" pour gagner en vitesse et de ne pas attendre la fin d'un cycle pour démarrer le suivant! Cela n'est pas aussi évident qu'il n'y parait puisque l'on peut avoir un saut en fin de cycle !

Une autre alternative apparue sur le pentium 4 est l'hyperthreading qui simule deux processeurs en effectuant des tâches en parallèle.

On comprend donc que la machine ne sait pas faire grand-chose à l'allumage! Additionner, comparer, mettre en mémoire et lire en mémoire...avec ces quelques instructions, on va pouvoir coder le bios, puis un système d'exploitation et des logiciels!

Ce langage s'appelle le langage machine. Les instructions vont se suivre les unes après les autres, d'où le nom d'architecture séquentielle.

Pour comprendre cela, on pourra utiliser le programme qui simule l'architecture de Von Neumann à l'adresse: http://www.peterhigginson.co.uk/AQA/.

Structure d'un ordinateur
 
Que ce soit, un téléphone, un ordinateur ou même aujourd'hui une télévision. Tous respectent l'architecture de Von Neumann. Cela se matérialise par une carte mère qui contient le processeur, une mémoire ram pour stocker les programmes en cours d'exécution, et des slots pour ajouter des extensions: carte son, carte vidéo, disques durs (connecté par câble et non sur les slots).

Il ne faut pas confondre les différents types de mémoires!

La mémoire ram de type DDR, mémoire dynamique, rafraichie régulièrement, très rapide mais volatile. Les données disparaissent lorsque l'ordinateur est éteint, c'est une mémoire vive.

Le disque dur composé de plusieurs plateaux circulaires en aluminium empilés sur lesquels une couche magnétique est déposée. Une tête de lecture s’occupe de parcourir les disques afin de lire ou écrire magnétiquement des informations. Les données restent en mémoire même sans alimentation, c'est une mémoire morte.

Mais où se trouve la mémoire qui contient le programme qui fait fonctionner la machine? Le BIOS (Basic Input Output System) et maintenant l'UEFI (Unified Extensible Firmware Interface) est le premier programme (microprogramme) qui se lance lorsque l'on allume l'ordinateur. Il est stocké dans une mémoire flash, mémoire morte de type ROM, plus précisement aujourd'hui EEPROM (Electrically Erasable Programmable Read Only Memory) de la carte mère. LE Bios va entre autres lire le MBR (Master Boot Record) pour lancer votre système d'exploitation (windows, linux...).

Monoprocesseur - Multiprocesseur
 
Une architecture monoprocesseur est une architecture ne comprenant qu'un seul processeur. De 1973 à 2004, la loi de Moore a continué d'être vérifiée par l'augmentation de la fréquence des processeurs. Le premier processeur produit par Gordon Moore était cadencé à 0,74 Mhz et 2300 transistors, en 1995 le pentium pro est à 150/200 Mhz et 5,5 millions de transistors. En 2003 le pentium M a une centaine de millions de transistors et tourne à 2,2Ghz.

L'augmentation de la fréquence devenant techniquement de plus en plus difficile (problème de surchauffe), une nouvelle idée permet de poursuivre la loi de Moore: mettre plus de processeurs dans un seul PC.

Quels sont les problèmes qui apparaissent avec l'augmentation de la fréquence et la multiplication du nombre de processeurs? La mémoire avec qui le processeur est en communication constante! La fréquence des processeurs est plus rapide que l'accès à la mémoire, c'est pour cela que l'on utilise la mémoire cache qui permet de stocker des résultats que l'on espère réutiliser plus vite. La multiplication des coeurs pose le problème de la synchronisation de la mémoire! Il existe plusieurs stratégies pour répartir la mémoire cache de chaque processeur. Soit le cache est commun à tous les processeurs et leur contenu est donc à jour, soit chaque processeur à un cache dédié. Le cache partagé peut entrainer des conflits entre différents programmes et le temps d'accès est plus long.
Aujourd'hui la solution retenue est l'architecture hybride! Le schéma ci-dessous illustre cette solution et présente par la même occasion le cache de niveau 1 et le cache de niveau 2.
 
Caches.png

 

Date de création : 07/03/2021 13:40
Dernière modification : 07/03/2021 13:40
Catégorie : INFORMATIQUE - Architecture
Page lue 1272 fois
Précédent  
  Suivant

SECONDE - SNT
PREMIERE NSI
PYTHON - ARDUINO
SCIENCES
INFORMATIQUE