Architectures matérielles

Categories:Leçons

I – Comment fonctionne une machine de Turing ?

Pour refaire des tests et mieux comprendre : https://interstices.info/comment-fonctionne-une-machine-de-turing/

Pour expliquer la notion de « procédure mécanique » (= algorithme), Alan Turing invente une machine abstraite, la plus élémentaire possible, destinée à mettre en œuvre ces mécanismes de calcul, numériques ou symboliques comme le font les ordinateurs. Or, ce dernier n’existait pas encore lorsqu’Alan Turing décrit sa machine dans un article en 1936.

La machine imaginée par Turing comporte un ruban divisé en cases, dans lesquelles elle peut écrire des symboles. La machine ne peut lire qu’une seule case à la fois, de même elle écrit dans une seule case et décale le ruban d’une seule case vers la gauche ou vers la droite. Les symboles sont en nombre fini. Pour que sa machine fonctionne comme une machine à calculer en binaire, Turing envisage le cas particulier où les symboles utilisés sont 0 et 1.

–> Il existe donc six « programmes » différents :

–> Tous ces programmes sont rudimentaires mais très instructifs : ils montrent que l’on peut faire des opérations numériques (les 0 et les 1 correspondent au codage binaire de nombres) ou symboliques (les 0 ou les 1 codent des symboles).

En combinant ces briques de base, ce sont tous les algorithmes qui peuvent s’implémenter.

Par exemple, si l’on ajoute plusieurs fois 1, il est possible d’additionner plusieurs nombres ;

puis en combinant les additions faire des multiplications, et par extension tous les calculs numériques.

Grâce aux travaux de Turing Von Neumann a défini en 1944 l’architecture d’un ordinateur.

II – Le modèle d’architecture de von Neumann

Peu connu du grand public, le mathématicien hongrois John von Neumann (1903-1957) a pourtant élaboré des théories dont les applications ont définitivement changé le cours de l’humanité, de la bombe atomique à la révolution numérique. Pour en savoir plus : https://www.youtube.com/watch?v=JKG2yhTrndw&t=4s

_____________________________________________________________________________________

Un emplacement de mémoire peut contenir indifféremment des instructions et des données, et une conséquence majeure (dont toute la portée n’avait probablement pas été perçue à l’époque) est qu’un programme peut être traité comme une donnée par d’autres programmes. Cette idée, présente en germe dans la machine de Turing, trouvait ici sa concrétisation.

Plus de soixante ans après son invention, le modèle d’architecture de von Neumann régit toujours l’architecture des ordinateurs. Par rapport au schéma initial, on peut noter deux évolutions :

  • Les entrées-sorties, initialement commandées par l’unité centrale, sont depuis le début des années 1960 sous le contrôle de processeurs autonomes (canaux d’entrée-sortie et mécanismes assimilés). Associée à la multiprogrammation (partage de la mémoire entre plusieurs programmes), cette organisation a notamment permis le développement des systèmes en temps partagé.
  • Les ordinateurs comportent maintenant des processeurs multiples, qu’il s’agisse d’unités séparées ou de « cœurs » multiples à l’intérieur d’une même puce. Cette organisation permet d’atteindre une puissance globale de calcul élevée sans augmenter la vitesse des processeurs individuels, limitée par les capacités d’évacuation de la chaleur dans des circuits de plus en plus denses.

Les conséquences de ces deux évolutions :

  • mettre la mémoire, plutôt que l’unité centrale, au centre de l’ordinateur
  • augmenter le degré de parallélisme dans le traitement et la circulation de l’information.

Mais elles ne remettent pas en cause les principes de base que sont la séparation entre traitement et commande et la notion de programme enregistré.

III – Le transistor

Le transistor a été inventé en 1947 par les Américains John Bardeen, William Shockley et Walter Brattain, chercheurs des Laboratoires Bell. Ces chercheurs ont reçu pour cette invention le prix Nobel de physique en 1956.

Ainsi, qu’est-ce qu’un transistor ?

  • Le transistor est un composant électrique, notamment dans les microprocesseurs
  • c’est donc un interrupteur qui laisse passer ou non l’électricité (1 ou 0) –> langage binaire
  • la puissance d’un microprocesseur s’exprime en nombre d’opérations par seconde, c’est pourquoi le nombre de transistors dans un microprocesseur détermine sa puissance

–> Le transistor est l’élément de base des circuits logiques.

Activité : Une porte logique avec des transistors

IV – La loi de Moore

Toutes les opérations logiques sont réalisées avec des circuits logiques.

La loi de Moore : https://www.journaldunet.fr/web-tech/dictionnaire-du-webmastering/1203331-loi-de-moore-definition-traduction/

