Quel est un bon livre pour apprendre l’architecture informatique ?


Le site Web WWW Architecture hébergé par les gourous de l'architecture informatique de l'Université du Wisconsin-Madison fournit une bonne liste de livres.

Voir la page WWW Computer Architecture


La référence [1] vous donne une introduction solide à l'architecture informatique, y compris suffisamment de détails pour mettre en œuvre un processeur MIPS 32 bits par vous-même ou avec des amis pour un devoir/projet de classe.

La référence [2] vous donne la vraie affaire, en ce qui concerne les tendances contemporaines de l'architecture informatique. Cependant, si vous couvrez le matériel dans [2] avant de saisir les bases dans [1], vous auriez d'énormes difficultés à suivre le matériel.


Donc, les références [1-2] sont généralement des manuels obligatoires pour les classes qui impliquent beaucoup de travaux pratiques via des devoirs de classe et/ou des projets. Dans un cours, j'ai dû concevoir des implémentations de multi-cycles et de pipelines pour mes projets de classe après avoir fait la conception logique pour eux pour mes devoirs de classe. De cette façon, j'ai pu construire et simuler ce que j'ai conçu, et les tester avec des programmes d'assemblage.

"Digital Design and Computer Architecture" de David Money Harris et Sarah L. Harris peut être utilisé comme substitut de référence [1].

Cependant, de nombreux cours d'architecture informatique ont tendance à éviter la conception logique, surtout pour les cours hors des États-Unis. Dans ce cas, on utilise la perspective d'un développeur de logiciels'pour enseigner l'organisation informatique.

Le livre suivant de William Stallings peut être utilisé à cette fin, "Computer Organization and Architecture : Designing for Performance". Alternativement, regardez "Essentials of computer architecture" par Douglas Comer.

Pour mieux appréhender les sujets avancés en architecture informatique, je regarderais dans des livres pour des sujets spécifiques qui vous intéressent.

Par exemple, Daniel J. Sorin's "Fault Tolerant Computer Architecture" peut vous intéresser si vous voulez examiner l'informatique tolérante aux pannes.

La référence [3] vous guide à travers la microarchitecture du processeur OpenSPARC, dont le code source (en Verilog) est disponible en tant que matériel open source en ligne. Donc, si vous voulez jouer avec des réseaux sur puces ou des architectures globalement asynchrones localement, c'est une bonne référence.

Références:

[1] D. A. Patterson et J. L. Hennessy. Organisation et conception des ordinateurs : L'interface matériel/logiciel. Morgan Kaufmann, Gurgaon, Inde, quatrième édition, 2009.

[2] J. L. Hennessy et D. A. Patterson. Computer Architecture : A Quantitative Approach. Morgan Kaufmann, San Francisco, CA, cinquième édition, 2012.

[3] D. L. Weaver. OpenSPARC Internals : Calcul du débit de la CMT OpenSPARC T1/T2. Sun Microsystems, Inc, Santa Clara, CA, 2008.

P/S : Commentaires supplémentaires à certaines autres réponses.

Si vous voyez la valeur de développer un ensemble de compétences à travers la pile matériel/logiciel, les livres de Patterson et Hennessy vous aideront à construire cet ensemble de compétences mieux que tout autre livre.

Comme Patterson et Hennessy l'ont mentionné dans les préfaces de leurs livres, le livre "Computer Organization and Design : The Hardware/Software Interface" reprend l'essentiel du matériel de la deuxième édition du livre "Computer Architecture : A Quantitative Approach". Donc, techniquement, le premier livre est en fait le premier livre par lequel les étudiants qui débutent en architecture informatique commenceraient, afin qu'ils puissent apprendre les bases de la conception des processeurs.

Le dernier livre est un manuel pour les classes avancées (destinées aux étudiants diplômés des universités américaines) en architecture informatique. Donc, si vous commencez avec ce dernier livre, vous aurez du mal à comprendre le matériel puisque vos bases en architecture informatique (ou l'organisation de l'ordinateur, si vous voulez) sont faibles/pauvres.

La ligne de fond est que vous ne pouvez pas'faire l'architecture informatique, qui est une partie fondamentale de l'ingénierie informatique (lire l'accent sur le matériel), sans une certaine expérience dans la conception logique (et idéalement la conception VLSI numérique). C'est pourquoi de nombreux cours d'introduction à l'architecture informatique dans les collèges et universités américains exigent des étudiants qu'ils réalisent des projets de conception de processeurs, afin qu'ils puissent démontrer leur compréhension ou des implémentations à cycle unique, à cycles multiples et en pipeline d'un processeur MIPS 32 bits/64 bits.

Néanmoins, une compréhension de l'organisation de l'ordinateur est importante pour les développeurs de logiciels, afin qu'ils puissent exploiter les caractéristiques matérielles (lire microarchitecture) et aussi pour effectuer une analyse légitime des performances. Les livres que vous (par exemple, Tannenbaum) et moi avons mentionnés (c'est-à-dire les livres de Stallings et Comer) examinent l'architecture des ordinateurs du point de vue des logiciels/CS, et ne parviennent pas à enseigner de manière adéquate aux étudiants comment concevoir des processeurs et des systèmes informatiques avancés (du point de vue du matériel).

Vous pouvez également réaliser que certains départements CS aux États-Unis sont activement engagés dans la recherche sur l'architecture des ordinateurs et la conception/vérification VLSI.... Ils peuvent s'attaquer aux mêmes problèmes que leurs pairs en génie électrique et informatique.

J'espérais que vous réalisiez que les livres sur l'architecture informatique ont tendance à être divisés en catégories centrées sur le matériel et sur le logiciel.

Si vous voulez vraiment apprendre l'architecture informatique, qui est centrée sur le matériel, vous pouvez vouloir apprendre la conception logique et la conception VLSI numérique.... Surtout si vous voulez suivre un cours de deuxième cycle en architecture informatique, ce qui n'est pas rare chez les étudiants de premier cycle des universités de recherche américaines.

Si vous détestez la conception matérielle, j'espère que vous réalisez que les progrès de l'architecture informatique affectent la façon dont nous développons les logiciels. Par là, je n'entends pas seulement les logiciels système, comme les systèmes d'exploitation et les compilateurs. Je parle également des logiciels d'application pour le calcul GPGPU et le cloud computing basés sur des processeurs many-core (spécifiques aux applications).

Vous êtes un homme intelligent. Si vous voulez faire un doctorat en CS ou en physique computationnelle, vous voudrez peut-être apprendre l'architecture des ordinateurs d'un point de vue centré sur le matériel afin de pouvoir développer des techniques de calcul exceptionnelles pour les plates-formes de calcul à haute performance.

L'architecture des ordinateurs est un élément essentiel de l'architecture des ordinateurs.