Qual è un buon libro per imparare l’architettura dei computer?

Il sito web WWW Architecture ospitato dai guru dell'architettura dei computer dell'Università del Wisconsin-Madison fornisce una buona lista di libri.

Vedi WWW Computer Architecture Page

La referenza [1] ti dà una solida introduzione all'architettura dei computer, inclusi abbastanza dettagli per implementare un processore MIPS a 32 bit da solo o con gli amici per un compito/progetto in classe.

La referenza [2] ti dà il vero affare, per quanto riguarda le tendenze attuali dell'architettura dei computer. Tuttavia, se si copre il materiale in [2] prima di aver afferrato le basi in [1], si avrebbero enormi difficoltà a seguire il materiale.

Quindi, le referenze [1-2] sono di solito libri di testo richiesti per classi che implicano molto lavoro pratico attraverso compiti in classe e/o progetti. In un corso, ho dovuto progettare implementazioni multiciclo e pipeline per i miei progetti di classe dopo aver fatto la progettazione logica per loro per i miei compiti di classe. In questo modo, ho potuto costruire e simulare ciò che avevo progettato, e testarlo con programmi assembly.

"Digital Design and Computer Architecture" di David Money Harris e Sarah L. Harris può essere usato come riferimento [1].

Tuttavia, molte classi di architettura di computer tendono ad evitare la progettazione logica, specialmente per le classi al di fuori degli Stati Uniti. In questi casi, viene usata una prospettiva da sviluppatore di software per insegnare l'organizzazione del computer.

Il seguente libro di William Stallings può essere usato per questo scopo, "Computer Organization and Architecture: Designing for Performance". In alternativa, guardate "Essentials of computer architecture" di Douglas Comer.

Per avere una migliore comprensione degli argomenti avanzati nell'architettura dei computer, cercherei libri per argomenti specifici che vi interessano.

Per esempio, Daniel J. Sorin's "Fault Tolerant Computer Architecture" potrebbe interessarvi se volete guardare al fault-tolerant computing.

Riferimento [3] vi guida attraverso la microarchitettura del processore OpenSPARC, il cui codice sorgente (in Verilog) è disponibile come hardware open source online. Quindi, se si vuole giocare con le architetture network-on-chip o globalmente asincrone localmente sincrone, questo è un buon riferimento.

Riferimenti:

[1] D. A. Patterson e J. L. Hennessy. Organizzazione e progettazione di computer: The Hardware/Software Interface. Morgan Kaufmann, Gurgaon, India, quarta edizione, 2009.

[2] J. L. Hennessy e D. A. Patterson. Architettura dei computer: A Quantitative Approach. Morgan Kaufmann, San Francisco, CA, quinta edizione, 2012.

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

P/S: Commenti aggiuntivi ad alcune altre risposte.

Se vedete il valore di sviluppare un set di abilità attraverso lo stack hardware/software, i libri di Patterson e Hennessy vi aiuteranno a costruire quel set di abilità meglio di qualsiasi altro libro.

Come Patterson e Hennessy hanno detto nelle prefazioni dei loro libri, il libro "Computer Organization and Design: The Hardware/Software Interface" prende la maggior parte del materiale dalla seconda edizione del libro "Computer Architecture: A Quantitative Approach". Quindi, tecnicamente, il primo libro è in realtà il primo libro con cui gli studenti che iniziano l'architettura dei computer dovrebbero iniziare, in modo che possano imparare le basi della progettazione dei processori.

Il secondo libro è un libro di testo per classi avanzate (rivolte a studenti laureati nelle università statunitensi) in architettura dei computer. Quindi, se iniziate con quest'ultimo libro, farete fatica a comprendere il materiale poiché i vostri fondamenti in architettura di computer (o organizzazione di computer, se volete) sono deboli/poveri.

La linea di fondo è che non si può fare architettura di computer, che è una parte fondamentale dell'ingegneria informatica (leggi enfasi sull'hardware), senza un certo background in progettazione logica (e idealmente progettazione VLSI digitale). Questo è il motivo per cui molti corsi introduttivi all'architettura dei computer nei college e nelle università degli Stati Uniti richiedono agli studenti di completare progetti di progettazione di processori, in modo che possano dimostrare la loro comprensione o implementazioni a ciclo singolo, multiciclo e pipeline di un processore MIPS a 32 bit/64 bit.

Nonostante, una comprensione dell'organizzazione dei computer è importante per gli sviluppatori di software, in modo che possano sfruttare le caratteristiche dell'hardware (leggi microarchitettura) e anche per effettuare analisi legittime delle prestazioni. I libri che tu (per esempio, Tannenbaum) e io abbiamo menzionato (cioè, i libri di Stallings e Comer) guardano all'architettura del computer dalla prospettiva del software/CS, e non riescono a insegnare adeguatamente agli studenti come progettare processori e sistemi informatici avanzati (dalla prospettiva dell'hardware).

Potresti anche renderti conto che alcuni dipartimenti di CS negli Stati Uniti sono attivamente impegnati nell'architettura del computer e nella ricerca sulla progettazione/verifica VLSI... Possono affrontare gli stessi problemi che affrontano i loro colleghi dell'ingegneria elettrica e informatica.

...

Spero che tu ti renda conto che i libri sull'architettura dei computer tendono ad essere divisi in categorie hardware-centriche e software-centriche.

Se vuoi davvero imparare l'architettura dei computer, che è hardware-centrica, potresti voler imparare la progettazione logica e la progettazione VLSI digitale... Specialmente se vuoi fare un corso di laurea in architettura dei computer, che non è raro tra i laureandi delle università di ricerca americane.

Se odi la progettazione dell'hardware, spero che tu capisca che i progressi nell'architettura dei computer influenzano il modo in cui sviluppiamo il software. Con questo, non intendo solo il software di sistema, come i sistemi operativi e i compilatori. Intendo anche il software applicativo per il calcolo GPGPU e il cloud computing basato su processori many-core (specifici per le applicazioni).

Sei un ragazzo intelligente. Se vuoi fare un dottorato di ricerca in CS o fisica computazionale, potresti voler imparare l'architettura dei computer da una prospettiva hardware-centrica in modo da poter sviluppare tecniche computazionali eccezionali per piattaforme di calcolo ad alte prestazioni.