確實是本了不得的神書,目前已經出了第六版了。大牛Andrew S. Tanenbaum使用語言、層次和虛擬機的概念,結構化的對計算機進行描述,使得計算機的功能層次能很是清晰地呈現。另,還記得差很少10年前初讀此書,第一次震撼地讀到「硬件和軟件在邏輯上是等同的」,至今記憶猶新。
沿着Tanenbaum的分層式思想說,組成原理這一層在硬件層(或者說數字邏輯層)之上,向上則承接操做系統層。籠統講,硬件層最重要的貢獻是解決了如何使用半導體器件實現布爾代數邏輯,使得在更高層工做的人不用再考慮如何使用半導體器件實現單個的邏輯門,而是能夠從邏輯門出發組合出更復雜的功能模塊實現更復雜的功能。計算機組成原理層解決的核心問題,就是如何在門電路的基礎上搭建出能夠執行程序實現計算的機器。操做系統層則要解決在這樣一臺「裸機」上實現資源管理、任務管理等關鍵功能,以便供更高層級上的用戶能夠方便使用計算機。
理解這個層次關係以及組成原理層所要解決的核心問題對於貫穿這門課的知識點、理解計算機組成十分關鍵。計算機組成原理介紹的內容主要是以馮氏結構(存儲指令、順序執行)爲基礎,加之指令集,以及cache、流水線等重要的性能優化技術。
從課程的角度看,計算機組成原理的課程知識內容多,知識點比較龐雜,各教材內容組織順序差異大,所以先從大的方向上把握馮氏結構的主幹(計算部件、存儲器、總線的工做原理),進而熟悉其餘各知識點內容以及各知識點間的關聯關係,最後再在複習時從總體上創建一個包括全部知識點及其聯繫的知識架構,我的以爲是一種比較好的學習方法。
課程實驗的重要性,在以前諸位答主的答案中都說得很全面了,最後想推薦另外一本書,Randal E.Bryant 的
深刻理解計算機系統 (豆瓣),該書從編程的角度給了許多基於計算機組成原理優化程序設計的方法和例子,能夠做爲組成原理學習的有益補充參考。