Modern computer architecture and organization – Jim Ledin

Learn x86, ARM, and RISC-V architectures and the design of smartphones, PCs, and cloud servers

Langue: anglais

Les ordinateurs, les téléphones. Ces outils que l’on utilise quotidiennement, mais dont on ne comprend absolument pas le fonctionnement. Même après avoir étudié cinq ans l’informatique, je ne comprenais que superficiellement le fonctionnement interne d’un ordinateur, pour la simple et bonne raison que cela n’a d’intérêt pratique direct que pour la fabrication d’un ordinateur/téléphone. Mais lorsque l’on atteint une certaine expertise, il faut comprendre en profondeur son outil pour pouvoir l’exploiter au maximum de ses capacités. Lorsque vous voulez optimiser du code, comprendre comment fonctionne le matériel est évidemment un atout. Lorsque vous avez un problème à résoudre sur un produit, il est assurément mieux de comprendre son fonctionnement pour être plus efficace. C’est donc pourquoi je me suis lancé dans cette lecture en anglais, car les ressources sont bien plus abondantes et pertinentes, comme souvent dans l’informatique.

Le livre en lui-même est assez typique des éditions Packt, avec des formats assez larges et au niveau du contenu des questions-exercices à la fin de chaque chapitre. Il est noté qu’il fait 560 pages, mais le contenu en fait 380 et le reste sont les corrigés de chaque exercice. Je n’ai bien entendu pas fait les exercices, car cela demanderait beaucoup de temps, mais dans ce genre de livre ceux-ci sont généralement difficiles, nul doute que vous progresserez en conséquence à grande vitesse dans le domaine si vous vous donnez la peine de les faire. Je fais le résumé sur la première édition de 2020, mais ils ont déjà sorti une deuxième édition en 2022 qui est plus longue, 666 pages au lieu de 560.

Au niveau du contenu, on commence par l’historique, puis le fonctionnement électrique et on passe dans tous les éléments qui composent un ordinateur, le processeur, la RAM, le chipset, la carte mère, le disque dur, etc. (le fonctionnement du processeur est beaucoup traité, car central dans le fonctionnement). 

L’auteur nous présente aussi comment les données sont transférés avec le système d’entrées/sortie pour les périphériques et les différents formats existants qui sont utilisés (PCI, USB, HDMI, Wifi)

Vous allez par la suite découvrir comment fonctionne le démarrage de votre ordinateur et tout ce qui est associé (BIOS, UEFI, MBR, Bootloader). Au final, on peut dire qu’un peu tout y passe, comme le GPU (carte graphique) et les formats audio – vidéos.

Comme dit précédemment, beaucoup de choses sont centrées sur le processeur, comme le fonctionnement des process, des threads, les mutex, les sémaphores, les systèmes de cache, les niveaux de privilèges, les différents types de processeur (x86, x64) et les différentes architectures (RISK-V, ARM pour les téléphones) FPGA etc.

Il y a également des bases de programmation HDL pour celui qui voudrait se lancer dans ce monde obscur, mais sûrement passionnant.

Cela va assez loin car toute une partie est dédiée à la virtualisation, la dernière partie parle de l’avenir du secteur : processeurs spécialisés pour le machine learning, nanotubes en carbone, ordinateur quantique, etc. Vous pouvez même découvrir les bases de la programmation quantique avec ce livre.

Si tous ces mots vous paraissent obscurs, pas de panique, c’est le cas pour beaucoup de monde et c’est précisément pour cela que ce livre est fait : vous faire rentrer dans le monde de l’architecture des ordinateurs. Vous serez fasciné de découvrir qu’une puce de smartphone récent contient 14 milliards de transistors (voir plus) et du niveau de sophistication de ce qui se fait de nos jours.

Ce livre est plutôt difficile, mais c’est une lecture qui en vaut la peine. Comme il y a beaucoup de sujets, rien n’est trop approfondi, ce qui donne une très bonne vue d’ensemble de l’architecture d’un ordinateur ou d’un téléphone moderne, c’est un très bon livre d’introduction au domaine et qui donne des pistes pour explorer plus en détail chaque partie. Je n’y connaissais pas grand-chose, mais maintenant, j’ai une plutôt bonne vue d’ensemble, malgré que cela reste superficiel, je sais désormais où chercher. C’est un livre parfait pour un informaticien comme moi pour se lancer dans du bidouillage professionnel, mais ne vous attendez pas à devenir des experts du hardware juste en lisant ce livre.

L’auteur nous conseille des lectures de 5000 pages sur les architectures x86 et x64, j’en ferais peut-être un résumé en 2064 ou 2086.

C’est à lire absolument pour tout informaticien. Je conseille à tous les étudiants en informatique de lire ce livre et de faire les exercices au complet, vous me remercierez plus tard.