計算機組成與體系結構(原書第4版)》

      網友投稿 1271 2025-04-04

      計算機科學叢書

      計算機組成與體系結構

      (原書第4版)

      The Essentials of Computer Organization and

      Architecture,Fourth Edition

      [美] 琳達·納爾(Linda Null)

      朱莉婭·洛博(Julia Lobur)賓夕法尼亞州立大學 著

      張 鋼 魏繼增 李雪威天津大學 李春閣 何 穎天津大學仁愛學院 譯

      出版者的話

      The Essentials of Computer Organization and Architecture,Fourth Edition

      文藝復興以來,源遠流長的科學精神和逐步形成的學術規范,使西方國家在自然科學的各個領域取得了壟斷性的優勢;也正是這樣的優勢,使美國在信息技術發展的六十多年間名家輩出、獨領風騷。在商業化的進程中,美國的產業界與教育界越來越緊密地結合,計算機學科中的許多泰山北斗同時身處科研和教學的最前線,由此而產生的經典科學著作,不僅擘劃了研究的范疇,還揭示了學術的源變,既遵循學術規范,又自有學者個性,其價值并不會因年月的流逝而減退。

      近年,在全球信息化大潮的推動下,我國的計算機產業發展迅猛,對專業人才的需求日益迫切。這對計算機教育界和出版界都既是機遇,也是挑戰;而專業教材的建設在教育戰略上顯得舉足輕重。在我國信息技術發展時間較短的現狀下,美國等發達國家在其計算機科學發展的幾十年間積淀和發展的經典教材仍有許多值得借鑒之處。因此,引進一批國外優秀計算機教材將對我國計算機教育事業的發展起到積極的推動作用,也是與世界接軌、建設真正的世界一流大學的必由之路。

      機械工業出版社華章公司較早意識到“出版要為教育服務”。自1998年開始,我們就將工作重點放在了遴選、移譯國外優秀教材上。經過多年的不懈努力,我們與Pearson、McGraw- Hill、Elsevier、MIT、John Wiley & Sons、Cengage等世界著名出版公司建立了良好的合作關系,從它們現有的數百種教材中甄選出Andrew S.Tanenbaum、Bjarne Stroustrup、Brian W.Kernighan、Dennis Ritchie、Jim Gray、Afred V.Aho、John E.Hopcroft、Jeffrey D.Ullman、Abraham Silberschatz、William Stallings、Donald E.Knuth、John L.Hennessy、Larry L.Peterson等大師名家的一批經典作品,以“計算機科學叢書”為總稱出版,供讀者學習、研究及珍藏。大理石紋理的封面,也正體現了這套叢書的品位和格調。

      華章網站:www.hzbook.com

      電子郵件:hzjsj@hzbook.com

      聯系電話:(010)88379604

      聯系地址:北京市西城區百萬莊南街1號

      郵政編碼:100037

      譯者序

      The Essentials of Computer Organization and Architecture,Fourth Edition

      本書包括13章和一個附錄。第1章是一般性的歷史概述。第2章介紹數字和字符信息的表示方法。第3章介紹數字邏輯的經典表示及其與布爾代數的關系。第4章介紹計算機組成和體系結構的基本概念。第5章深入講解指令集架構。第6章是基本存儲器系統的概念。第7章介紹I/O原理、總線和外部存儲設備。第8章介紹編譯器、程序與體系結構的關系。第9章概述近年來出現的其他體系結構。第10章介紹嵌入式系統。第11章介紹各種性能分析和管理問題。第12章介紹網絡的組成和體系結構。第13章介紹I/O架構。附錄介紹數據結構的基本概念。

      本書第1章、第12章、第13章、前言、附錄A、精選習題答案與提示由天津大學計算機科學與技術學院張鋼翻譯,第2章和第3章由天津大學仁愛學院何穎翻譯,第4章和第7章由天津大學仁愛學院李春閣翻譯,第5章、第6章和第11章由天津大學計算機科學與技術學院李雪威翻譯,第8~10章由天津大學計算機科學與技術學院魏繼增翻譯。天津大學仁愛學院楊志奇審閱修改了第3章,天津大學計算機科學與技術學院魏繼增審閱修改了第2~4章和第7章。天津大學計算機科學與技術學院張鋼審閱修改了全書。

      盡管我們從事計算機組成原理和計算機體系結構教學和科研工作多年,而且在翻譯過程中始終本著認真負責的態度,對一些章節的翻譯也頗費心思,在尊重原著的前提下,謹慎修改了原著出現的一些錯誤,力求翻譯準確,但是翻譯中的錯誤之處在所難免,敬請廣大讀者不吝賜教和批評指正。

      譯 者

      2018年12月

      前 言

      The Essentials of Computer Organization and Architecture,Fourth Edition

      致學生

      這是一本關于計算機組成與體系結構的書。它重點研究處理數字信息所需要的各種組件的功能和設計。我們把計算系統分成一系列的層次,從低層的硬件到更高層的軟件,包括匯編程序和操作系統。這些層構成了虛擬機的層次結構。關于計算機組成的研究主要集中在這種層次結構上,包括如何劃分所涉及的層次和如何實現每個層次。關于計算機體系結構的研究主要集中在硬件和軟件之間的接口上,強調系統的結構和行為。本書中包含的主要信息涉及計算機硬件、計算機組成和體系結構以及它們與軟件性能的關系。

      學生總是問,“如果我是一名計算機科學專業的學生,我必須學習計算機硬件嗎?那不是計算機工程師要學的嗎?為什么我要關心計算機內部是什么樣子呢?”作為計算機的使用者,我們可能不必關心計算機內部是什么樣子的,就像開車時我們不需要知道汽車發動機下面是什么樣子一樣。在不理解高級語言程序如何執行的情況下,我們當然能寫高級語言程序;在不理解各種應用程序包實際如何工作的情況下,我們也可以使用各種應用程序包。但是,當需要使寫出來的程序變得更快和更有效,或者正在使用的應用程序沒有達到要求時,我們該怎么辦?作為計算機科學家,為了解決這些問題我們需要對計算機系統本身有基本的理解。

      在計算機系統中,計算機硬件與程序和軟件組件的許多方面之間有一種基本的關系。為了寫出好軟件,理解整個計算機系統是非常重要的。理解硬件能夠幫助你解釋有時潛入程序中的神秘錯誤,如分段錯誤和總線錯誤。高級程序員必須具備的計算機組成和計算機體系結構的知識水平,取決于所要完成的任務。

      例如,在寫編譯器程序時,你必須理解運行所編譯的程序的特定硬件。一些在硬件中使用的思想(如流水線)可能適合于編譯技術,從而使編譯器更快和更高效。對大型復雜的實時系統建模時,你必須理解浮點運算是如何實現和如何工作的(它們不一定是同一回事)。在為視頻設備、磁盤或其他I/O設備寫驅動程序時,一般來說,你需要很好地理解I/O接口和計算機體系結構。如果你想做嵌入式系統方面的工作,由于嵌入式系統通常是非常受資源約束的,你必須理解所有的時間、空間和價格的權衡。在進行硬件、網絡或特殊算法方面的研究和提出硬件、網絡或特殊算法方面的建議時,你必須理解基準測試并且學習如何表示性能結果。在買硬件之前,你需要理解基準測試和其他可以巧妙處理性能結果以“證明”一個系統比另一個系統更好的所有方法。不管我們擅長的專業領域是什么,作為計算機科學家,理解硬件如何與軟件交互是非常重要的。

      你可能會奇怪,為什么英文書名中寫著essentials的書會這么厚。原因有兩個方面。首先,計算機組成的主題是寬泛和日益發展的。其次,在這個迅速發展的信息海洋中哪些主題是真正的基礎,哪些主題只是有助于了解這個領域,幾乎沒有共識。這本書的一個目的是符合由ACM和IEEE聯合發布的關于計算機體系結構課程指南的要求。這個指南包含了專家認可的關于計算機組成和體系結構主題的基礎核心知識。

      我們已經擴大了ACM/IEEE建議的主題,增加了我們認為對繼續研究計算機科學和提高專業水平有用的(未必是基礎的)主題。我們認為這些主題將有助于你繼續在操作系統、編譯程序、數據庫管理和數據通信等計算機科學領域的學習。本書中包含的其他主題將有助于理解實際系統在現實生活中是如何工作的。

      我們希望你閱讀本書是一次愉快的經歷,并且花時間深入鉆研我們提供的一些材料。我們的目的是在你正式完成課程后,這本書仍將是有用的參考書。雖然我們給了你大量的信息,但這僅是你學習和職業生涯的基礎。成功的計算機專業人員會不斷深入了解計算機工作原理。

      致教師

      本書是在賓夕法尼亞州立大學哈里斯堡校區教兩個班的計算機組成和體系結構課程的基礎上形成的。隨著計算機科學課程的發展,我們發現不僅需要修改課程中所教的材料,而且需要把課程從連續開設兩個學期壓縮為一個學期(三學分)。許多其他學校也已經認識到需要壓縮教材,以便為新出現的主題騰出空間。這門新課程以及這本教材主要是針對計算機科學專業的,旨在討論計算機科學專業學生必須熟悉的計算機組成和體系結構中的主題。本書整合了這些領域的基本原理,為計算機科學專業的學生提供了必要的廣度,同時為在計算機科學領域繼續學習的學生提供了必要的深度。

      在寫本書時,我們的主要目標是改變講授計算機組成和體系結構課程的典型方式。計算機科學專業的學生在學完計算機組成和體系結構課程之后,不僅要了解構建數字計算機的重要基本概念,而且還要理解這些概念如何應用于現實世界。這些概念應該超越特定廠家的術語和設計。事實上,學生應該能夠理解給定的特定概念并且能將其翻譯成一般概念,反之亦然。此外,學生必須為進一步的專業學習打下堅實的基礎。

      本書介紹的主題是每個計算機科學專業的學生都應該接觸、熟悉或精通的。我們并沒有期望學生能完全掌握所有主題。然而,我們堅信有些主題必須要掌握,有些主題必須有一定程度的了解,有些主題接觸一下就足夠了。

      我們不認為孤立地研究一般性的原理就可以把這些主題學到足夠深入。因此,我們提出的主題是一套完整的解決方案,而不是一個個信息的簡單集合。我們認為書中的解釋、例子、練習、教程和仿真器全部結合起來,為學生提供了整體的學習體驗,這種學習體驗在一定程度上揭示了現代數字計算機的內部工作方式。

      我們以一種非正式的風格寫了這本書,省略了不必要的術語,語言簡潔,并且避免了不必要的抽象,希望能提高學生的學習熱情。我們也擴大了在主流體系結構書中能夠找到的經典主題的范圍,包括系統軟件、操作系統的簡要介紹、性能問題、其他體系結構和對網絡的簡明介紹,因為這些主題與計算機硬件密切相關。像大多數書一樣,我們選擇了一種體系結構模型,但它是一個我們在頭腦中簡單設計的模型。

      與CS2013的關系

      2013年10月,ACM/IEEE聯合工作組公布了計算機科學課程計劃2013(CS2013)。雖然我們主要關注計算機體系結構知識域,但是新指南建議通過這門課程整合核心知識。因此,我們也要關注本書所講的體系結構之外的更多知識域。

      CS2013是對CS2008的全面修訂,主要聚焦于計算機科學課程計劃中的基礎概念,同時為了滿足個別機構的需求而仍然保留了足夠的靈活性。指南中采用了核心一級和核心二級主題的概念,并加入了選修主題。核心一級主題是每個計算機科學課程計劃中都應該包含的主題。核心二級主題是計算機科學課程計劃中應該包含90%~100%的主題。選修主題是課程計劃向廣度和深度擴展的主題。指南中以課時方式列出了對每個主題建議的范圍。

      從CS2008到CS2013,在體系結構和組成(AR)知識域方面的主要變化是課時數從36降到16,然而引入了一個新的系統基礎(SF)知識域,它包括以前在AR模塊中給出的一些概念(包括硬件組成和體系結構)。若想了解每個知識域所包括內容的更多信息,讀者可以參考CS2013指南(http://www.acm.org/education/curricula- recommendations)。

      本書(原書第4版)除了整合來自其他知識單元的材料外,與ACM/IEEE CS2013指南中關于計算機組成和體系結構的部分是直接相關的。表P- 1列出了本教材與AR知識域中的8個主題的對應關系。對于其他知識域,僅列出本教材所覆蓋的主題。

      表P-1 本書覆蓋的ACM/IEEE CS2013主題

      編寫本書的目的

      市場上已經有很多關于計算機組成和體系結構方面的教材。在講授這門課程超過35年的時間里,我們已經使用過許多非常好的教材。然而,在每次講授這門課程時,內容都變化了,最終我們發現要寫大量的課程講義來補充課堂上必須講授的素材。課程素材正在從用計算機工程方法討論組成和體系結構,變成用計算機科學方法對這些主題進行討論。當決定把計算機組成課程和計算機體系結構課程合并為一門課程時,我們根本找不到覆蓋專業所必需的、從計算機科學角度編寫的、不使用特定機器術語的并且在講授這些主題之前可以激發學生積極性的教材。

      在本教材中,我們希望傳達現代計算系統開發中使用的設計思想,以及這種設計思想對計算機科學專業學生的影響。然而,學生在理解和領會有關設計的方方面面之前,必須掌握基本概念。大多數計算機組成和體系結構的教材都有相似的技術信息。然而,我們對這些信息的覆蓋水平以及與計算機科學專業學生相關的背景給予了特別的關注。例如,在本書中,當介紹具體例子時,我們會給出與個人計算機、企業系統和大型機相關的例子,因為這些系統類型都是最有可能遇到的。我們避免類似的書中存在的“個人計算機偏見”,希望學生理解各種平臺在當今的自動化基礎設施中的不同之處、相似之處和所發揮的作用。很多時候,教材忘記了動機也許是學習中一個最重要的因素。為此,我們包括了許多實際的例子,同時試圖保持理論與應用之間的平衡。

      本書特色

      本書的很多特色都是為了強調計算機組成和體系結構中的各種概念,并使學生更容易理解相關材料。這些特色包括:

      補充材料。穿插在正文中的補充材料包括有趣的信息,這些信息超出了相應章的重點內容,方便讀者進一步探究這些材料。

      實際的例子。教材中整合了來自現實生活的例子,使學生更好地理解技術是如何與實際問題相結合的。

      小結。這個部分對每章的要點進行了簡明扼要的總結。

      擴展閱讀。這個部分為希望更詳細研究相關主題的讀者列出了額外的資源,并且包含了與該章主題相關的權威論文和書籍的引用。

      復習題。每章都包含一套復習題,方便讀者鞏固所學的知識。

      習題。每章都有可供選擇的練習,以強化所介紹的概念。

      精選習題答案與提示。習題中用菱形標示的問題都有答案。

      特別關注。這個部分為教師提供了額外的信息,例如卡諾圖和數據壓縮等。

      附錄。附錄提供了數據結構的簡要介紹,包括堆棧、鏈表和樹等主題。

      這本教材不僅融合了我們超過35年的教學經驗,而且還有30多年的行業經驗。因此,我們不僅強調計算機組成和體系結構的基本原理,而且把這些主題與實踐相結合。我們使用了現實生活中的例子,用于幫助學生理解這些基本概念如何應用于計算領域。

      Linda Null從艾奧瓦州立大學獲得了計算機科學碩士和博士學位,從西北密蘇里州立大學獲得了計算機科學教育碩士學位、數學教育碩士學位、數學和英語學士學位。她已經從事數學和計算機科學教學工作超過了35年,目前是賓夕法尼亞州立大學哈里斯堡校區計算機科學研究生課程協調員和課程副主席,從1995年開始她一直是那里的教師。她已經獲得了很多教學獎,包括賓夕法尼亞州立大學杰出教師獎和優秀教學獎。她感興趣的領域包括計算機組成和體系結構、操作系統、計算機科學教育和計算機安全。

      Julia Lobur是一名在計算機行業工作超過30年的從業者。她除了兼職教學工作外,還擔任過系統顧問、高級程序員/分析師、系統和網絡設計師、軟件開發經理和項目經理等職位。Julia獲得了計算機科學碩士學位,并且是一名IEEE認證的軟件開發專業人員。

      預備知識

      學生使用本教材前需要具有一年使用高級過程語言編寫程序的經驗,也應該學過一年的大學數學(微積分或離散數學)。本教材假定之前學生不了解計算機硬件。

      計算機組成和體系結構課程通常是本科生學習操作系統(學生必須知道存儲器層次結構、并發、異常和中斷)、編譯器(學生必須知道指令集、存儲器地址和鏈接)、網絡(學生必須理解系統的硬件,然后才能理解將這些部件連接在一起的網絡)以及任何高級計算機體系結構課程之前的選修課。

      本書的組織結構

      在本教材中對概念的介紹方式是一次嘗試,即簡明而全面地覆蓋我們認為對于計算機科學專業學生必要的主題。我們不認為最好的方式是“劃分”各種主題,因此,我們選擇了一種結構化的整合方式,使每個主題都包含在整個計算機系統的背景中。

      與許多流行的教材一樣,我們采用了自底向上的方法,即從數字邏輯層開始構建到應用層,應用層是學生在開始學習這門課程之前就應該熟悉的。當讀者到達應用層時,計算機組成和體系結構中必要的概念都已經呈現了。我們的目標是讓學生把本書中涵蓋的硬件知識與在程序設計導論課程中學到的概念聯系到一起,形成一個完整而全面的硬件和軟件如何組織在一起的畫面。最終,硬件理解程度對軟件設計和性能有重大的影響。如果學生能夠掌握硬件基本知識,將有助于成為更好的計算機科學家。

      計算機組成和體系結構中的概念對于計算機專業人員的許多日常工作是必需的。為了處理計算機專業人員應該了解的許多領域內的問題,我們采用從更高層次看計算機體系結構的方法,僅當理解一個特定概念需要低層信息時才給出這些信息。例如,當討論ISA時,在不同的案例研究背景中引入了許多與硬件相關的問題,這不僅區分而且也加強了與ISA設計相關的問題。

      本書包括13章和1個附錄,列舉如下:

      第1章對計算提供了一般性的歷史概述,指出了計算系統開發中的許多里程碑,讓讀者了解我們是如何達到當前的計算狀態的。本章介紹了必要的術語、計算機系統中的基本部件、計算機系統的各種邏輯層和馮·諾依曼計算機模型,提供了計算機系統的高層視圖,以及進一步研究的動機和必要的概念。

      第2章對計算機使用的表示數字和字符信息的各種方法提供了全面討論。一旦讀者接觸到進制和典型的數字表示技術(包括1的補碼、2的補碼和BCD碼等),就可以學習加、減、乘和除運算了。此外,也介紹了EBCDIC、ASCII和Unicode字符表示法,以及定點和浮點表示法。對于錯誤檢測與糾錯進行了簡要介紹。在“特別關注”中描述了數據記錄和傳輸的編碼。

      第3章是數字邏輯的經典表示及其與布爾代數的關系。本章詳細介紹了組合邏輯和時序邏輯,以使讀者能夠理解更復雜的MSI(中等規模集成)電路(如譯碼器)的邏輯組成。更復雜的電路(如總線和存儲器)也包括在內。優化和卡諾圖包含在“特別關注”中。

      第4章解釋了基本的計算機組成并且介紹了許多基本概念,包括取指-譯碼-執行周期、數據通路、時鐘和總線、寄存器傳輸表示和CPU。介紹了一種非常簡單的MARIE體系結構及其ISA,使讀者對基本體系結構(包括程序執行)有了全面理解。MARIE展示了經典的馮·諾依曼設計,包括一個程序計數器、一個累加器、一個指令寄存器、4096字節的存儲器和兩種尋址方式。為了強化早些時候提出的指令格式、指令模式、數據格式和控制等概念,還介紹了匯編語言程序設計。本書不是一本匯編語言教材,也不是為匯編語言程序設計而設計的實踐課程。介紹匯編的主要目的是進一步從總體上理解計算機體系結構。我們為MARIE提供了一個仿真器,這樣就可以在MARIE體系結構上編寫、編譯和運行匯編語言程序了。本章介紹和比較了控制的兩種方法:硬連線和微程序。最后,比較了Intel和MIPS體系結構,以強化本章介紹的概念。

      第5章對指令集架構進行了更深入的考察,包括指令格式、指令類型和尋址方式,還介紹了指令級流水線。給出了實際的ISA(包括Intel和MIPS技術、ARM、Java),以強化本章中的概念。

      第6章討論了存儲器的基本概念,如RAM和各種存儲設備,也討論了更高級的存儲器層次結構的概念,包括高速緩存和虛擬存儲器。本章對高速緩存的直接映射、全相聯映射和組相聯映射技術進行了全面介紹,還詳細介紹了分頁和分段、TLB以及與每種技術相關的各種算法和設備。

      第7章介紹了I/O原理、總線通信協議、典型的外部存儲設備(如磁盤和光盤),以及每種設備可用的各種格式,也涉及DMA、編程控制I/O和中斷。另外介紹了在設備之間交換信息的各種技術,詳細介紹了RAID體系結構。在“特別關注”中介紹了各種數據壓縮格式。

      第8章討論了各種可用的編程工具(如編譯器和匯編程序)以及它們與程序所運行的機器體系結構之間的關系。本章的目標是把計算機系統程序員的觀點與底層機器的實際硬件和體系結構聯系在一起。另外,介紹了操作系統,但是僅涵蓋應用到一個系統中的體系結構和組成方面的更多細節(如資源使用和保護、陷阱和中斷以及各種其他服務)。

      第9章對近年來出現的其他體系結構進行了概述,涵蓋RISC、Flynn分類法、并行處理器、指令級并行、多處理器、互連網絡、共享存儲系統、高速緩存一致性、存儲模型、超標量機、神經網絡、數據流計算機、量子計算和分布式體系結構。本章的主要目的是幫助讀者認識到我們不局限于馮·諾依曼體系結構,并引導讀者考慮性能問題,為下一章做好準備。

      第10章討論了前面章節中沒有涵蓋的嵌入式系統中的概念和主題。具體來說,本章關注嵌入式硬件和組件、嵌入式系統設計主題、嵌入式軟件構建基礎和嵌入式操作系統特征。

      第11章涉及各種性能分析和管理問題,介紹了必要的數學知識,隨后討論了MIPS、FLOPS、基準測試和各種優化問題。計算機科學家應該熟悉這些優化問題,包括分支預測、推測執行和循環優化。

      第12章關注網絡的組成和體系結構,包括網絡組件和協議,在因特網背景中介紹了OSI模型和TCP/IP。本章的目的絕不是全面介紹網絡,而是將計算機體系結構置于相對于網絡體系結構的正確環境中。

      第13章介紹了一些流行的適合于大型和小型系統的I/O架構,包括SCSI、ATA、IDE、SATA、PCI、USB和IEEE 1394。本章也概述了存儲區域網絡和云計算。

      附錄A是關于數據結構的簡短介紹,因為在一些情況下學生可能需要復習堆棧、隊列和鏈表等主題。

      教學時可以按照書中的先后順序進行。然而,如果有需要,教師可以修改這個順序以便更好地適合于給定的課程。圖P- 1給出了各章節之間的關系。

      第4版中的新內容

      自本書第3版出版以來,計算機體系結構領域在不斷發展。在第4版中,除了前面三版中已經介紹的主題外,我們納入了許多新變化。在第4版中,我們的目標是更新內容和參考文獻、增加新的材料、基于讀者的評論擴展當前的討論并且增加核心章節中練習的數量。雖然不能列出這一版中所有的變化,但是下面的列表突出了讀者可能感興趣的主要變化。

      圖P-1 各章之間的關系

      第1章已經更新,包括新的例子和解釋、平板電腦、計算即服務(云計算)和認知計算。硬件概述已經擴展和更新(值得注意的是,刪除了對CRT的討論,增加了對圖形卡的討論)并且增加了補充材料。更新了非馮·諾依曼模型,并且新增了并行性部分。章后練習的數量增加了26%。

      第2章包含移碼表示法。之前的簡單模型已經修改為使用標準格式,并且增加了更多的例子。本章練習的數量增加了44%。

      第3章已經改用“′”號代替上劃線(_

      )表示非運算符。添加了時序圖,以幫助解釋時序電路的操作。擴展了FSM部分的內容,包括附加練習。

      第4章擴展了存儲器組織(包括存儲器交叉存取)內容,包括附加的例子和練習。我們現在使用“0x”符號表示十六進制。在硬連線和微程序控制方面增加了更多細節的討論,并更新了MARIE硬連線控制單元的邏輯圖和MARIE微程序時序圖。

      第5章除了新的ARM處理器部分外,還擴展了大端和小端內容,包括附加例子和練習。

      第6章更新了圖,擴展了全相聯存儲器的討論,包括附加的例子,更明確討論了高速緩存。所有例子都更新了,用十六進制地址取代了十進制地址。本章現在包含的例子比第3版多20%。

      第7章擴展了固態硬盤和新興的數據存儲設備(如碳納米管和憶阻器)的討論,還增加了RAID的內容。除了章后練習數量增加20%外,還增加了MP3壓縮方面的內容。

      第8章已經更新,以反映系統軟件領域的發展。

      第9章擴展討論了RISC與CISC(把兩者的比較融入了移動領域),還討論了量子計算(包括技術奇點的討論)。

      第10章包含對嵌入式操作系統的更新材料。

      第12章已經更新,刪除了過時的材料,整合了新材料。

      第13章擴展和更新了USB的內容,擴展了云存儲的內容,刪除了過時的材料。

      讀者對象

      本書最初是為計算機科學專業本科生的計算機組成與體系結構課程編寫的。雖然本書面向計算機科學專業,但是也適用于IS和IT專業的學生。

      本書包含的材料對于典型的一學期課程綽綽有余。但是,一般學生無法在一學期課程中掌握本書的所有材料。如果教師計劃覆蓋所有主題,那么最理想的是連續兩個學期的課程。這種組織方式使教師可以根據學生的經驗和需求,以不同深度覆蓋重要的主題。教師覆蓋這些主題所需時間的建議如表P- 2所示,其中還列出了完成每一章的相應期望程度。XII我們希望本書在正式課程學完后的很長一段時間里都會成為有用的參考書。

      表P- 2 建議學時

      教學模型:MARIE

      在關于計算機組成與體系結構的書中,體系結構模型的選擇既會影響教師,也會影響學生。如果模型太復雜,那么教師和學生都會陷入與課堂所講概念無關的細節中。雖然真實的體系結構令人感興趣,但是把這些體系結構用于入門課程中往往會有太多的獨特之處。真實的體系結構每天都在變,這使得事情變得更加復雜。另外,很難找到一本書,其所包含的模型與某個學院中的本地計算平臺相匹配,值得注意的是,這個平臺也可能每年都會變化。

      為了緩解這些問題,我們設計了專門用于教學的簡單體系結構MARIE。利用MARIE,學生學習計算機組成與體系結構的基本概念(包括匯編語言)時,不會陷入存在于真實體系結構中的不必要和混亂的細節中。盡管MARIE很簡單,但是它卻仿真了一個功能系統。MarieSim是MARIE機的仿真器,具有用戶友好的圖形用戶界面,利用它,學生可以創建和編輯源代碼,將源代碼轉換為機器碼,運行機器碼,調試程序。

      具體而言,MarieSim具有以下特點:

      對第4章中引入的MARIE匯編語言的支持

      用于程序創建和修改的集成文本編輯器

      十六進制機器語言目標代碼

      帶有單步模式、斷點、暫停、恢復以及寄存器與存儲器跟蹤的集成調試器

      顯示MARIE存儲器中4096個地址的圖形存儲器監控器

      MARIE寄存器的圖形顯示

      在程序執行期間加亮指令

      用戶控制的執行速度

      狀態消息

      用戶可見的符號表

      讓用戶改正任何錯誤和自動重新匯編而不改變環境的交互式匯編器

      在線幫助

      可選的內核轉儲,用戶可以指定存儲器范圍

      用戶可以修改的幀大小

      平緩的學習曲線,學生可以快速學會使用這個系統

      由于MarieSim是使用Java語言編寫的,所以這個系統可以移植到任何使用Java虛擬機(JVM)的平臺上。學過Java的學生可以查看這個仿真器的源代碼,甚至可以對仿真器的簡單功能進行改進和強化。

      圖P-2是MarieSim的圖形化環境,圖中展示了MARIE機仿真器的圖形化環境。該截圖包含4個部分:菜單欄、中央監控區、存儲器監控器和消息區。

      圖P-2 MarieSim的圖形化環境

      菜單選項允許用戶控制MARIE仿真器系統的活動和行為。這些選項包括加載、啟動、停止、設置斷點和暫停已經用MARIE匯編語言編寫好的程序。

      MARIE仿真器在一個簡單環境中展示了匯編過程、加載和執行。用戶能夠直接看到程序的匯編語言狀態,以及相應的機器碼(十六進制)。這些指令的地址也可顯示出來,用戶能夠在任何時間看到存儲器的任何部分。加亮用于指示程序的初始加載地址,以及當程序運行時所執行的當前指令。寄存器和存儲器的圖形顯示使學生可以看到指令是如何引起寄存器和存儲器的值變化的。

      如果發現了錯誤

      我們試圖使本書準確,但是即使已經進行了多次檢查,也還是會有錯誤。我們非常感謝發現任何錯誤的讀者,意見和建議請發送電子郵件到ECOA@jblearning.com。

      致謝

      一本書的完成不可能是一兩個人努力的結果,本書也不例外。我們意識到編寫一本教材是一項艱巨的任務,只有共同努力才可能完成,而且我們發現逐一感謝幫助本書的每個人是不可能的。在下面的感謝中,如果無意中遺漏了任何人,那么我們非常抱歉。

      很多人對本書做出了貢獻。我們首先感謝所有審校者對以前版本仔細的評價和深思熟慮的書面評論。另外,我們對許多通過電子郵件發送有用想法和建議的讀者表示感謝。雖然在這里我們不可能提到所有人,但是我們特別感謝John MacCormick(Dickinson學院)和Jacqueline Jones(Brooklyn學院)細致入微的審閱和大量的建議。我們特別感謝Karishma Rao和Sean Willeford在制作高質量存儲器軟件模塊中投入的時間和精力。

      我們也要感謝Jones & Bartlett Learning,與他們的密切合作使得本書得以出版。我們非常感謝Tiffany Silter、Laura Pagluica和Amy Rose的敬業精神、奉獻和努力工作。

      XIV我(Linda Null)非常感謝丈夫Tim Wahls,他對于我第四次寫書而不能料理家務繼續保持耐心,對本書的內容坦率地提出了修改意見。他承擔了所有做飯的工作,忍受了由于我寫本書所做的妥協,包括錯過了每年的飛釣假期,以及使我們的馬長期處于無人喂養的狀態。我覺得嫁給這么好的男人真是太幸運了。我衷心感謝我的恩師Merry McDonald,他教會了我學習和教學的價值和快樂,以及誠實正直地做事。最后,我要向Julia Lobur表達我最深切的感謝,因為沒有她,這本書及其附帶的軟件就不可能成為現實。和她一起工作既愉快又榮幸。

      我(Julia Lobur)非常感謝我的愛人Marla Cattermole。Marla Cattermole通過寬容和盡責使這項工作成為可能,用烹飪給我生活上的支持,用智慧給我精神上的支持,并在自己的事業上努力工作,在許多方面彌補了我的不足。我也想對Linda Null表達我深深的感激:首先是對她在計算機科學教育領域非常卓越的貢獻和對學生的奉獻,其次是對她給了我與她共同編寫教材的機會。

      目 錄

      The Essentials of Computer Organization and Architecture,Fourth Edition

      出版者的話

      譯者序

      前言

      第1章 緒論1

      1.1 引言1

      1.2 計算機的主要部件2

      1.3 一個實例系統:吃力地讀專業詞匯3

      1.4 標準組織12

      1.5 發展歷史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 第四代:超大規模集成電路計算機(1980~)20

      1.5.6 摩爾定律22

      1.6 計算機層次結構23

      1.7 云計算:計算即服務24

      1.8 馮·諾依曼模型26

      1.9 非馮·諾依曼模型28

      1.10 并行處理器和并行計算29

      1.11 并行性:機器智能的

      推動者——深藍和沃森30

      本章小結32

      擴展閱讀32

      參考文獻33

      復習題34

      習題35

      第2章 計算機系統中的數據表示37

      2.1 引言37

      2.2 按位計數系統37

      2.3 不同進制之間的轉換38

      2.3.1 無符號整數的轉換38

      2.3.2 小數的轉換40

      2.3.3 2的冪次作為基數的計數系統之間的轉換41

      2.4 有符號整數表示42

      2.4.1 原碼42

      2.4.2 補碼系統45

      2.4.3 有符號數的移碼表示49

      2.4.4 無符號數與有符號數50

      2.4.5 計算機、算術和布斯算法50

      2.4.6 進位和溢出53

      2.4.7 使用移位進行二進制乘法和除法54

      2.5 浮點數表示55

      2.5.1 一個簡單的模型55

      2.5.2 浮點運算57

      2.5.3 浮點誤差58

      2.5.4 IEEE- 754浮點標準59

      2.5.5 表數范圍、精度和準確度60

      2.5.6 有關浮點數的其他問題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 循環冗余校驗67

      2.7.2 漢明碼69

      2.7.3 里德-所羅門糾錯碼74

      本章小結74

      擴展閱讀75

      參考文獻75

      復習題76

      習題76

      特別關注:數據記錄和傳輸的編碼82

      第3章 布爾代數與數字邏輯88

      3.1 引言88

      3.2 布爾代數89

      3.2.1 布爾表達式89

      3.2.2 布爾代數的基本定律90

      3.2.3 化簡布爾表達式91

      3.2.4 求反92

      3.2.5 表示布爾函數93

      3.3 邏輯門94

      3.3.1 邏輯門符號94

      3.3.2 通用邏輯門95

      3.3.3 多輸入邏輯門96

      3.4 數字組件96

      3.4.1 數字電路及其與布爾代數的關系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 觸發器105

      3.6.4 有限狀態機108

      3.6.5 時序電路示例112

      3.6.6 時序邏輯的應用:卷積編碼和維特比檢測115

      3.7 電路設計119

      本章小結119

      擴展閱讀120

      參考文獻120

      復習題121

      習題122

      特別關注:卡諾圖128

      第4章 一個簡單的計算機模型MARIE139

      4.1 引言139

      4.2 CPU基本知識和組織結構139

      4.2.1 寄存器139

      4.2.2 ALU140

      4.2.3 控制單元140

      4.3 總線140

      4.4 時鐘143

      4.5 輸入/輸出子系統144

      4.6 存儲器的組成和尋址方式145

      4.7 中斷148

      4.8 MARIE149

      4.8.1 組織結構149

      4.8.2 寄存器和總線150

      4.8.3 指令集架構151

      4.8.4 寄存器傳輸表示153

      4.9 指令的執行過程155

      4.9.1 取指-譯碼-執行周期155

      4.9.2 中斷和指令周期155

      4.9.3 MARIE的I/O157

      4.10 一個簡單的程序157

      4.11 關于編譯程序的討論159

      4.11.1 編譯程序的作用159

      4.11.2 使用匯編語言的原因160

      4.12 指令集的擴展161

      4.13 關于譯碼的討論:硬連線和微程序控制166

      4.13.1 機器控制166

      4.13.2 硬連線控制169

      4.13.3 微程序控制171

      4.14 實際的計算機體系結構174

      4.14.1 Intel體系結構175

      4.14.2 MIPS體系結構179

      本章小結181

      擴展閱讀182

      參考文獻183

      復習題184

      習題185

      第5章 仔細審視指令集架構192

      5.1 引言192

      5.2 指令格式192

      5.2.1 指令集設計決策192

      5.2.2 小端和大端方式193

      5.2.3 CPU內部的存儲:堆棧和寄存器195

      5.2.4 操作數個數和指令長度196

      5.2.5 擴展操作碼199

      5.3 指令類型202

      5.3.1 數據傳送202

      5.3.2 算術運算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 數據類型204

      5.4.2 尋址方式205

      5.5 指令流水線207

      5.6 指令集架構實例210

      5.6.1 Intel211

      5.6.2 MIPS211

      5.6.3 Java虛擬機212

      5.6.4 ARM215

      本章小結216

      擴展閱讀217

      參考文獻218

      復習題218

      習題219

      第6章 存儲器224

      6.1 引言224

      6.2 存儲器類型224

      6.3 存儲器的層次結構225

      6.4 高速緩存227

      6.4.1 緩存映射策略229

      6.4.2 替換策略240

      6.4.3 有效訪問時間和命中率240

      6.4.4 發生緩存失效的時間241

      6.4.5 緩存寫策略241

      6.4.6 指令和數據緩存243

      6.4.7 緩存的級別244

      6.5 虛擬存儲器244

      6.5.1 分頁245

      6.5.2 使用分頁管理的有效訪問時間250

      6.5.3 匯總:使用緩存、TLB和分頁技術252

      6.5.4 分頁和虛擬存儲器的優缺點253

      6.5.5 分段253

      6.5.6 分段和分頁的組合254

      6.6 存儲器管理實例254

      本章小結255

      擴展閱讀255

      參考文獻256

      復習題256

      習題257

      第7章 輸入/輸出和存儲系統263

      7.1 引言263

      7.2 I/O及其性能263

      7.3 阿姆達爾定律263

      7.4 I/O體系結構266

      7.4.1 I/O控制方法267

      7.4.2 字符I/O與塊I/O271

      7.4.3 I/O總線操作272

      7.5 數據傳輸模式274

      7.5.1 并行數據傳輸275

      7.5.2 串行數據傳輸276

      7.6 磁盤技術277

      7.6.1 硬盤驅動器278

      7.6.2 固態硬盤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系統297

      7.10 數據存儲的未來298

      本章小結300

      擴展閱讀300

      參考文獻301

      復習題302

      習題303

      特別關注:數據壓縮308

      第8章 系統軟件327 8.1

      引言327

      8.2 操作系統327

      8.2.1 操作系統的歷史328

      8.2.2 操作系統的設計332

      8.2.3 操作系統的服務332

      8.3 保護環境335

      8.3.1 虛擬機336

      8.3.2 子系統和分區337

      8.3.3 保護環境和系統結構的演變339

      8.4 編程工具340

      8.4.1 匯編程序和匯編340

      8.4.2 鏈接器342

      8.4.3 動態鏈接庫342

      8.4.4 編譯器344

      8.4.5 解釋器346

      8.5 Java:以上全部346

      8.6 數據庫軟件351

      8.7 事務管理器354

      本章小結356

      擴展閱讀356

      參考文獻357

      復習題357

      習題358

      第9章 可供選擇的體系結構360

      9.1 引言360

      9.2 RISC設備361

      9.3 Flynn分類法365

      9.4 并行和多處理器體系結構367

      9.4.1 超標量和超長指令字368

      9.4.2 向量處理器369

      9.4.3 互連網絡370

      9.4.4 共享存儲器的多處理器373

      9.4.5 分布式計算375

      9.5 其他的并行處理方法377

      9.5.1 數據流計算377

      9.5.2 神經網絡379

      9.5.3 脈動陣列381

      9.6 量子計算382

      本章小結384

      擴展閱讀385

      參考文獻385

      復習題387

      習題388

      第10章 嵌入式系統專題390

      10.1 引言390

      10.2 嵌入式硬件概述391

      10.2.1 標準的嵌入式系統硬件391

      10.2.2 可重構硬件394

      10.2.3 定制設計的嵌入式硬件398

      10.3 嵌入式軟件概述403

      10.3.1 嵌入式系統的存儲器組織403

      10.3.2 嵌入式操作系統404

      10.3.3 嵌入式系統的軟件開發406

      本章小結407

      擴展閱讀408

      參考文獻409

      復習題410

      習題410

      第11章 性能測量和分析412

      11.1 引言412

      11.2 計算機性能公式412

      11.3 數學準備工作413

      11.3.1 均值的含義413

      11.3.2 統計學和語義417

      11.4 基準測試418

      11.4.1 時鐘頻率、MIPS和FLOPS419

      11.4.2 綜合測試基準:Whetstone、Linpack和Dhrystone420

      11.4.3 SPEC基準421

      11.4.4 事務處理性能委員會基準424

      11.4.5 系統仿真428

      11.5 CPU性能優化428

      11.5.1 分支優化429

      11.5.2 使用好的算法和簡單代碼431

      11.6 磁盤性能433

      11.6.1 理解問題433

      11.6.2 物理因素434

      11.6.3 邏輯因素434

      本章小結438

      擴展閱讀438

      《計算機組成與體系結構(原書第4版)》

      參考文獻439

      復習題440

      習題440

      第12章 網絡的組成和體系結構444

      12.1 引言444

      12.2 早期的商用計算機網絡444

      12.3 早期的學術和科研網絡:因特網的根源和體系結構444

      12.4 網絡協議I:ISO/OSI統一協議447

      12.4.1 一個小故事447

      12.4.2 OSI參考模型448

      12.5 網絡協議II:TCP/IP網絡體系結構451

      12.5.1 IPv4452

      12.5.2 IPv4的麻煩453

      12.5.3 傳輸控制協議456

      12.5.4 TCP的工作過程457

      12.5.5 IPv6460

      12.6 網絡組成464

      12.6.1 物理傳輸介質465

      12.6.2 接口卡469

      12.6.3 中繼器469

      12.6.4 集線器469

      12.6.5 交換機470

      12.6.6 網橋和網關470

      12.6.7 路由器和路由471

      12.7 因特網的脆弱性478

      本章小結479

      擴展閱讀479

      參考文獻480

      復習題480

      習題481

      第13章 選擇存儲系統和接口483

      13.1 引言483

      13.2 SCSI架構483

      13.2.1 “經典”并行SCSI484

      13.2.2 SCSI架構模型3486

      13.3 因特網SCSI492

      13.4 存儲區域網絡494

      13.5 其他I/O連接494

      13.5.1 并行總線:XT到ATA495

      13.5.2 串行ATA和串行連接的SCSI496

      13.5.3 外圍設備互連496

      13.5.4 串行接口USB496

      13.6 云存儲497

      本章小結498

      擴展閱讀499

      參考文獻500

      復習題500

      習題500

      附錄A 數據結構和計算機502

      精選習題答案與提示516

      5G教育 機器翻譯

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Excel表格怎么設置每頁都有打印標題行(如何在excel表格打印時每頁都有標題)
      下一篇:列 下拉選項(列寧格勒)
      相關文章
      色拍自拍亚洲综合图区| 精品亚洲视频在线| 在线观看亚洲精品国产| 韩国亚洲伊人久久综合影院| 亚洲国产日韩精品| 亚洲人成网站色在线观看| 亚洲人成在线精品| 亚洲第一成年人网站| 亚洲欧洲自拍拍偷综合| 亚洲精品乱码久久久久久下载| 自怕偷自怕亚洲精品| 一区二区三区亚洲| 亚洲视频一区网站| 亚洲国产精品成人精品小说| 91亚洲自偷在线观看国产馆| 亚洲区精品久久一区二区三区| 亚洲欧洲日韩综合| 亚洲成a人片7777| 亚洲中文字幕无码av在线| 亚洲av无码片在线观看| 亚洲综合中文字幕无线码| 亚洲性无码AV中文字幕| 亚洲精华国产精华精华液好用 | 国产AV无码专区亚洲AV毛网站 | 亚洲成Av人片乱码色午夜| 久久精品国产亚洲夜色AV网站| 久久青青成人亚洲精品| 亚洲AV日韩精品久久久久久久| 亚洲综合国产精品| 91亚洲国产成人久久精品| 亚洲高清一区二区三区| 亚洲a∨无码精品色午夜| 亚洲精品成人片在线观看| 自拍偷自拍亚洲精品第1页| 日本亚洲视频在线| 亚洲精品免费在线视频| 日本亚洲精品色婷婷在线影院| 亚洲精品第一国产综合亚AV| 亚洲国产精品一区二区第一页免 | 99999久久久久久亚洲| 亚洲国产一区二区三区在线观看|