Modèle architecture séquentielle(Von Neumann)

Architectures matérielles et systèmes d’exploitation

Plan

Machine de Turing

Turing est né le 23 juin 1912. C'est un scientifique Britanique considéré aurjourd'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. Nous verrons un exemple plus loin.

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 j'eu d'imitations où un homme et une femme communiquent dans des piecès séparées et les personnent 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....Voici la table d'actions:

Voici un lien très interessant pour comprendre et observer une machine de Turing

Von Neuman

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 Neumann 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 cablant 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 (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.)

Notez que puisque le programme et les données ne sont pas séparées, un programme peut très bien effacer son propre programme!

L'unité arithmétique et logique (UAL 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 et 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 compteur ordinal CO et le registre d'instruction RI qui contiennent respectivement l'adresse mémoire de la prochaine instruction et l'instruction en cours de traitement. Elle utilise aussi les registre ACC accumulateur qui stocke les opérandes intermédiaires et CC le 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 ALU 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 ALU dans un processeur et peuvent alors fonctionner en parallèle.

Voici ci dessous ce qu'il se passe indéfiniment dans votre ordinateur. 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, periphérique externe,...)

La fréquence du processeur (aujourd'hui 3Ghz en moyenne soit 3 milliards de fois par secondes) 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 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. Nous verrons cela ici. Nous utiliserons le programme qui simule l'architecture de Von Neumann à l'adresse cliquer ici.

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'execution, et des slots pour ajouter des extensions: carte son, carte vidéo, disques durs (connecté par cable et non sur les slots).

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

  • La mémoire ram 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 ROM, plus précisement aujourd'hui EEPROM Electrically-Erasable Programmable Read-Only Memory) de la carte mère. LE Bios va entre autre lire le MBR (Master Boot Record) pour lancer votre système d'exploitation (windows, linux...)

Monoprocesseur et 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 trnasistors, 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 vous présente par la même occasion le cache de niveau 1 et le cache de niveau 2.

Logique booléenne

Le calcul Booléen fut développé par le mathématicien Britanique George Boole en 1854. Nous reviendrons sur les propriétés algébriques du calcul booléens plus tard. En 1938, Claude Shannon fait le lien entre l'algèbre de Boole et des composants électriques. C'est le début de l'ère de l'electronique numérique.

Nous avons déjà appris les opérateurs logiques!

Les tables de vérité décrivent les différents opérateurs logiques. Ces tables peuvent aussi être traduitent en équation et en chronogramme.La table reste le plus simple pour débuter. Ces opérateurs logiques sont représentés par des symboles dans les circuits electronique. Malheureusement deux normes de symboles cohéxistent, la norme européenne avec des rectangle (symbole IEC) et une étiquette logique, la norme américaine: symbole ANSI, très répandue, avec des formes differentes par type d'opération.

Voici les différentes portes logiques

Circuits

A partir des opérateurs logiques précedents, on peut constituer des circuits logiques. A noter que l'on peut tous les réaliser en utilisant uniquement des portes NAND !

Exercices

  1. Donner la table de vérité du circuit suivant. A quoi peut-il servir?
  2. Nous n'avons pas fait la porte non XOR. Dresser cette table.
  3. A l'aide d'une table de vérité, comparer (a. b) + (a. b) et a ⊕ b. En déduire un circuit réalisant a ⊕ b

Android

De la programmation pour pc à la programmation pour téléphone.

A finir

Pas eu le temps de tout faire.....