Circuits #8 - L'architecture Von Neumann
Durée: 11m25s
Date de sortie: 22/01/2025
Tout simplement l'architecture à la base de notre informatique moderne, inventée en 1945, par John Von Neumann !
Salut et bienvenue dans ce nouvel épisode du podcast de Code Garage.
Je m'appelle Nicolas Bondin-Bernard et aujourd'hui on va partir sur un nouvel épisode de notre
série « Circu » on va aborder un thème qui est un petit peu plus théorique que ce
qu'on fait d'habitude dans cette série mais en fait c'est un peu un passage obligatoire,
un préambule pour la suite de la série les prochains épisodes et donc aujourd'hui on
va aborder ce qu'on appelle l'architecture von Neumann.
Donc l'architecture von Neumann elle a été créée, on va dire conceptualisée par John
von Neumann en 1945 et on peut clairement dire que sans cette architecture, l'informatique
moderne telle qu'on la connaît aujourd'hui n'existerait pas ou en tout cas n'existerait
pas telle qu'elle est aujourd'hui.
Alors c'est clairement la base de tous nos ordinateurs même si son implémentation et
l'architecture a subi des changements parce qu'il y avait des contraintes et puis on
évolue de plus en plus vite donc forcément on doit trouver des alternatives à ces contraintes
mais ça reste quand même la base, simplifiée mais la base de notre informatique moderne.
Donc petit tour rapide sur la vie de von Neumann et qui est ce que c'était, c'est tout simplement
un mathématicien, physicien et informaticien.
On peut vraiment dire que c'est un géniaire prodige puisque dès son très jeune âge
il fait vraiment des trucs prodigieux mais il a été connu notamment en mathématiques,
il a contribué à plusieurs théories, la théorie des ensembles et à des théories
de logique mathématique en physique, il a travaillé sur la mécanique quantique et évidemment
en informatique pour notamment deux choses, l'architecture dont je vous ai parlé qui
est une architecture éponyme mais il a aussi participé au développement des premiers gros
ordinateurs modernes entre très gros guillemets qui s'appelaient l'Enyaak et la dernière chose
c'est quand même qu'il a participé, il a joué un rotelé dans le projet Manhattan donc que ce soit
des mathématiques aux sciences on va dire militaires entre très gros guillemets, il a vraiment
influencé notre monde moderne de manière assez spectaculaire. Alors maintenant qu'on a parlé
un petit peu de von Neumann, j'espère qu'on aura l'occasion de faire un épisode spécial pour vous
présenter un petit peu des personnages historiques des personnes qui ont bien tout simplement révolutionné
l'informatique, hommes et femmes de nos jours ou évidemment depuis un petit peu le début de l'histoire
de l'informatique, si jamais ce genre de série en podcast peut vous intéresser, n'hésitez pas à le
dire en commentaire et puis nous ça me permettra de voir un petit peu à quel point est ce que vous
attendez ça. Donc reprenons sur notre architecture von Neumann, en gros c'est une architecture qui
repose sur plusieurs éléments vraiment fondamentaux et chacun de ces éléments a une fonction précise.
Le premier gros élément c'est ce qu'on appelle l'unité centrale de traitement en anglais et en
acronyme, on parle CPU, aujourd'hui on généralise en parlant de processeurs mais voilà on va parler
d'unité centrale et donc cette unité centrale elle est divisée en deux sous composants principaux,
d'abord une unité arithmétique et logique, on parle d'Aélu, c'est elle qui va effectuer les
opérations mathématiques donc addition, soustraction etc et les opérations logiques donc la comparaison
les opérateurs boulet, etc. C'est donc à cette unité qu'on va donner deux valeurs par exemple
numériques, on va lui donner une opération, une addition par exemple et ça va être à cette unité
là, d'effectuer le calcul et de renvoyer la bonne réponse. Ensuite on a l'unité de contrôle, ça c'est
ce qui va tout simplement décoder les instructions qui va recevoir, diriger le flux de données et un
peu orchestrer les interactions entre tous les autres composants. Donc évidemment là on vous fait,
je vous fais un petit peu une vue d'ensemble de cette architecture, on ne va pas forcément trop
rentrer dans les détails pour ne pas vous perdre là sur cet épisode mais plusieurs épisodes dans
la série arriveront pour vous détailler vraiment le fonctionnement de chacun de ces composants dans
de futurs épisodes. Donc le CPU, il fonctionne lui en suivant un cycle d'instruction, donc il va
récupérer une instruction en mémoire, il va la décoder et il va l'exécuter. Ensuite on a la mémoire
principale, dans l'architecture de Von Neumann il y a une mémoire unique qui stock à la fois les
instructions, donc le code du programme et les données qui vont mettre les valeurs manipulées par le
programme. Donc là comme je vous le dis, comme ça, ça apparaît un petit peu logique à tout le monde,
c'est aujourd'hui on va plutôt parler de la rame par exemple de notre ourignateur, la mémoire vive,
mais en fait à l'époque c'est une vraie révolution puisqu'on ne fonctionne pas forcément
comme ça. Vous avez notamment des programmes qui vont plutôt être stockés, alors ça va dépendre
des machines et choses comme ça, mais sur des cartes perforées par exemple. Et la carte perforée va
devoir avoir un système mécanique qui va venir lire la carte et se servir des instructions sur
la carte ou prendre des données, etc. depuis les cartes perforées, donc il va falloir les
rentrer à la main ou en tout cas avoir un système mécanique. Et donc là on se retrouve avec un
ordinateur qui est capable de stocker à la fois le programme et en plus les données qui vont être
soit lues par le programme et utilisées, soit stockées pour être utilisé dans d'autres calculs
plus tard dans le programme. Et donc ça, d'avoir ça en une seule mémoire, c'est à la fois vraiment
une grosse évolution et en même temps c'est ce qui va poser un problème de partage d'air source
qu'on va appeler, on va parler de goulot d'étranglement puisque du coup toutes ces données là transites
par les mêmes bus de données et donc on va se retrouver avec des problèmes de performance. C'est
aussi pour ça que je vous disais que l'architecture von Neumann c'est une base et ça a été une
révolution. Maintenant l'implémentation de cette architecture a vraiment changé, il y a d'autres
aussi architectures comme l'architecture Harvard dont on ne parlera pas trop dans cet épisode mais
qui vont être des alternatives un petit peu, mais aujourd'hui pour pallier un petit peu à ces
limitations notamment au niveau de la mémoire, c'est pour ça qu'on va avoir différents types de
mémoire dans nos ordinateurs, un petit peu dans notre processeur etc. C'est par exemple on va avoir
de la mémoire cache dans notre processeur pour avoir toutes les données qui sont liées au
calcul et bien à proximité et on va avoir suffisamment d'espace pour simplement ces données là et
après toutes les autres données, tout ce qui va être géré par les systèmes d'exploitation etc.
qui va se situer dans la RAM et dont on va avoir besoin quand même régulièrement mais moins
régulièrement que ce qu'on a dans le cache. C'était un tout petit point rapide là dessus.
Et ensuite, et bien alors des fois on le voit sur des diagrammes en un élément ou des fois
sur deux éléments mais ce sont les dispositifs d'entrée sorties. Ça on en a parlé, on a fait
d'ailleurs un épisode sur les périphériques d'entrée et un épisode sur les périphériques de
sortie notamment sur les écrans, sur plein de choses et donc ça c'est ce qui va permettre
d'envoyer des données à l'ordinateur. Donc la vieille souris etc. Alors évidemment la souris est
apparue bien après avec les interfaces graphiques etc. Donc bien après la création de l'architecture
dans les années 45. Mais le concept de périphérique d'entrée et de périphérique de sortie est déjà
déjà présent à l'époque à la création de cette architecture. Alors globalement,
comment est-ce que fonctionnent un petit peu tous ces composants ensemble ? Et bien comme je l'ai
dit dans les instructions, on parle en programmation, on n'entend pas toujours le mot instruction mais
quand vous commencez à faire du bas niveau comme de l'assembleur, c'est là qu'on va retrouver
nos instructions qui vont directement demander au processeur d'effectuer des actions, des opérations,
de bouger des données d'une partie de la mémoire vers une autre ou d'une partie de la mémoire vers
un périphérique de sortie etc. Donc comment est-ce que ça fonctionne très grossièrement ?
On va avoir le CPU qui va récupérer une instruction qui est en mémoire puisqu'on l'a dit,
le programme est en mémoire. Aujourd'hui ça paraît logique mais à l'époque ça n'était pas forcément.
Et donc il va savoir où aller chercher la prochaine instruction. Ensuite l'instruction va être
décodée, analysée pour identifier quelle est l'opération à effectuer. Par exemple,
déplacer une valeur d'un endroit à un autre. Ensuite on va avoir donc l'aélu qui va
effectuer le calcul ou le transfert de données. Donc si on prend un exemple très simple d'une
addition par exemple, le CPU va décoder l'instruction, enfin plutôt les instructions. La première
instruction va lui dire, eh bien va mettre la valeur 3 à tel adresse de la mémoire. La
deuxième instruction va lui dire va mettre la valeur 4 à tel adresse de la mémoire et ensuite
et ensuite, eh bien on va demander à l'aélu d'additionner les deux chiffres qui sont à tel
adresse et tel adresse et donc additionner et retourne le résultat. Le CPU, une fois qu'il a
le résultat, va pouvoir le mettre dans un endroit de la mémoire ou bien décider de l'envoyer un
périphérique de sortie comme un écran, une enceinte, peu importe. Donc voilà très globalement
de quoi est composé l'architecture Vendureman. C'est, il faut se rendre compte que c'est vraiment
du coup une pierre angulaire de l'informatique moderne et ça a mis toutes les bases de la
programmation comme on la connaît aujourd'hui avec des programmes stockés en mémoire où les
données pour ces programmes sont également stockés en mémoire et c'est par-dessus ça que sont
venus les concepts de systèmes d'exploitation, de RAM, de cache, de tout ça sont venus bien
après et grâce aux fondations qui avaient été posées par cette architecture. J'espère que
cet épisode vous aura plus, j'espère que vous aurez appris quelque chose. Moi je vous donne rendez-vous
la semaine prochaine pour un prochain épisode du podcast et évidemment on se retrouve sur le
site sur code-garage.fr où vous pouvez retrouver tous les épisodes du podcast, tous les articles de
blog qu'on publie. On arrive très bientôt à 500 articles de blog donc c'est quand même énorme et
évidemment tous nos cours, les cours gratuits, les cours à abonnement mais je voulais vraiment vous
remercier pour cette année. Ça a été incroyable, l'engouement que ce soit dans le podcast mais
surtout sur la plateforme a vraiment été incroyable. On a littéralement doublé tous nos
chiffres par rapport à 2023 donc c'est vraiment exceptionnel. Merci à tout le monde pour votre
soutien, pour votre fidélité, un grand grand merci. Je vous donne rendez-vous la semaine prochaine,
prenez soin de vous. Salut !
Episode suivant:
Les infos glanées
Code-Garage
Découvrons ensemble des sujets passionnants autour du métier de dev et de la programmation en général !
Tags