"Si vous souhaitez y voir plus clair dans la multitude des processeurs, les choix de conception des jeux d'instructions RISC et CISC, les histoires de hiérarchie de mémoire, et les benchmarks en
général, alors je vous conseille de vous plonger dans la bible du domaine par les inventeurs du RISC et du RAID : «Computer Architecture : A Quantitative Approach». "
Computer Architecture : A Quantitative Approach | |
Auteur | John L. Hennessy, David Goldberg, David A. Patterson |
Editeur | Morgan Kaufmann Publishers |
ISBN | 1-55860-329-8 |
Pages | 760 |
Prix | $83.95 |
Rédacteur | Laurent Guerby |
<!-- Ceci est a mettre comme texte de la news annoncant la revue<br/> du livre -->
Si vous souhaitez y voir plus clair dans la multitude des
processeurs, les choix de conception des jeux d'instructions RISC et
CISC, les histoires de hiérarchie de mémoire, et les benchmarks en
général, alors je vous conseille de vous plonger dans la bible du
domaine par les inventeurs du RISC et du RAID : «Computer Architecture
: A Quantitative Approach».
<!-- Fin du texte de la news -->
Un gros bouquin, pour un vaste sujet :
l'architecture des ordinateurs. Tout d'abord, les auteurs ne sont pas
des inconnus du domaine :
- David A. Patterson a travaillé a l'Université de Californie à
Berkeley sur le projet «RISC 1», couvrant la conception et
l'implémentation de la première architecture RISC, et au passage
inventant la nomenclature RISC / CISC maintenant familière à tous.
Ces travaux ont grandement influencé la conception du processeur SPARC
de SUN Microsystems. Il a aussi été à la tête du projet RAID, bien
connu de vos serveurs d'espace disque haute performance.
- John L. Hennessy est co-fondateur de la société MIPS qui produit la
famille de processeurs du même nom, utilisé pour les stations SGI,
diverses consoles de jeux et «PDA».
La deuxième édition de ce classique propose au menu une traversée
complète du domaine de l'architecture des ordinateurs, des jeux
d'instructions d'un processeur aux réseaux de machines et
multiprocesseurs, en passant par les caches, les «pipelines» et le
fameux «ILP» (Instruction-Level Parallelism) nécessaire pour atteindre
les plus grandes performances possibles. L'ouvrage parle pricipalement
des architectures RISC, mais une section complète parle de notre CISC
favori : le x86.
Dans l'avant-propos, Gordon Bell analyse les changements entre la
première et seconde édition rendus nécessaires par la rapide évolution
du secteur, et se dit intéressé par ce dont la prochaine édition -
2002 ? - pourra bien parler ;-). La préface fait de même mais du point
de vue des auteurs.
La première partie parle des fondements du domaine, des évolutions de
la technologie et des coûts, de la mesure de la performance et des
hierarchies de mémoire. On retrouve les inévitables courbes
exponentielles décrivant la performance des divers composants d'un
ordinateur moderne : processeur, mémoire et disque. Les auteurs
analysent leurs évolutions relatives en coût / performance et l'impact
de ces données sur la conception des machines présentes et à venir. Le
reste du chapitre met en place les équations fondamentales qui
permettent de mesurer la performance d'une machine au niveau du
processeur mais aussi de la mémoire. Les diverses manières de
structurer les «benchmarks» sont décrites.
Les principes sous-jacents à la conception du jeu d'instruction d'un
processeur, sans aucun doute le point central de toute architecture et
la plus visible pour le programmeur ou le concepteur de compilateur,
sont décrits et analysés par les parties 2 à 4 de l'ouvrage.
La deuxième partie présente les bases, classification des jeux
d'instructions, les modes d'addressage de la mémoire, les opérations
de calcul. Un chapitre traite de l'impact des choix faits par le
concepteur du jeu d'instruction processeur sur la mise au point des
compilateurs, la performance d'une architecture se mesurant toujours à
travers le couple processeur / compilateur. Enfin, un processeur RISC
virtuel est décrit : le DLX, il servira de référence tout au long de
l'ouvrage.
La troisièmes partie traite des fameux «pipelines» présents dans tous
les processeurs modernes pour des raisons de performances. Bien sûr,
la conception d'un jeu d'instruction n'est pas neutre sur
l'implémentation efficace du «pipelining» dans un processeur. Des
extensions au processeur DLX liées aux «pipelines» sont décrites, et
un chapitre est consacré à l'étude du «pipeline» du processeur MIPS
R4000.
La dernière partie consacrée au jeu d'instruction lui-même, la
quatrième partie décrit les aspects avancés du «pipelining», en
particulier l'impact des instructions de sauts et les techniques de
prédictions, et aussi de comment en faire plus par cycle d'horloge via
l'exécution parallèle de plusieurs instructions en même temps dans le
processeur. L'architecture du processeur PowerPC 620 sert
d'illustration pour les sujets abordés.
Un processeur n'est rien sans sa mémoire, et la cinquième partie
couvre le sujet, des caches dits de niveau 1 intégrés aux processeurs
jusqu'à la mémoire virtuelle. L'impact du type du cache (direct,
associatif, ...) et de la taille des «lignes» est analysé
quantitativement, les techniques d'optimisations liées aux caches sont
aussi décrites. Le processeur illustrant cette partie est l'alpha AXP
21064.
La sixième partie traite du stockage de données de A à Z : les bus
d'entrée sorties, les disques, le RAID, et les intéractions entre le
système d'exploitation et les périphériques. La performance des
systèmes de fichiers de type Unix est étudiée comme cas pratique.
Toutes les machines modernes sont en réseau, et la septième partie est
dédiée à leurs possibilités. Les topologies et technologies réseaux
classiques sont passées en revue, ainsi que les différentes mesures de
leur performance. Un petit réseau ATM est enfin étudié.
À tout seigneur, tout honneur, la dernière et huitième partie traite
des machines multi-processeurs. Les problèmes liés à la conception des
machines comprenant plusieurs processeurs sont traités en détail :
modèles de cohérence de la mémoire, latence et bande passante,
synchronisation. Les auteurs montrent bien qu'un type d'architecture
sera performant pour certaines classes d'applications et pas pour
d'autres. La machine SGI Challenge est enfin étudiée.
Le dernier quart du livre est divisé en cinq appendices. L'appendice
A, par David Golberg, décrit l'arithmétique des ordinateurs, entière
et flottante (IEEE 754 en particulier), avec quelques astuces pour
aller plus vite. Pour ceux qui ne le connaissent pas, David Golberg
est l'auteur de l'article «What Every Scientist Should Know About
Floating-Point Arithmetic», disponible à l'adresse
suivante
L'appendice B décrit les processeurs vectoriels, et l'impact des
instructions vectorielles sur les programmes réèls. L'ouvrage montre
ici un peu de son âge, car on ne trouve rien sur la multitude
d'instructions «multimédia» qui ont été récemment ajoutées à tous les
processeurs, mais malheureusement après la publication de cette
édition. Sans doute pour la prochaine ;-).
L'appendice C couvre tous les jeux d'instruction des processeurs DLX,
MIPS, SPARC, PowerPC et PA-RISC, en mettant l'accent sur les
caractéristiques uniques de chacuns de ces processeurs dans la grande
famille RISC.
L'appendice D est un tribut à l'architecture CISC du x86, qui est
examinée en détail.
Enfin, l'appendice E étudie les détails de certains protocoles de
cohérence de mémoire partagée.
Force est de constater que les auteurs, tout en étant des pionniers
dans leur domaine, savent aussi rendre accessible et intéressante une
grande masse de connaissances. Malgré sa taille impressionnante, cet
ouvrage m'est apparu passionnant de bout en bout, et il est difficile
de le lacher un fois commencé. L'iconographie abondante et de qualité
n'est sans doute pas étrangère à cette impression.
Tout d'abord, le titre du livre n'est pas usurpé, tous les chapitres
sont émaillés de données chiffrées et de leur analyse, comme par
exemple des décomptes d'instruction exécutées dans les programmes de
la suite SPEC. Ces chiffres et des petits calculs sur le coin de la
table permettent d'y voir plus clair dans la masse de chiffres et de
benchmarks dont nous abreuvent les fabriquants pour démontrer la
supériorité de leur matériel. Des chapitre «Fallacies and Pitfalls»
(«pièges et illusions») chassent les idées fausses qui peuvent
couter cher. Le texte n'est jamais séparé de la réalité grace à
l'abondance des références à des architectures et produits existants.
Chaque section vient avec des exercices (les solutions sont
disponibles dans un ouvrage séparé), une conclusion regroupant les
concepts à retenir et une bibliographie. Enfin, souvent signe de
qualité dans un ouvrage - et celui-ci ne fait pas exception, un petit
historique rappelle les inventeurs et aléas de chaque domaine.
Même si vous ne concevrez jamais de jeu d'instruction, l'approche
quantitative des problèmes de performance presentée s'applique aussi
au logiciel. La loi d'Amdahl, décrite et appliquée tout au long de
l'ouvrage, s'applique bien au-delà du seul matériel. La loi d'Amdahl
par l'exemple : vous construisez une liaison routière de 800 km Paris
- Toulouse. La vitesse moyenne est de 100 km/h, ce qui donne un trajet
de 8 heures. Une nouvelle technologie révolutionnaire vous permet
d'aller à 1000 fois plus vite, mais elle ne s'appliquer que sur les
premiers 200 km. Au final : 0h pour faire 200 km, puis 6h pour les 600
restant, soit un gain sur le voyage d'environ 1.3, on est loin des
1000 ! L'application au logiciel est évidente, c'est pas la peine de
se fatiguer à optimiser d'un facteur 10 une section de code qui ne
représente que 5% du temps d'exécution (le gain total ne peut être
supérieur a 5%), vous avez surement quelque chose de mieux à faire
;-).
Table des matières de l'édition Anglaise.
- 1. Fundamentals of Computer Design
- 2. Instruction Set Principles and Examples
- 3. Pipelining
- 4. Advanced Pipelining and Instruction-Level Parallelism
- 5. Memory-Hierarchy Design
- 6. Storage Systems
- 7. Interconnection Networks
- 8. Multiprocessors
- Appendix A: Computer Arithmetic
- Appendix B: Vector Processors
- Appendix C: Survey of RISC Architectures
- Appendix D: An alternative to RISC: The Intel 80x86
- Appendix E: Implementing Coherence Protocols
Références
les ressources associées à cet ouvrage
Les errata du livre
- La version Française :
What Every Scientist Should Know About Floating-Point Arithmetic
# Un excellent livre
Posté par reno . Évalué à 1.
Ceci dit, c'est un gros bouquin (normal le sujet est vaste) qui, bien que tres clair, necessite de la reflexion.. (normal aussi le sujet est tres complique).
Je ne me souviens pas s'il parle des architecture SMT (plusieurs thread en meme temps avec le meme CPU) qui semble etre la prochaine tendance, je ne crois pas.
Le seul danger, c'est que apres avoir lu le livre vous etes:
1) completement epate que les 80x86 ai reussi a atteindre des niveaux de performances pareilles avec un jeu d'instruction aussi pourri en restant compatible.
2) completement degoute qu'on soit bloque avec les 80x86 pour encore pas mal d'annees.
[^] # Re: Un excellent livre
Posté par Olivier Jeannet . Évalué à 1.
J'avais une URL avec des articles qui décrivaient comment Intel, à coup de vaporware sur son futur Pentium, avait causé pas mal de tort à Motorola et son futur PowerPC, vers 93-94. Motorola a sorti ses processeurs comme prévu dans les plannings, alors qu'Intel a pris beaucoup de retard, tout en promettant toujours le super truc qui allait arriver.
# Version Française!
Posté par NebuchadnezzaR . Évalué à 1.
[^] # Re: Version Française!
Posté par Anonyme . Évalué à 0.
Le Monde En Tique </a>
[^] # Re: Version Française!
Posté par NebuchadnezzaR . Évalué à 1.
Y'aurait-il des suggestions sur tel ou tel livre parlant de l'architecture des ordi???
[^] # Re: Version Française!
Posté par Anonyme . Évalué à 0.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.