關(guān)于我們
書單推薦
新書推薦
|
計算機組成與體系結(jié)構(gòu)(原書第4版)
全書揭示現(xiàn)代計算機的內(nèi)部工作方式,采用大量真實的例子,引導(dǎo)讀者逐步由淺入深地學(xué)習(xí)計算機體系結(jié)構(gòu)的概念和理論。
致學(xué)生
這是一本關(guān)于計算機組成與體系結(jié)構(gòu)的書。它重點研究處理數(shù)字信息所需要的各種組件的功能和設(shè)計。我們把計算系統(tǒng)分成一系列的層次,從低層的硬件到更高層的軟件,包括匯編程序和操作系統(tǒng)。這些層構(gòu)成了虛擬機的層次結(jié)構(gòu)。關(guān)于計算機組成的研究主要集中在這種層次結(jié)構(gòu)上,包括如何劃分所涉及的層次和如何實現(xiàn)每個層次。關(guān)于計算機體系結(jié)構(gòu)的研究主要集中在硬件和軟件之間的接口上,強調(diào)系統(tǒng)的結(jié)構(gòu)和行為。本書中包含的主要信息涉及計算機硬件、計算機組成和體系結(jié)構(gòu)以及它們與軟件性能的關(guān)系。 學(xué)生總是問,“如果我是一名計算機科學(xué)專業(yè)的學(xué)生,我必須學(xué)習(xí)計算機硬件嗎?那不是計算機工程師要學(xué)的嗎?為什么我要關(guān)心計算機內(nèi)部是什么樣子呢?”作為計算機的使用者,我們可能不必關(guān)心計算機內(nèi)部是什么樣子的,就像開車時我們不需要知道汽車發(fā)動機下面是什么樣子一樣。在不理解高級語言程序如何執(zhí)行的情況下,我們當(dāng)然能寫高級語言程序;在不理解各種應(yīng)用程序包實際如何工作的情況下,我們也可以使用各種應(yīng)用程序包。但是,當(dāng)需要使寫出來的程序變得更快和更有效,或者正在使用的應(yīng)用程序沒有達到要求時,我們該怎么辦?作為計算機科學(xué)家,為了解決這些問題我們需要對計算機系統(tǒng)本身有基本的理解。 在計算機系統(tǒng)中,計算機硬件與程序和軟件組件的許多方面之間有一種基本的關(guān)系。為了寫出好軟件,理解整個計算機系統(tǒng)是非常重要的。理解硬件能夠幫助你解釋有時潛入程序中的神秘錯誤,如分段錯誤和總線錯誤。高級程序員必須具備的計算機組成和計算機體系結(jié)構(gòu)的知識水平,取決于所要完成的任務(wù)。 例如,在寫編譯器程序時,你必須理解運行所編譯的程序的特定硬件。一些在硬件中使用的思想(如流水線)可能適合于編譯技術(shù),從而使編譯器更快和更高效。對大型復(fù)雜的實時系統(tǒng)建模時,你必須理解浮點運算是如何實現(xiàn)和如何工作的(它們不一定是同一回事)。在為視頻設(shè)備、磁盤或其他I/O設(shè)備寫驅(qū)動程序時,一般來說,你需要很好地理解I/O接口和計算機體系結(jié)構(gòu)。如果你想做嵌入式系統(tǒng)方面的工作,由于嵌入式系統(tǒng)通常是非常受資源約束的,你必須理解所有的時間、空間和價格的權(quán)衡。在進行硬件、網(wǎng)絡(luò)或特殊算法方面的研究和提出硬件、網(wǎng)絡(luò)或特殊算法方面的建議時,你必須理解基準測試并且學(xué)習(xí)如何表示性能結(jié)果。在買硬件之前,你需要理解基準測試和其他可以巧妙處理性能結(jié)果以“證明”一個系統(tǒng)比另一個系統(tǒng)更好的所有方法。不管我們擅長的專業(yè)領(lǐng)域是什么,作為計算機科學(xué)家,理解硬件如何與軟件交互是非常重要的。 你可能會奇怪,為什么英文書名中寫著essentials的書會這么厚。原因有兩個方面。首先,計算機組成的主題是寬泛和日益發(fā)展的。其次,在這個迅速發(fā)展的信息海洋中哪些主題是真正的基礎(chǔ),哪些主題只是有助于了解這個領(lǐng)域,幾乎沒有共識。這本書的一個目的是符合由ACM和IEEE聯(lián)合發(fā)布的關(guān)于計算機體系結(jié)構(gòu)課程指南的要求。這個指南包含了專家認可的關(guān)于計算機組成和體系結(jié)構(gòu)主題的基礎(chǔ)核心知識。 我們已經(jīng)擴大了ACM/IEEE建議的主題,增加了我們認為對繼續(xù)研究計算機科學(xué)和提高專業(yè)水平有用的(未必是基礎(chǔ)的)主題。我們認為這些主題將有助于你繼續(xù)在操作系統(tǒng)、編譯程序、數(shù)據(jù)庫管理和數(shù)據(jù)通信等計算機科學(xué)領(lǐng)域的學(xué)習(xí)。本書中包含的其他主題將有助于理解實際系統(tǒng)在現(xiàn)實生活中是如何工作的。 我們希望你閱讀本書是一次愉快的經(jīng)歷,并且花時間深入鉆研我們提供的一些材料。我們的目的是在你正式完成課程后,這本書仍將是有用的參考書。雖然我們給了你大量的信息,但這僅是你學(xué)習(xí)和職業(yè)生涯的基礎(chǔ)。成功的計算機專業(yè)人員會不斷深入了解計算機工作原理。 致教師 本書是在賓夕法尼亞州立大學(xué)哈里斯堡校區(qū)教兩個班的計算機組成和體系結(jié)構(gòu)課程的基礎(chǔ)上形成的。隨著計算機科學(xué)課程的發(fā)展,我們發(fā)現(xiàn)不僅需要修改課程中所教的材料,而且需要把課程從連續(xù)開設(shè)兩個學(xué)期壓縮為一個學(xué)期(三學(xué)分)。許多其他學(xué)校也已經(jīng)認識到需要壓縮教材,以便為新出現(xiàn)的主題騰出空間。這門新課程以及這本教材主要是針對計算機科學(xué)專業(yè)的,旨在討論計算機科學(xué)專業(yè)學(xué)生必須熟悉的計算機組成和體系結(jié)構(gòu)中的主題。本書整合了這些領(lǐng)域的基本原理,為計算機科學(xué)專業(yè)的學(xué)生提供了必要的廣度,同時為在計算機科學(xué)領(lǐng)域繼續(xù)學(xué)習(xí)的學(xué)生提供了必要的深度。 在寫本書時,我們的主要目標是改變講授計算機組成和體系結(jié)構(gòu)課程的典型方式。計算機科學(xué)專業(yè)的學(xué)生在學(xué)完計算機組成和體系結(jié)構(gòu)課程之后,不僅要了解構(gòu)建數(shù)字計算機的重要基本概念,而且還要理解這些概念如何應(yīng)用于現(xiàn)實世界。這些概念應(yīng)該超越特定廠家的術(shù)語和設(shè)計。事實上,學(xué)生應(yīng)該能夠理解給定的特定概念并且能將其翻譯成一般概念,反之亦然。此外,學(xué)生必須為進一步的專業(yè)學(xué)習(xí)打下堅實的基礎(chǔ)。 本書介紹的主題是每個計算機科學(xué)專業(yè)的學(xué)生都應(yīng)該接觸、熟悉或精通的。我們并沒有期望學(xué)生能完全掌握所有主題。然而,我們堅信有些主題必須要掌握,有些主題必須有一定程度的了解,有些主題接觸一下就足夠了。 我們不認為孤立地研究一般性的原理就可以把這些主題學(xué)到足夠深入。因此,我
Linda Null 艾奧瓦州立大學(xué)計算機科學(xué)博士,現(xiàn)為賓夕法尼亞州立大學(xué)計算機科學(xué)系副教授,計算機科學(xué)研究生課程協(xié)調(diào)員和課程副主席。研究領(lǐng)域包括:計算機組成和體系結(jié)構(gòu)、操作系統(tǒng)、計算機科學(xué)教育和計算機安全。她已經(jīng)從事數(shù)學(xué)和計算機科學(xué)教學(xué)工作超過35年,是廣受歡迎的教材作者,編寫的教材曾多次獲得美國教材和學(xué)術(shù)著作者協(xié)會頒發(fā)的計算機科學(xué)與工程教材獎。
Julia Lobur 在計算機工業(yè)界和教育界從業(yè)超過30年的專業(yè)人員。她除了在賓夕法尼亞州立大學(xué)兼職教學(xué)工作外,還擔(dān)任過系統(tǒng)顧問、高級程序員/分析師、系統(tǒng)和網(wǎng)絡(luò)設(shè)計師、軟件開發(fā)經(jīng)理和項目經(jīng)理等職位。Julia是計算機科學(xué)碩士、IEEE認證的軟件開發(fā)專業(yè)人員。
出版者的話
譯者序 前言 第1章 緒論1 1.1 引言1 1.2 計算機的主要部件2 1.3 一個實例系統(tǒng):吃力地讀專業(yè)詞匯3 1.4 標準組織12 1.5 發(fā)展歷史13 1.5.1 第零代:機械計算機(1642~1945年)13 1.5.2 第一代:電子管計算機(1945~1953年)15 1.5.3 第二代:晶體管計算機(1954~1965年)18 1.5.4 第三代:集成電路計算機(1965~1980年)20 1.5.5 第四代:超大規(guī)模集成電路計算機(1980~)20 1.5.6 摩爾定律22 1.6 計算機層次結(jié)構(gòu)23 1.7 云計算:計算即服務(wù)24 1.8 馮·諾依曼模型26 1.9 非馮·諾依曼模型28 1.10 并行處理器和并行計算29 1.11 并行性:機器智能的 推動者——深藍和沃森30 本章小結(jié)32 擴展閱讀32 參考文獻33 復(fù)習(xí)題34 習(xí)題35 第2章 計算機系統(tǒng)中的數(shù)據(jù)表示37 2.1 引言37 2.2 按位計數(shù)系統(tǒng)37 2.3 不同進制之間的轉(zhuǎn)換38 2.3.1 無符號整數(shù)的轉(zhuǎn)換38 2.3.2 小數(shù)的轉(zhuǎn)換40 2.3.3 2的冪次作為基數(shù)的計數(shù)系統(tǒng)之間的轉(zhuǎn)換41 2.4 有符號整數(shù)表示42 2.4.1 原碼42 2.4.2 補碼系統(tǒng)45 2.4.3 有符號數(shù)的移碼表示49 2.4.4 無符號數(shù)與有符號數(shù)50 2.4.5 計算機、算術(shù)和布斯算法50 2.4.6 進位和溢出53 2.4.7 使用移位進行二進制乘法和除法54 2.5 浮點數(shù)表示55 2.5.1 一個簡單的模型55 2.5.2 浮點運算57 2.5.3 浮點誤差58 2.5.4 IEEE- 754浮點標準59 2.5.5 表數(shù)范圍、精度和準確度60 2.5.6 有關(guān)浮點數(shù)的其他問題61 2.6 字符編碼62 2.6.1 二進制編碼的十進制63 2.6.2 EBCDIC64 2.6.3 ASCII64 2.6.4 Unicode65 2.7 錯誤檢測與糾錯67 2.7.1 循環(huán)冗余校驗67 2.7.2 漢明碼69 2.7.3 里德-所羅門糾錯碼74 本章小結(jié)74 擴展閱讀75 參考文獻75 復(fù)習(xí)題76 習(xí)題76 特別關(guān)注:數(shù)據(jù)記錄和傳輸?shù)木幋a82 第3章 布爾代數(shù)與數(shù)字邏輯88 3.1 引言88 3.2 布爾代數(shù)89 3.2.1 布爾表達式89 3.2.2 布爾代數(shù)的基本定律90 3.2.3 化簡布爾表達式91 3.2.4 求反92 3.2.5 表示布爾函數(shù)93 3.3 邏輯門94 3.3.1 邏輯門符號94 3.3.2 通用邏輯門95 3.3.3 多輸入邏輯門96 3.4 數(shù)字組件96 3.4.1 數(shù)字電路及其與布爾代數(shù)的關(guān)系96 3.4.2 集成電路97 3.4.3 匯總:從問題描述到電路99 3.5 組合邏輯電路100 3.5.1 基本概念100 3.5.2 典型的組合邏輯電路示例100 3.6 時序電路105 3.6.1 基本概念105 3.6.2 時鐘105 3.6.3 觸發(fā)器105 3.6.4 有限狀態(tài)機108 3.6.5 時序電路示例112 3.6.6 時序邏輯的應(yīng)用:卷積編碼和維特比檢測115 3.7 電路設(shè)計119 本章小結(jié)119 擴展閱讀120 參考文獻120 復(fù)習(xí)題121 習(xí)題122 特別關(guān)注:卡諾圖128 第4章 一個簡單的計算機模型MARIE139 4.1 引言139 4.2 CPU基本知識和組織結(jié)構(gòu)139 4.2.1 寄存器139 4.2.2 ALU140 4.2.3 控制單元140 4.3 總線140 4.4 時鐘143 4.5 輸入/輸出子系統(tǒng)144 4.6 存儲器的組成和尋址方式145 4.7 中斷148 4.8 MARIE149 4.8.1 組織結(jié)構(gòu)149 4.8.2 寄存器和總線150 4.8.3 指令集架構(gòu)151 4.8.4 寄存器傳輸表示153 4.9 指令的執(zhí)行過程155 4.9.1 取指-譯碼-執(zhí)行周期155 4.9.2 中斷和指令周期155 4.9.3 MARIE的I/O157 4.10 一個簡單的程序157 4.11 關(guān)于編譯程序的討論159 4.11.1 編譯程序的作用159 4.11.2 使用匯編語言的原因160 4.12 指令集的擴展161 4.13 關(guān)于譯碼的討論:硬連線和微程序控制166 4.13.1 機器控制166 4.13.2 硬連線控制169 4.13.3 微程序控制171 4.14 實際的計算機體系結(jié)構(gòu)174 4.14.1 Intel體系結(jié)構(gòu)175 4.14.2 MIPS體系結(jié)構(gòu)179 本章小結(jié)181 擴展閱讀182 參考文獻183 復(fù)習(xí)題184 習(xí)題185 第5章 仔細審視指令集架構(gòu)192 5.1 引言192 5.2 指令格式192 5.2.1 指令集設(shè)計決策192 5.2.2 小端和大端方式193 5.2.3 CPU內(nèi)部的存儲:堆棧和寄存器195 5.2.4 操作數(shù)個數(shù)和指令長度196 5.2.5 擴展操作碼199 5.3 指令類型202 5.3.1 數(shù)據(jù)傳送202 5.3.2 算術(shù)運算202 5.3.3 布爾邏輯運算指令203 5.3.4 位操作指令203 5.3.5 輸入/輸出指令203 5.3.6 傳送控制指令204 5.3.7 專用指令204 5.3.8 正交指令集204 5.4 尋址204 5.4.1 數(shù)據(jù)類型204 5.4.2 尋址方式205 5.5 指令流水線207 5.6 指令集架構(gòu)實例210 5.6.1 Intel211 5.6.2 MIPS211 5.6.3 Java虛擬機212 5.6.4 ARM215 本章小結(jié)216 擴展閱讀217 參考文獻218 復(fù)習(xí)題218 習(xí)題219 第6章 存儲器224 6.1 引言224 6.2 存儲器類型224 6.3 存儲器的層次結(jié)構(gòu)225 6.4 高速緩存227 6.4.1 緩存映射策略229 6.4.2 替換策略240 6.4.3 有效訪問時間和命中率240 6.4.4 發(fā)生緩存失效的時間241 6.4.5 緩存寫策略241 6.4.6 指令和數(shù)據(jù)緩存243 6.4.7 緩存的級別244 6.5 虛擬存儲器244 6.5.1 分頁245 6.5.2 使用分頁管理的有效訪問時間250 6.5.3 匯總:使用緩存、TLB和分頁技術(shù)252 6.5.4 分頁和虛擬存儲器的優(yōu)缺點253 6.5.5 分段253 6.5.6 分段和分頁的組合254 6.6 存儲器管理實例254 本章小結(jié)255 擴展閱讀255 參考文獻256 復(fù)習(xí)題256 習(xí)題257 第7章 輸入/輸出和存儲系統(tǒng)263 7.1 引言263 7.2 I/O及其性能263 7.3 阿姆達爾定律263 7.4 I/O體系結(jié)構(gòu)266 7.4.1 I/O控制方法267 7.4.2 字符I/O與塊I/O271 7.4.3 I/O總線操作272 7.5 數(shù)據(jù)傳輸模式274 7.5.1 并行數(shù)據(jù)傳輸275 7.5.2 串行數(shù)據(jù)傳輸276 7.6 磁盤技術(shù)277 7.6.1 硬盤驅(qū)動器278 7.6.2 固態(tài)硬盤280 7.7 光盤282 7.7.1 CD- ROM282 7.7.2 DVD285 7.7.3 藍光光盤286 7.7.4 光盤記錄方式286 7.8 磁帶287 7.9 RAID290 7.9.1 RAID- 0290 7.9.2 RAID- 1291 7.9.3 RAID- 2291 7.9.4 RAID- 3292 7.9.5 RAID- 4293 7.9.6 RAID- 5293 7.9.7 RAID- 6294 7.9.8 RAID DP295 7.9.9 混合RAID系統(tǒng)297 7.10 數(shù)據(jù)存儲的未來298 本章小結(jié)300 擴展閱讀300 參考文獻301 復(fù)習(xí)題302 習(xí)題303 特別關(guān)注:數(shù)據(jù)壓縮308 第8章 系統(tǒng)軟件327 8.1 引言327 8.2 操作系統(tǒng)327 8.2.1 操作系統(tǒng)的歷史328 8.2.2 操作系統(tǒng)的設(shè)計332 8.2.3 操作系統(tǒng)的服務(wù)332 8.3 保護環(huán)境335 8.3.1 虛擬機336 8.3.2 子系統(tǒng)和分區(qū)337 8.3.3 保護環(huán)境和系統(tǒng)結(jié)構(gòu)的演變339 8.4 編程工具340 8.4.1 匯編程序和匯編340 8.4.2 鏈接器342 8.4.3 動態(tài)鏈接庫342 8.4.4 編譯器344 8.4.5 解釋器346 8.5 Java:以上全部346 8.6 數(shù)據(jù)庫軟件351 8.7 事務(wù)管理器354 本章小結(jié)356 擴展閱讀356 參考文獻357 復(fù)習(xí)題357 習(xí)題358 第9章 可供選擇的體系結(jié)構(gòu)360 9.1 引言360 9.2 RISC設(shè)備361 9.3 Flynn分類法365 9.4 并行和多處理器體系結(jié)構(gòu)367 9.4.1 超標量和超長指令字368 9.4.2 向量處理器369 9.4.3 互連網(wǎng)絡(luò)370 9.4.4 共享存儲器的多處理器373 9.4.5 分布式計算375 9.5 其他的并行處理方法377 9.5.1 數(shù)據(jù)流計算377 9.5.2 神經(jīng)網(wǎng)絡(luò)379 9.5.3 脈動陣列381 9.6 量子計算382 本章小結(jié)384 擴展閱讀385 參考文獻385 復(fù)習(xí)題387 習(xí)題388 第10章 嵌入式系統(tǒng)專題390 10.1 引言390 10.2 嵌入式硬件概述391 10.2.1 標準的嵌入式系統(tǒng)硬件391 10.2.2 可重構(gòu)硬件394 10.2.3 定制設(shè)計的嵌入式硬件398 10.3 嵌入式軟件概述403 10.3.1 嵌入式系統(tǒng)的存儲器組織403 10.3.2 嵌入式操作系統(tǒng)404 10.3.3 嵌入式系統(tǒng)的軟件開發(fā)406 本章小結(jié)407 擴展閱讀408 參考文獻409 復(fù)習(xí)題410 習(xí)題410 第11章 性能測量和分析412 11.1 引言412 11.2 計算機性能公式412 11.3 數(shù)學(xué)準備工作413 11.3.1 均值的含義413 11.3.2 統(tǒng)計學(xué)和語義417 11.4 基準測試418 11.4.1 時鐘頻率、MIPS和FLOPS419 11.4.2 綜合測試基準:Whetstone、Linpack和Dhrystone420 11.4.3 SPEC基準421 11.4.4 事務(wù)處理性能委員會基準424 11.4.5 系統(tǒng)仿真428 11.5 CPU性能優(yōu)化428 11.5.1 分支優(yōu)化429 11.5.2 使用好的算法和簡單代碼431 11.6 磁盤性能433 11.6.1 理解問題433 11.6.2 物理因素434 11.6.3 邏輯因素434 本章小結(jié)438 擴展閱讀438 參考文獻439 復(fù)習(xí)題440 習(xí)題440 第12章 網(wǎng)絡(luò)的組成和體系結(jié)構(gòu)444 12.1 引言444 12.2 早期的商用計算機網(wǎng)絡(luò)444 12.3 早期的學(xué)術(shù)和科研網(wǎng)絡(luò):因特網(wǎng)的根源和體系結(jié)構(gòu)444 12.4 網(wǎng)絡(luò)協(xié)議I:ISO/OSI統(tǒng)一協(xié)議447 12.4.1 一個小故事447 12.4.2 OSI參考模型448 12.5 網(wǎng)絡(luò)協(xié)議II:TCP/IP網(wǎng)絡(luò)體系結(jié)構(gòu)451 12.5.1 IPv4452 12.5.2 IPv4的麻煩453 12.5.3 傳輸控制協(xié)議456 12.5.4 TCP的工作過程457 12.5.5 IPv6460 12.6 網(wǎng)絡(luò)組成464 12.6.1 物理傳輸介質(zhì)465 12.6.2 接口卡469 12.6.3 中繼器469 12.6.4 集線器469 12.6.5 交換機470 12.6.6 網(wǎng)橋和網(wǎng)關(guān)470 12.6.7 路由器和路由471 12.7 因特網(wǎng)
你還可能感興趣
我要評論
|