Cuál es un buen libro para aprender arquitectura de ordenadores?

El sitio web de Arquitectura WWW, alojado por los gurús de la arquitectura de ordenadores de la Universidad de Wisconsin-Madison, ofrece una buena lista de libros.

Vea la página de Arquitectura de Ordenadores WWW

La referencia [1] le ofrece una sólida introducción a la arquitectura de ordenadores, incluyendo suficientes detalles para implementar un procesador MIPS de 32 bits por su cuenta o con amigos para una tarea/proyecto de clase.

La referencia [2] le ofrece lo más importante, en cuanto a las tendencias contemporáneas de la arquitectura de ordenadores. Sin embargo, si cubres el material en [2] antes de comprender los fundamentos en [1], tendrías enormes dificultades para seguir el material.

Así que las referencias [1-2] suelen ser libros de texto obligatorios para las clases que implican mucho trabajo práctico a través de tareas y/o proyectos de clase. En una clase, tuve que diseñar implementaciones multiciclo y de tuberías para mis proyectos de clase después de hacer el diseño lógico para ellos para mis tareas de clase. De esta manera, conseguí construir y simular lo que diseñé, y probarlos con programas de ensamblaje.

"Digital Design and Computer Architecture" de David Money Harris y Sarah L. Harris puede utilizarse como sustituto de referencia [1].

Sin embargo, muchas clases de arquitectura de ordenadores tienden a evitar el diseño lógico, especialmente para las clases fuera de los EE.UU. En estos casos, se utiliza la perspectiva de un desarrollador de software para enseñar la organización de los ordenadores.

El siguiente libro de William Stallings puede ser utilizado para este propósito, "Computer Organization and Architecture: Designing for Performance". Alternativamente, mire "Essentials of computer architecture" de Douglas Comer.

Para tener un mejor conocimiento de los temas avanzados en arquitectura de ordenadores, yo buscaría libros para temas específicos que le interesen.

Por ejemplo, Daniel J. Sorin's "Fault Tolerant Computer Architecture" puede interesarte si quieres ver la computación tolerante a fallos.

La referencia [3] te guía a través de la microarquitectura del procesador OpenSPARC, cuyo código fuente (en Verilog) está disponible como hardware de código abierto en línea. Así que, si quieres jugar con las arquitecturas de red en chip o las arquitecturas globalmente asíncronas localmente síncronas, esta es una buena referencia.

Referencias:

[1] D. A. Patterson y J. L. Hennessy. Computer Organization and Design: The Hardware/Software Interface. Morgan Kaufmann, Gurgaon, India, cuarta edición, 2009.

[2] J. L. Hennessy y D. A. Patterson. Computer Architecture: A Quantitative Approach. Morgan Kaufmann, San Francisco, CA, quinta edición, 2012.

[3] D. L. Weaver. OpenSPARC Internals: OpenSPARC T1/T2 CMT Throughput Computing. Sun Microsystems, Inc., Santa Clara, CA, 2008.

P/S: Comentarios adicionales a algunas otras respuestas.

Si usted ve el valor de desarrollar un conjunto de habilidades a través de la pila de hardware/software, los libros de Patterson y Hennessy le ayudarán a construir ese conjunto de habilidades mejor que cualquier otro libro.

Como Patterson y Hennessy mencionan en los prefacios de sus libros, el libro "Computer Organization and Design: The Hardware/Software Interface" toma la mayor parte del material de la segunda edición del libro "Computer Architecture: A Quantitative Approach". Así que, técnicamente, el primer libro es en realidad el primer libro con el que empezarían los estudiantes que se inician en la arquitectura de ordenadores, para que puedan aprender los fundamentos del diseño de procesadores.

El último libro es un libro de texto para clases avanzadas (dirigidas a estudiantes de posgrado en universidades de Estados Unidos) de arquitectura de ordenadores. Por lo tanto, si usted comienza con este último libro, tendrá dificultades para comprender el material, ya que sus fundamentos en la arquitectura de ordenadores (o la organización de los ordenadores, si lo desea) son débiles/pobres.

La conclusión es que no se puede hacer arquitectura de ordenadores, que es una parte fundamental de la ingeniería informática (léase énfasis en el hardware), sin algunos antecedentes en el diseño lógico (e idealmente en el diseño VLSI digital). Por eso, muchas clases de introducción a la arquitectura de ordenadores en las universidades de EE.UU. exigen a los estudiantes que realicen proyectos de diseño de procesadores, para que puedan demostrar que entienden las implementaciones de ciclo único, ciclo múltiple y canalización de un procesador MIPS de 32/64 bits.

Sin embargo, entender la organización de los ordenadores es importante para los desarrolladores de software, para que puedan explotar las características del hardware (léase microarquitectura) y también para llevar a cabo análisis de rendimiento legítimos. Los libros que usted (por ejemplo, Tannenbaum) y yo mencionamos (es decir, los libros de Stallings y Comer) contemplan la arquitectura de los ordenadores desde la perspectiva del software/CS, y no enseñan adecuadamente a los estudiantes cómo diseñar procesadores y sistemas informáticos avanzados (desde la perspectiva del hardware).

También puede darse cuenta de que algunos departamentos de CS en los EE.UU. se dedican activamente a la arquitectura de los ordenadores y a la investigación del diseño/verificación VLSI... Puede que aborden los mismos problemas que sus compañeros de ingeniería eléctrica e informática.

Esperaba que te dieras cuenta de que los libros sobre arquitectura de ordenadores tienden a dividirse en categorías centradas en el hardware y en el software.

Si realmente quieres aprender arquitectura de ordenadores, que está centrada en el hardware, puede que quieras aprender diseño lógico y diseño VLSI digital... Especialmente si quieres tomar una clase de posgrado en arquitectura de ordenadores, lo que no es raro entre los estudiantes de grado en las universidades de investigación de Estados Unidos.

Si odias el diseño de hardware, espero que te des cuenta de que los avances en la arquitectura de ordenadores afectan a la forma en que desarrollamos el software. Con esto, no me refiero sólo al software de sistema, como los sistemas operativos y los compiladores. También me refiero al software de aplicación para la computación GPGPU y la computación en la nube basada en procesadores multinúcleo (específicos para la aplicación).

Eres un tipo inteligente. Si quieres hacer un doctorado en CS o física computacional, es posible que quieras aprender sobre la arquitectura de los ordenadores desde una perspectiva centrada en el hardware para poder desarrollar técnicas computacionales excepcionales para plataformas de computación de alto rendimiento.