前 言Digital Logic Design and Computer Organization with Computer Architecture for Security編寫本書的目的是讓讀者通過一本教科書全面理解數字邏輯設計和計算機組成。此外,本書還有獨立的一章介紹安全的計算機體系結構。
本書涵蓋數字邏輯設計的基本原理和Verilog硬件描述語言設計。各個章節分別討論簡單和復雜的組合電路和時序電路的設計方法。本書概述了電路設計的現代工具和方法,而Verilog實例僅用于展示該語言的基本特性和可綜合特性。如有需要,教師可以選擇用VHDL替代。不過,本書并不要求使用硬件描述語言。
本書內容包括存儲器組織、處理器核心和處理器組織結構,以及硬件支持的計算機安全等。由于技術的進步以及對高速和低功耗設計的需求改變了計算機組織結構的基礎,因此本書嘗試不僅提供簡單的實例用于展示基本的設計概念,而且揭示對現代計算機設計目標的理解。
本書還從指令集體系結構角度討論了計算機體系結構的概念,包括支持安全指令執行的架構、流水線和并行化,以及存儲器層次結構。本書嘗試提供大量實例來展示如何應用流水線和并行化技術來提升并發處理能力并降低或隱藏延遲(這是兩個影響性能的因素)。程序代碼實例也用于展示CPU體系結構與編譯器、編程方法和性能之間的關系。
各章節概述本書一共有11章。第1章概述了數字系統、計算創新、數碼系統、數字邏輯設計和計算機組成/體系結構及安全。
第2章和第3章涵蓋簡單和復雜的組合電路,包括整型和浮點算術運算。在第2章討論小型電路的設計方法時,假定若需要化簡超過4個輸入變量的真值表,學生可以利用邏輯化簡軟件,例如從互聯網上免費下載的Espresso。這一章還介紹了設計工具、結構級和行為級設計模型,以及利用可編程邏輯器件的電路設計,也包括Verilog設計實例及其綜合和仿真結果。第3章涵蓋設計大型組合電路的方法和整型及浮點數計算機算術運算,同樣給出了設計實例。
第4~6章涵蓋了簡單和復雜的時序電路,從基本模型到復雜的數據通路與控制,再到時序約束、設計效率和功耗利用。第4章介紹了鎖存器、觸發器及其時序要求。第5章介紹了有限狀態機(FSM)設計及其時序要求和異步輸入的處理。第6章介紹了單周期、多周期和流水線數據通路與控制。設計實例展示了數據通路和基于FSM、微程序及流水線的三種控制單元組織,此外還給出了幾個數據通路設計實例,包括無符號和帶符號乘法運算以及二維虛擬目標旋轉。
第7章專注于存儲器,包括SDRAM技術,以及包括交叉和多通道在內的存儲器設計。這一章也介紹了存儲器通信協議、性能,以及均勻存儲器存取(UMA)和非均勻存儲器存取(NUMA)組織;還討論了一些編程方法實例,這些實例可以利用NUMA組織結構的優勢來提高性能。
第8章講解CPU設計,從單周期和流水線到精簡指令集計算機(RISC)、深度流水和分支預測,再到靜態和動態指令集并行(ILP),直到多線程。章中包括CPU數據通路實例的設計和仿真,并給出了編程代碼實例來說明通過編譯器優化改進性能、分支預測、ILP和多線程。
第9章專注于微型計算機體系結構,內容從簡單的總線結構到集成結構再到現代點到點結構的歷史脈絡,也包括I/O端口尋址、中斷驅動I/O和直接存儲器訪問(DMA),以及現代“即插即用”設備控制器接口,例如USB主機控制器接口。這一章還討論了中斷和相關操作系統任務,中斷處理CPU的數據通路和指令集也被用作實例來解釋簡單計算機的體系結構和操作。
第10章涵蓋存儲器層次結構的原理及其組織。這一章還討論了單處理器系統中的cache一致性,也介紹了共享存儲器多處理器系統中的cache一致性問題,通過實例從缺失率、硬件數量和功耗等方面說明不同的cache映射技術的優勢,還介紹了虛地址轉換、頁表管理和用于轉換虛地址的可選處理器的組織結構。
第11章從應用在計算機體系結構中的安全工程方法的基本概念入手,接著引出訪問控制、安全策略模型、硬件安全策略機制和軟件/物理攻擊機制,并介紹了加密技術。這一章還介紹了基于安全協處理器(用于實現安全數據存儲和通信等)或者安全通用處理器實現的可信計算基(TCB)架構,也詳細介紹了實現程序(指令和數據)機密性和完整性的安全處理器的體系結構。
雖然第11章的內容被編排在一起以方便讀者閱讀,但其內容也同時包含在其他章節中。例如,當學到時序電路設計技術時,學生就可以設計簡單的加密電路。還有一些該章涉及的內容也在其他章節中出現過,包括硬件木馬和硬件安全策略機制、存儲器認證、中斷的安全處理、安全協處理器和安全處理器架構等。為了給出第11章內容與其他章節相關內容的關聯,第1章、第3章、第5~10章的練習部分都列出了第11章的練習,并加注說明為“計算機安全”。教師在這些章節中可以選擇所列的習題。
為便于參考,關鍵字在第一次出現時會加粗顯示。縮寫的關鍵字不加粗,但少數會標出完整術語,便于讀者閱讀。選擇本書為其課程必修教材的學術機構的教師可獲得練習答案和PowerPoint幻燈片。
如何閱讀本書大多數人認為,本書對于數字設計和計算機組成的討論深度明顯高于市面上相似的教材。對于這兩個主題,本教材的目標是在覆蓋的廣度和深度方面更加平衡。在一個學期中,教師既能審慎地選擇知識點,也可以選擇其課程中需要強調的每個知識點的深度和廣度。本教材也包含了足夠的內容來適應兩個季度或兩個學期的課程安排,以便深入講授數字邏輯設計和計算機組成/體系結構兩部分內容,也使學生有更多的時間來深入理解設計練習。下面是對讀者閱讀本書的方式的幾點建議:
1.對于沒有或只有有限的數字邏輯基礎的本科生,課程內容可以包括第1~5章和第6~9章的部分知識點,以及其余章節中的典型知識點。某些章節和設計實例可以跳過。
2.對于具備一些數字邏輯基礎的計算機科學和計算機工程的本科生,課程內容可以包括第1章、復習或選講第2~5章中的部分知識點、第6~10章全部知識點和第11章的部分知識點。
3.對于那些向沒有或只有有限的數字邏輯設計和計算機組成基礎的研究生授予學位的學術機構,本書是一本理想的教科書,因為其將數字邏輯設計和計算機組成及體系結構整合到了一本書中。
4.希望更新其數字邏輯和計算機組成及體系結構知識以及希望學習安全相關的計算機體系結構概念的專業人士可以從本書中獲益。
致 謝Digital Logic Design and Computer Organization with Computer Architecture for Security許多人都對本書做出了寶貴的貢獻。我要特別感謝同事Isaac Ghansah和Thomas Mathews,他們對本書內容做出了重要貢獻并提出了寶貴的建議。我也要感謝Martin Nicholes(現在英特爾工作),他對第11章的內容提出了有見地的參考意見。我還要感謝審稿人給出的深思熟慮的意見,本書終稿的部分內容根據他們的建議做了修改。
我的許多學生也對本書的初稿提供了有價值的反饋,并幫助找出了文中的一些錯誤。他們對本書中某些實例的詳盡分析為發現書中的文字和拼寫錯誤幫助頗多。我要特別感謝Kevin Schultz、Andrew Larsen、Branden Garner、Chris Dalisay、Thomas Lee、Robert Carreras、Ian Reif和Matt Larsen,也歡迎大家幫助找出書中未修正的錯誤并提出任何改進本書的建議。我還要感謝McGraw-Hill出版社的贊助編輯Michael McCabe、編輯主管Donna Martone、著作監督Lynn Messina、文字編輯Lisa McCoy、美術指導Jeff Weeks,以及項目經理Dheeraj Chahal和MPS公司的Surendra Shivam,他們提供了大力支持,為本書設計了封面并完成了最后加工。
最后但同樣重要的是,我要感謝妻子Gita和兒子Kian與Ryon的耐心和支持,特別是忍受我長時間忘我地投入本書的寫作。
譯者序Digital Logic Design and Computer Organization with Computer Architecture for Security信息技術發展和應用的速度如此之快,以至于層出不窮的新概念和新技術使人眼花繚亂、應接不暇。無論是物聯網、移動互聯網、云計算、大數據,還是人工智能、智能硬件、機器學習、智能人機交互,這些熱點應用領域都要依靠計算機系統硬件提供的強大計算能力。因此,不僅是計算機專業,越來越多的各領域的專業人士都需要理解計算機系統硬件的完整組成和基本工作原理,進而在系統層面掌握計算機工作的全貌。
我在北京郵電大學從事“計算機組成原理”課程教學二十余年,深刻感覺到,計算機系統硬件課程對教和學雙方而言難度都非常大。開設“計算機組成原理”課程的目的是:幫助學生理解構成計算機硬件的基本電路的特性和設計方法;使學生了解計算機系統整體概念,理解指令在計算機硬件上的執行過程;理解計算機系統層次結構,理解高級語言程序、指令系統體系結構、編譯器、操作系統和硬件部件之間的關系;讓學生站在系統的高度考慮和解決問題,培養具有系統觀的軟件/硬件貫通人才。因此,就教師而言,如果自身沒有對計算機系統硬件設計的深入體會,也就不可能讓學生深入地理解計算機系統的整體組成和工作原理。
本書在計算機系統硬件教學方面做了非常有益的探索。作者Nikrouz Faroughi教授從密歇根州立大學獲得計算機科學碩士學位、電子工程碩士學位和計算機工程方向的電子工程博士學位,并曾作為顧問和技術經理在英特爾公司工作,擁有豐富的工程經驗,對計算機系統硬件有深入的了解。
本書是一部從專業角度討論計算機系統硬件技術的完整教材。通讀本書可以看出,本書與其他教科書相比具有鮮明的特色。
第一個特色是深入淺出、循序漸進,并帶有豐富的教學實例。作者從簡單的數字邏輯電路設計基礎開始,由淺入深,講解了組合邏輯和時序邏輯電路的設計技術、計算機組成的基本原理和計算機體系結構的相關概念。全書共11章。第1章是計算機系統相關概念的概述;第2~5章分別討論組合邏輯電路和數字邏輯電路的設計;第6章則從大型時序電路設計過渡到計算機系統控制器的設計;第7~9章分別討論存儲器、指令集體系結構和系統互連(總線與輸入/輸出系統);第10章討論多級存儲體系。
第二個特色是把計算機體系結構與系統安全問題相關聯。安全問題是現代信息系統面臨的重大挑戰,如何在計算機系統硬件層面支持系統安全是在當今網絡互連時代必須面對的問題。第11章用較大篇幅深入探討了現代計算機系統如何利用硬件支持安全的體系結構。這一章從安全工程的基本概念入手,引出訪問控制、硬件安全策略機制和軟件/物理攻擊機制,并介紹了加密技術、安全協處理器及安全通用處理器等諸多安全計算機體系結構的相關概念與方法。
第三個特色是突出現代計算機的設計理念。由于移動計算和高性能計算對系統性能和功耗的要求,以及現代半導體技術進步和信息技術發展提供的可能性,計算機組織結構的基礎已經發生了改變。本書不僅提供簡單的實例用于展示基本的設計概念,而且試圖通過這些實例揭示作者對現代計算機設計目標的理解。書中也提供大量實例來展示如何應用流水線和并行化技術提升并發處理能力,并揭示處理器體系結構和編譯器、編程方法和性能之間的關系。
因此,本書既適合計算機及相關專業的本科學生作為相關課程的參考教科書,也可用于電子信息類相關專業人士完整理解計算機系統的整體組成和硬件工作原理。建議讀者根據自身情況有選擇地閱讀書中的相關章節,原書前言給出了如何選擇章節的建議。
本書中文版的翻譯工作由我所在的北京郵電大學嵌入式系統與網絡通信研究中心的教師及在校和已畢業的研究生共同完成。我與張通、黃夢凡、徐繼彬、劉欣、鄺堅、卞佳麗和劉健培等分別完成了初稿翻譯、技術指導、術語整理和審校等工作。感謝機械工業出版社華章公司的曲熠編輯和朱秀英編輯在翻譯過程中提出的諸多有益的建議。
在翻譯過程中,我們一直期望在精確反映作者原意的基礎上盡可能照顧到中文的表述習慣,力求在準確性和流暢性之間取得平衡。由于翻譯時間倉促和譯者水平有限,書中難免存在錯誤和疏漏,懇請讀者諒解并指正。
戴志濤2017年3月于北京郵電大學
Nikrouz Faroughi,加利福尼亞州立大學薩克拉門托分校教授、計算機科學系研究生專員和計算機工程專業教師。從密西根州立大學獲得計算機工程學士學位、計算機科學碩士學位、電子工程碩士學位和計算機工程方向的電子工程博士學位。曾任職系統分析師,并曾作為顧問和技術經理在英特爾公司工作,目前在該公司兼職。