Introduction
L’architecture de l’ordinateur est le domaine qui s’intéresse aux différents composants internes des machines,
en explicitant leur construction et leurs interactions. Un ordinateur est un outil complexe qui peut effectuer
des tâches variées, et dont les performances globales dépendent des spécifications de tous ses éléments.
Comprendre son architecture permet de savoir dans quelle mesure les caractéristiques propres à chaque
composant influencent la réactivité de la machine en fonction de son usage : pourquoi ajouter de la mémoire
accélère-t-il l’ordinateur ? Pourquoi le temps d’accès d’un disque dur n’est-il qu’un des paramètres permettant
de mesurer son efficacité ? Comment les processeurs font-ils pour aller toujours plus vite ?
L’utilité de ce domaine de connaissances est encore plus évidente pour les programmeurs qui développent des
applications, de l’étudiant s’amusant sur son matériel personnel au professionnel écrivant des lignes de code
au sein d’une équipe. La programmation dans des langages évolués est théoriquement indépendante des
contraintes architecturales, mais dans les faits, celles-ci ont un impact sur l’écriture, la correction et les
performances des programmes, via, par exemple, l’utilisation des pointeurs, le choix de la taille des variables
ou de l’ordre des boucles. Négliger ou ignorer la structure de l’ordinateur amènera tôt ou tard à des
déconvenues et à des erreurs.
Cet ouvrage se veut une présentation générale de l’architecture de l’ordinateur et de ses éléments, associant
les descriptions techniques au logiciel, qu’il soit système d’exploitation ou application personnelle. Après
avoir exposé les briques de base que sont la représentation des nombres et les circuits logiques, il entreprend
de décortiquer la pièce maîtresse de l’ordinateur, à savoir le processeur, ainsi que son langage de
programmation spécifique, en incluant une illustration des architectures avancées des processeurs actuels.
Mais un processeur isolé serait inutilisable sans l’ensemble des composants qui le soutiennent pour assurer le
bon déroulement des programmes. Cet ouvrage décrit le système de stockage de l’information, depuis la
mémoire cache jusqu’aux disques durs, en passant par la mémoire principale et la mémoire virtuelle. Pour
finir, il présente le mécanisme des entrées/sorties, lié à la communication de l’ordinateur avec son
environnement, aussi bien du point de vue matériel (contrôleur) que logiciel (pilote).
Cet ouvrage est inspiré d’un enseignement délivré depuis de nombreuses années à des étudiants en
informatique dans des formations professionnelles. Il a pour ambition de faire comprendre les mécanismes
internes de l’ordinateur et leurs implications sur le développement des logiciels aux élèves de licence
scientifique, et de façon plus générale de faire découvrir l’architecture des machines à tous ceux qui
s’intéressent à ce sujet. À la fin de chaque chapitre, des exercices corrigés permettent d’appliquer directement
les notions présentées, à travers l’étude ou l’écriture de programmes, des applications numériques et des
constructions de circuits.
L’auteur remercie chaleureusement les relecteurs, Daniel Chillet et Stéphane Nicolet, qui, par leurs conseils,
remarques et documentation, ont largement amélioré les essais préliminaires. Merci à Karen, Kathy et Maude
qui ont contribué, de mille et une manières, à l’écriture de ce livre.
LE PLAN
L’architecture des ordinateurs, les descriptions techniques et les interactions avec le logiciel sont exposées
dans les huit chapitres de la façon suivante :
Chapitre 1 : Représentation des nombres.
Ce chapitre est centré sur la représentation informatique des nombres usuels et des caractères. Il montre
comment ceux-ci sont stockés en mémoire (et l’impact sur le logiciel) et les limites de leur représentation
(valeurs admises, valeurs maximales).
Chapitre 2 : Circuits logiques.
Ce chapitre présente les bases de la logique booléenne et son implémentation sous forme de circuits logiques,
des premières portes logiques aux circuits élémentaires présents dans tous les circuits intégrés électroniques.