En 1965, celui qui fut l’un des cofondateurs de la société Intel trace une courbe d’évolution de la taille et du prix des microprocesseurs. Il s’aperçoit alors que à coût égal, leur complexité doublait tous les ans.

En 1975, il précise que c’est le nombre de transistors qui double tous les deux ans.

Il a prédit que cette croissance allait se poursuivre à ce rythme jusqu’en 2015, où elle serait limitée par la taille des atomes.

L’Histoire lui a donné raison puisque entre 1971 et 2001 la densité des transistors a effectivement doublé 1,96 fois par an. 

Depuis 2014, on commence à voir le ralentissement annoncé dans les ajustements de la loi de Moore en 1997.

Les acteurs du secteur informatique l’utilisent encore pour anticiper la puissance des ordinateurs du futur. Toutefois, les évolutions n’arrivent plus à suivre la même cadence, et sont désormais plus lentes.

Le processeur

Qu’est ce qu’un processeur ?

  • les processeurs représentent tout d’abord les cœurs des ordinateurs que l’on a aujourd’hui
  • ils évoluent rapidement et de façon importante au fil du temps
  • –> un processeur est donc un circuit électronique universel
  • son but : exécuter tout algorithme (avec calculs, expressions logiques, stockage de données pour exécuter un algorithme)
  • on a donc besoin de : quelques portes logiques élémentaires

V – Programmation en assembleur

Il est difficile pour un humain d’écrire directement en langage machine (binaire). On utilise un langage plus lisible : l’assembleur.

Dans ce qui suit nous allons programmer en assembleur grâce à un simulateur.

un exemple de code en assembleur simplifié y86 :  irmovl 9,%eax

Résultat de l’assemblage en langage machine :1100001111000000001001000000000000000000000000

Cette écriture présente bien des inconvénients pour un humain et justifie l’utilisation de l’assembleur qui remplace les séquences de bits par des symboles plus faciles à retenir.

Chaque processeur a son jeu d’instructions et ne peut exécuter que le langage machine.L’assembleur chargé d’obtenir ce langage machine est donc propre à chaque  processeur (ou famille de processeur).

Dans les activités qui suivent nous allons utiliser le simulateur y86:

Code 1 :

Code 2 :

Addition

Soustraction

Notez et justifiez la valeur hexadécimale stockée dans %ebx :

Le résultat de la soustraction donne : 0xf f f f f f f d ou f f f f f f f d(16)

Ce nombre correspond  il à -3 ?

première méthode: complément à 2

f f f f f f f d(16)

Écriture en binaire

1111 1111 1111 1111 1111 1111 1111 1101

Inversion des bits

0000 0000 0000 0000 0000 0000 0000 0010

Ajout de 1

0000 0000 0000 0000 0000 0000 0000 0011

3 en décimal !

Deuxième méthode : on ajoute 3

1111 1111 1111 1111 1111 1111 1111 1101

0000 0000 0000 0000 0000 0000 0000 0011

___________________________________________________

0000 0000 0000 0000 0000 0000 0000 0000

la somme donne bien 0

Code 3 :

0030 = 48

Projet 1 :

Python :

a=1000
b=0
while a!=0:
           b=b+a
           a=a-1
#affichage du résultat en hexadécimal
print(hex(b))

0x7a314=500500

vérification

(1001*1000)/2=500500

Assembleur :

On retrouve bien le même résultat.

Projet 2 :

La logique combinatoire présente des sorties qui, à un instant donné, ne dépendent que des valeurs présentes sur les entrées. La logique séquentielle prend en considération les conditions antérieures à l’instant donné, ce qui permet de réaliser des dispositifs à mémoire.

Les bascules sont de manière générale des bistables, ce qui permet d’obtenir des niveaux logiques stables sur leur sorties (soit « 1 » ou « 0 »). Elles réalisent de ce fait une fonction mémoire temporaire permettant ainsi de stocker des informations. Ces dernières pouvant être aussi annulées à tout moment.

La sortie Q suit l’information présente sur l’entrée D tant que l’entrée C est au niveau logique haut. Quand l’entrée d’horloge (C) est à l’état logique »0″, la sortie Q garde en mémoire le niveau logique que possédait D au moment de la transition de C de « 1 » vers « 0  » et ceci jusqu’à ce que C prenne à nouveau la valeur « 1

3 réponses

  1. googletest dit :

    Howdy! Would you mind if I share your blog with my myspace group?

    There’s a lot of folks that I think would really appreciate your content.
    Please let me know. Cheers

    • Anna dit :

      Hi! This was just a school project, I basically just rewrote the lesson the teacher gave us so it’s not technically my material. However I wouldn’t mind if you were to share it

  2. Hockey Jargon dit :

    Someone essentially help to make seriously posts I’d state.

    This is the very first time I frequented your web page and so far?
    I amazed with the research you made to create this particular post
    amazing. Magnificent job!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *