關(guān)于我們
書單推薦
新書推薦
|
計(jì)算機(jī)組成與體系結(jié)構(gòu)(原書第4版)
全書揭示現(xiàn)代計(jì)算機(jī)的內(nèi)部工作方式,采用大量真實(shí)的例子,引導(dǎo)讀者逐步由淺入深地學(xué)習(xí)計(jì)算機(jī)體系結(jié)構(gòu)的概念和理論。
致學(xué)生
這是一本關(guān)于計(jì)算機(jī)組成與體系結(jié)構(gòu)的書。它重點(diǎn)研究處理數(shù)字信息所需要的各種組件的功能和設(shè)計(jì)。我們把計(jì)算系統(tǒng)分成一系列的層次,從低層的硬件到更高層的軟件,包括匯編程序和操作系統(tǒng)。這些層構(gòu)成了虛擬機(jī)的層次結(jié)構(gòu)。關(guān)于計(jì)算機(jī)組成的研究主要集中在這種層次結(jié)構(gòu)上,包括如何劃分所涉及的層次和如何實(shí)現(xiàn)每個層次。關(guān)于計(jì)算機(jī)體系結(jié)構(gòu)的研究主要集中在硬件和軟件之間的接口上,強(qiáng)調(diào)系統(tǒng)的結(jié)構(gòu)和行為。本書中包含的主要信息涉及計(jì)算機(jī)硬件、計(jì)算機(jī)組成和體系結(jié)構(gòu)以及它們與軟件性能的關(guān)系。 學(xué)生總是問,“如果我是一名計(jì)算機(jī)科學(xué)專業(yè)的學(xué)生,我必須學(xué)習(xí)計(jì)算機(jī)硬件嗎?那不是計(jì)算機(jī)工程師要學(xué)的嗎?為什么我要關(guān)心計(jì)算機(jī)內(nèi)部是什么樣子呢?”作為計(jì)算機(jī)的使用者,我們可能不必關(guān)心計(jì)算機(jī)內(nèi)部是什么樣子的,就像開車時我們不需要知道汽車發(fā)動機(jī)下面是什么樣子一樣。在不理解高級語言程序如何執(zhí)行的情況下,我們當(dāng)然能寫高級語言程序;在不理解各種應(yīng)用程序包實(shí)際如何工作的情況下,我們也可以使用各種應(yīng)用程序包。但是,當(dāng)需要使寫出來的程序變得更快和更有效,或者正在使用的應(yīng)用程序沒有達(dá)到要求時,我們該怎么辦?作為計(jì)算機(jī)科學(xué)家,為了解決這些問題我們需要對計(jì)算機(jī)系統(tǒng)本身有基本的理解。 在計(jì)算機(jī)系統(tǒng)中,計(jì)算機(jī)硬件與程序和軟件組件的許多方面之間有一種基本的關(guān)系。為了寫出好軟件,理解整個計(jì)算機(jī)系統(tǒng)是非常重要的。理解硬件能夠幫助你解釋有時潛入程序中的神秘錯誤,如分段錯誤和總線錯誤。高級程序員必須具備的計(jì)算機(jī)組成和計(jì)算機(jī)體系結(jié)構(gòu)的知識水平,取決于所要完成的任務(wù)。 例如,在寫編譯器程序時,你必須理解運(yùn)行所編譯的程序的特定硬件。一些在硬件中使用的思想(如流水線)可能適合于編譯技術(shù),從而使編譯器更快和更高效。對大型復(fù)雜的實(shí)時系統(tǒng)建模時,你必須理解浮點(diǎn)運(yùn)算是如何實(shí)現(xiàn)和如何工作的(它們不一定是同一回事)。在為視頻設(shè)備、磁盤或其他I/O設(shè)備寫驅(qū)動程序時,一般來說,你需要很好地理解I/O接口和計(jì)算機(jī)體系結(jié)構(gòu)。如果你想做嵌入式系統(tǒng)方面的工作,由于嵌入式系統(tǒng)通常是非常受資源約束的,你必須理解所有的時間、空間和價格的權(quán)衡。在進(jìn)行硬件、網(wǎng)絡(luò)或特殊算法方面的研究和提出硬件、網(wǎng)絡(luò)或特殊算法方面的建議時,你必須理解基準(zhǔn)測試并且學(xué)習(xí)如何表示性能結(jié)果。在買硬件之前,你需要理解基準(zhǔn)測試和其他可以巧妙處理性能結(jié)果以“證明”一個系統(tǒng)比另一個系統(tǒng)更好的所有方法。不管我們擅長的專業(yè)領(lǐng)域是什么,作為計(jì)算機(jī)科學(xué)家,理解硬件如何與軟件交互是非常重要的。 你可能會奇怪,為什么英文書名中寫著essentials的書會這么厚。原因有兩個方面。首先,計(jì)算機(jī)組成的主題是寬泛和日益發(fā)展的。其次,在這個迅速發(fā)展的信息海洋中哪些主題是真正的基礎(chǔ),哪些主題只是有助于了解這個領(lǐng)域,幾乎沒有共識。這本書的一個目的是符合由ACM和IEEE聯(lián)合發(fā)布的關(guān)于計(jì)算機(jī)體系結(jié)構(gòu)課程指南的要求。這個指南包含了專家認(rèn)可的關(guān)于計(jì)算機(jī)組成和體系結(jié)構(gòu)主題的基礎(chǔ)核心知識。 我們已經(jīng)擴(kuò)大了ACM/IEEE建議的主題,增加了我們認(rèn)為對繼續(xù)研究計(jì)算機(jī)科學(xué)和提高專業(yè)水平有用的(未必是基礎(chǔ)的)主題。我們認(rèn)為這些主題將有助于你繼續(xù)在操作系統(tǒng)、編譯程序、數(shù)據(jù)庫管理和數(shù)據(jù)通信等計(jì)算機(jī)科學(xué)領(lǐng)域的學(xué)習(xí)。本書中包含的其他主題將有助于理解實(shí)際系統(tǒng)在現(xiàn)實(shí)生活中是如何工作的。 我們希望你閱讀本書是一次愉快的經(jīng)歷,并且花時間深入鉆研我們提供的一些材料。我們的目的是在你正式完成課程后,這本書仍將是有用的參考書。雖然我們給了你大量的信息,但這僅是你學(xué)習(xí)和職業(yè)生涯的基礎(chǔ)。成功的計(jì)算機(jī)專業(yè)人員會不斷深入了解計(jì)算機(jī)工作原理。 致教師 本書是在賓夕法尼亞州立大學(xué)哈里斯堡校區(qū)教兩個班的計(jì)算機(jī)組成和體系結(jié)構(gòu)課程的基礎(chǔ)上形成的。隨著計(jì)算機(jī)科學(xué)課程的發(fā)展,我們發(fā)現(xiàn)不僅需要修改課程中所教的材料,而且需要把課程從連續(xù)開設(shè)兩個學(xué)期壓縮為一個學(xué)期(三學(xué)分)。許多其他學(xué)校也已經(jīng)認(rèn)識到需要壓縮教材,以便為新出現(xiàn)的主題騰出空間。這門新課程以及這本教材主要是針對計(jì)算機(jī)科學(xué)專業(yè)的,旨在討論計(jì)算機(jī)科學(xué)專業(yè)學(xué)生必須熟悉的計(jì)算機(jī)組成和體系結(jié)構(gòu)中的主題。本書整合了這些領(lǐng)域的基本原理,為計(jì)算機(jī)科學(xué)專業(yè)的學(xué)生提供了必要的廣度,同時為在計(jì)算機(jī)科學(xué)領(lǐng)域繼續(xù)學(xué)習(xí)的學(xué)生提供了必要的深度。 在寫本書時,我們的主要目標(biāo)是改變講授計(jì)算機(jī)組成和體系結(jié)構(gòu)課程的典型方式。計(jì)算機(jī)科學(xué)專業(yè)的學(xué)生在學(xué)完計(jì)算機(jī)組成和體系結(jié)構(gòu)課程之后,不僅要了解構(gòu)建數(shù)字計(jì)算機(jī)的重要基本概念,而且還要理解這些概念如何應(yīng)用于現(xiàn)實(shí)世界。這些概念應(yīng)該超越特定廠家的術(shù)語和設(shè)計(jì)。事實(shí)上,學(xué)生應(yīng)該能夠理解給定的特定概念并且能將其翻譯成一般概念,反之亦然。此外,學(xué)生必須為進(jìn)一步的專業(yè)學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ)。 本書介紹的主題是每個計(jì)算機(jī)科學(xué)專業(yè)的學(xué)生都應(yīng)該接觸、熟悉或精通的。我們并沒有期望學(xué)生能完全掌握所有主題。然而,我們堅(jiān)信有些主題必須要掌握,有些主題必須有一定程度的了解,有些主題接觸一下就足夠了。 我們不認(rèn)為孤立地研究一般性的原理就可以把這些主題學(xué)到足夠深入。因此,我
Linda Null 艾奧瓦州立大學(xué)計(jì)算機(jī)科學(xué)博士,現(xiàn)為賓夕法尼亞州立大學(xué)計(jì)算機(jī)科學(xué)系副教授,計(jì)算機(jī)科學(xué)研究生課程協(xié)調(diào)員和課程副主席。研究領(lǐng)域包括:計(jì)算機(jī)組成和體系結(jié)構(gòu)、操作系統(tǒng)、計(jì)算機(jī)科學(xué)教育和計(jì)算機(jī)安全。她已經(jīng)從事數(shù)學(xué)和計(jì)算機(jī)科學(xué)教學(xué)工作超過35年,是廣受歡迎的教材作者,編寫的教材曾多次獲得美國教材和學(xué)術(shù)著作者協(xié)會頒發(fā)的計(jì)算機(jī)科學(xué)與工程教材獎。
Julia Lobur 在計(jì)算機(jī)工業(yè)界和教育界從業(yè)超過30年的專業(yè)人員。她除了在賓夕法尼亞州立大學(xué)兼職教學(xué)工作外,還擔(dān)任過系統(tǒng)顧問、高級程序員/分析師、系統(tǒng)和網(wǎng)絡(luò)設(shè)計(jì)師、軟件開發(fā)經(jīng)理和項(xiàng)目經(jīng)理等職位。Julia是計(jì)算機(jī)科學(xué)碩士、IEEE認(rèn)證的軟件開發(fā)專業(yè)人員。
出版者的話
譯者序 前言 第1章 緒論1 1.1 引言1 1.2 計(jì)算機(jī)的主要部件2 1.3 一個實(shí)例系統(tǒng):吃力地讀專業(yè)詞匯3 1.4 標(biāo)準(zhǔn)組織12 1.5 發(fā)展歷史13 1.5.1 第零代:機(jī)械計(jì)算機(jī)(1642~1945年)13 1.5.2 第一代:電子管計(jì)算機(jī)(1945~1953年)15 1.5.3 第二代:晶體管計(jì)算機(jī)(1954~1965年)18 1.5.4 第三代:集成電路計(jì)算機(jī)(1965~1980年)20 1.5.5 第四代:超大規(guī)模集成電路計(jì)算機(jī)(1980~)20 1.5.6 摩爾定律22 1.6 計(jì)算機(jī)層次結(jié)構(gòu)23 1.7 云計(jì)算:計(jì)算即服務(wù)24 1.8 馮·諾依曼模型26 1.9 非馮·諾依曼模型28 1.10 并行處理器和并行計(jì)算29 1.11 并行性:機(jī)器智能的 推動者——深藍(lán)和沃森30 本章小結(jié)32 擴(kuò)展閱讀32 參考文獻(xiàn)33 復(fù)習(xí)題34 習(xí)題35 第2章 計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)表示37 2.1 引言37 2.2 按位計(jì)數(shù)系統(tǒng)37 2.3 不同進(jìn)制之間的轉(zhuǎn)換38 2.3.1 無符號整數(shù)的轉(zhuǎn)換38 2.3.2 小數(shù)的轉(zhuǎn)換40 2.3.3 2的冪次作為基數(shù)的計(jì)數(shù)系統(tǒng)之間的轉(zhuǎn)換41 2.4 有符號整數(shù)表示42 2.4.1 原碼42 2.4.2 補(bǔ)碼系統(tǒng)45 2.4.3 有符號數(shù)的移碼表示49 2.4.4 無符號數(shù)與有符號數(shù)50 2.4.5 計(jì)算機(jī)、算術(shù)和布斯算法50 2.4.6 進(jìn)位和溢出53 2.4.7 使用移位進(jìn)行二進(jìn)制乘法和除法54 2.5 浮點(diǎn)數(shù)表示55 2.5.1 一個簡單的模型55 2.5.2 浮點(diǎn)運(yùn)算57 2.5.3 浮點(diǎn)誤差58 2.5.4 IEEE- 754浮點(diǎn)標(biāo)準(zhǔn)59 2.5.5 表數(shù)范圍、精度和準(zhǔn)確度60 2.5.6 有關(guān)浮點(diǎn)數(shù)的其他問題61 2.6 字符編碼62 2.6.1 二進(jìn)制編碼的十進(jìn)制63 2.6.2 EBCDIC64 2.6.3 ASCII64 2.6.4 Unicode65 2.7 錯誤檢測與糾錯67 2.7.1 循環(huán)冗余校驗(yàn)67 2.7.2 漢明碼69 2.7.3 里德-所羅門糾錯碼74 本章小結(jié)74 擴(kuò)展閱讀75 參考文獻(xiàn)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 布爾表達(dá)式89 3.2.2 布爾代數(shù)的基本定律90 3.2.3 化簡布爾表達(dá)式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)機(jī)108 3.6.5 時序電路示例112 3.6.6 時序邏輯的應(yīng)用:卷積編碼和維特比檢測115 3.7 電路設(shè)計(jì)119 本章小結(jié)119 擴(kuò)展閱讀120 參考文獻(xiàn)120 復(fù)習(xí)題121 習(xí)題122 特別關(guān)注:卡諾圖128 第4章 一個簡單的計(jì)算機(jī)模型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 指令集的擴(kuò)展161 4.13 關(guān)于譯碼的討論:硬連線和微程序控制166 4.13.1 機(jī)器控制166 4.13.2 硬連線控制169 4.13.3 微程序控制171 4.14 實(shí)際的計(jì)算機(jī)體系結(jié)構(gòu)174 4.14.1 Intel體系結(jié)構(gòu)175 4.14.2 MIPS體系結(jié)構(gòu)179 本章小結(jié)181 擴(kuò)展閱讀182 參考文獻(xiàn)183 復(fù)習(xí)題184 習(xí)題185 第5章 仔細(xì)審視指令集架構(gòu)192 5.1 引言192 5.2 指令格式192 5.2.1 指令集設(shè)計(jì)決策192 5.2.2 小端和大端方式193 5.2.3 CPU內(nèi)部的存儲:堆棧和寄存器195 5.2.4 操作數(shù)個數(shù)和指令長度196 5.2.5 擴(kuò)展操作碼199 5.3 指令類型202 5.3.1 數(shù)據(jù)傳送202 5.3.2 算術(shù)運(yùn)算202 5.3.3 布爾邏輯運(yùn)算指令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)實(shí)例210 5.6.1 Intel211 5.6.2 MIPS211 5.6.3 Java虛擬機(jī)212 5.6.4 ARM215 本章小結(jié)216 擴(kuò)展閱讀217 參考文獻(xiàn)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)缺點(diǎn)253 6.5.5 分段253 6.5.6 分段和分頁的組合254 6.6 存儲器管理實(shí)例254 本章小結(jié)255 擴(kuò)展閱讀255 參考文獻(xiàn)256 復(fù)習(xí)題256 習(xí)題257 第7章 輸入/輸出和存儲系統(tǒng)263 7.1 引言263 7.2 I/O及其性能263 7.3 阿姆達(dá)爾定律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 藍(lán)光光盤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 擴(kuò)展閱讀300 參考文獻(xiàn)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è)計(jì)332 8.2.3 操作系統(tǒng)的服務(wù)332 8.3 保護(hù)環(huán)境335 8.3.1 虛擬機(jī)336 8.3.2 子系統(tǒng)和分區(qū)337 8.3.3 保護(hù)環(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 擴(kuò)展閱讀356 參考文獻(xiàn)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 超標(biāo)量和超長指令字368 9.4.2 向量處理器369 9.4.3 互連網(wǎng)絡(luò)370 9.4.4 共享存儲器的多處理器373 9.4.5 分布式計(jì)算375 9.5 其他的并行處理方法377 9.5.1 數(shù)據(jù)流計(jì)算377 9.5.2 神經(jīng)網(wǎng)絡(luò)379 9.5.3 脈動陣列381 9.6 量子計(jì)算382 本章小結(jié)384 擴(kuò)展閱讀385 參考文獻(xiàn)385 復(fù)習(xí)題387 習(xí)題388 第10章 嵌入式系統(tǒng)專題390 10.1 引言390 10.2 嵌入式硬件概述391 10.2.1 標(biāo)準(zhǔn)的嵌入式系統(tǒng)硬件391 10.2.2 可重構(gòu)硬件394 10.2.3 定制設(shè)計(jì)的嵌入式硬件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 擴(kuò)展閱讀408 參考文獻(xiàn)409 復(fù)習(xí)題410 習(xí)題410 第11章 性能測量和分析412 11.1 引言412 11.2 計(jì)算機(jī)性能公式412 11.3 數(shù)學(xué)準(zhǔn)備工作413 11.3.1 均值的含義413 11.3.2 統(tǒng)計(jì)學(xué)和語義417 11.4 基準(zhǔn)測試418 11.4.1 時鐘頻率、MIPS和FLOPS419 11.4.2 綜合測試基準(zhǔn):Whetstone、Linpack和Dhrystone420 11.4.3 SPEC基準(zhǔn)421 11.4.4 事務(wù)處理性能委員會基準(zhǔn)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 擴(kuò)展閱讀438 參考文獻(xiàn)439 復(fù)習(xí)題440 習(xí)題440 第12章 網(wǎng)絡(luò)的組成和體系結(jié)構(gòu)444 12.1 引言444 12.2 早期的商用計(jì)算機(jī)網(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 交換機(jī)470 12.6.6 網(wǎng)橋和網(wǎng)關(guān)470 12.6.7 路由器和路由471 12.7 因特網(wǎng)
你還可能感興趣
我要評論
|