第3版前言
本次修訂再版的主要動因是補充精簡指令集計算機(RISC)方面的內容。雖然第2版也有RISC相關的內容,但僅限于指令系統(tǒng)特性的介紹,未涉及RISC的數(shù)據(jù)通路和控制器的設計。第3版以RISCV開源指令集架構為例,介紹了單周期和流水線的數(shù)據(jù)通路以及控制器的設計方法,并且將第2版指令流水線的相關內容合并到RISC這一章,補充了解決數(shù)據(jù)沖突的數(shù)據(jù)通路實例。
為了使讀者能夠更清楚地理解指令系統(tǒng)、數(shù)據(jù)通路以及控制器設計方法上的內在聯(lián)系,在章節(jié)組織上,將微程序控制的復雜指令集計算機和硬布線控制的精簡指令集計算機各獨立為一章,均從指令系統(tǒng)到一般性原理,再到具體實例,使讀者從中體會微架構的發(fā)展變化。同時,第3版改變了以總線等信息傳送通道分類數(shù)據(jù)通路的方法,不再強調數(shù)據(jù)通路結構的單總線或多路徑,而是強調控制方法和性能的差別,分為單周期、多周期和流水線的數(shù)據(jù)通路。
第3版的另一個主要修訂是JUC系列教學模型機,將第2版的JUCⅡ模型機改進為JUC3。為便于教學實施,JUC3分成基本模塊和擴展模塊,本書主要介紹基本模塊,擴展模塊留待實驗環(huán)節(jié)討論。JUC3主要對ALU電路進行了改進,優(yōu)化數(shù)據(jù)通路設計,相應地修改了微指令格式,此外還有一些細節(jié)修改。
本次修訂延續(xù)了前兩版理論與實踐結合的特點。書中介紹的RISCV單周期和流水線結構以及
JUC3模型機已經(jīng)在FPGA上設計實現(xiàn),并且經(jīng)過了兩輪實驗教學的檢驗。
課程組開發(fā)了遠程FPGA虛擬實驗平臺,建設了實驗
慕課資源,與理論課程配合開展實驗教學。
各章的具體修訂情況如下。第1章中計算機的主要性能指標增加了平均指令周期,這個概念在第2版中是放在控制器一章的,改到第1章便于理解與其他性能指標的聯(lián)系。第2章補充了多媒體數(shù)據(jù)的表示。第3章擴充了例題和習題。第4章的修訂主要涉及
4.1.3節(jié)補碼加減運算的邏輯實現(xiàn)和4.6節(jié)運算器的組織,修改了算術運算電路和ALU電路實例,它們將用于JUC3教學模型機; 補充了數(shù)據(jù)通路的結構類型,通過一個簡單的例子闡明單周期、多周期、流水線數(shù)據(jù)通路的概念,為第7章的硬布線控制打基礎。第5章修訂了非易失性半導體存儲器的相關內容,并且將原第8章中的多模塊存儲器改到這一章。第6章抽取了第2版微程序控制和復雜指令系統(tǒng)的相關內容,教學模型機升級為JUC3,內容上進行了精簡。第7章從單周期、多周期和流水線的角度重寫了硬布線控制方法,增加了RISCV開源指令集構架、RISCV的單周期微架構設計和RISCV的流水線微架構設計,同時將第2版第6章RISC相關內容和第7章流水線相關內容融合到這一章。第8章主要修改了高速緩存三種映像方式的組織結構圖,相應地重寫了文字講解并補充了例題; 虛擬存儲器部分沒有修改。第9章基本沒有修改。后增加了一個附錄,比較詳細地介紹了RISCV的指令系統(tǒng)。
第3版的修訂工作主要由肖鐵軍、丁偉、葛桂萍和馬學文完成。肖鐵軍負責第1章、第4章、第6章和第8章的修訂,丁偉負責第2章、第3章的修訂,葛桂萍負責第5章的修訂,第7 章的修訂工作由丁偉、葛桂萍和肖鐵軍合作完成,馬學文編寫了附錄。肖鐵軍和丁偉承擔了全書的統(tǒng)稿工作。鄒婷婷、楊旭東參加了本書第1版和第2版的編寫工作。
由于編者的水平有限,尤其RISCV是近年的新架構,如果書中有疏漏之處,歡迎讀者提出意見和建議。
本書配套微課視頻,請讀者先用手機微信掃描封底刮刮卡,獲得權限,再掃描書中章節(jié)標題
旁的二維碼,即可觀看相應的教學視頻。其他教學資源可掃描下方二維碼獲得。本書還配套了在線作業(yè)系統(tǒng),讀者可掃描封底刮刮卡,登錄作業(yè)系統(tǒng),即可在線答題。
教學資源
編者
2021年7月
第2版前言
本書第1版出版后不少教師和讀者發(fā)來電子郵件,提出了許多寶貴的意見和建議。為了使本書能夠更好地適應不同學校、專業(yè)的教學計劃,反映計算機技術的發(fā)展,第2版對書中內容做了一些補充和修改、調整。第2版還配套了實踐教程,便于結合理論課開展實踐教學,倡導從設計的角度理解計算機的組成和工作原理的教學理念。
近年有些學校嘗試教學改革,將硬件相關基礎課程打通為一門計算機組成原理或計算機硬件基礎,為此本書第2版增加了信息表示和邏輯電路基礎兩章,其中信息表示一章除了介紹進位計數(shù)制和定點數(shù)、浮點數(shù)的表示等內容外,還增加了如何理解C語言數(shù)據(jù)類型的內容。邏輯電路基礎一章除了邏輯代數(shù)基礎知識外,著重從應用的角度介紹計算機中常用的基本邏輯模塊的功能。考慮到有的專業(yè)沒有單獨開設匯編語言課程,指令系統(tǒng)這一章補充了匯編語言程序設計的基礎知識。存儲器與存儲體系分為兩章,存儲器一章增加了相變存儲器等新型非易失性存儲器; 存儲體系一章重點對高速緩存做了修改?刂破骱椭醒胩幚砥饕徽陆榻B的模型機升級為JUCⅡ,該模型機已經(jīng)在FPGA上實現(xiàn),配套實踐教程設計了相應的實驗和課程設計項目; 這一章安排在存儲體系之前,有利于更早地建立整機的概念,更好地理解高速緩存、虛擬存儲與CPU的關系。將第1版的輸入輸出系統(tǒng)和系統(tǒng)總線兩章合并為一章,刪除了教學中一般較少涉及的輸入輸出設備內部結構原理以及I/O通道等內容,重新組織了內容。
本書第2版主要由肖鐵軍、丁偉、鄒婷婷、楊旭東、馬學文共同編寫,劉芳參加了第9章的部分編寫工作。歡迎讀者一如既往地對本書提出意見和建議。
編者
2014年9月
第1版前言
本書適用于高等院校計算機類各專業(yè)及相關專業(yè)的本科生。計算機組成原理作為計算機專業(yè)的一門重要的核心專業(yè)基礎課程,主要討論計算機從部件到整機的組織結構和工作原理,在課程體系中起著承上啟下的作用。
本書講述的是一般性原理,并不針對任何具體的商業(yè)機型,而是綜合了國內外計算機類型中較為成熟的先進技術,兼顧計算機發(fā)展的新技術、新成果,力求做到深入淺出。為了避免一般性的抽象原理不利于分析理解,本書既從面上反映不同的典型結構,也有深入的分析,點面結合; 通過一個模型機的實例將相關章節(jié)聯(lián)系起來,終形成一個整機的概念,系統(tǒng)性較強。本書設計的JUC1教學微處理器已經(jīng)在FPGA上設計實現(xiàn),可用于配套的實踐教學。
本書共分7章,授課學時為70~90學時,在教學中可根據(jù)具體情況對書中內容進行取舍。
第1章計算機系統(tǒng)概論首先透過計算機的發(fā)展歷程探究計算機技術飛速發(fā)展的動力所在,然后介紹了馮·諾依曼結構計算機的基本組成,使讀者建立整體概念,了解計算機各部件之間的關系,有利于后續(xù)的學習。
第2章討論運算方法和運算器,包括數(shù)制與編碼的基礎知識、數(shù)據(jù)的表示方法和校驗方法、定點數(shù)和浮點數(shù)的四則運算及溢出判斷方法、運算器的組織結構及數(shù)據(jù)加工流程。
第3章介紹存儲器和存儲體系。存儲器以存儲位元存儲器芯片主存儲器為主線,講述相關的半導體存儲器原理和主存儲器的構成; 存儲體系以高速緩存主存虛擬存儲為層次,討論如何解決速度與容量的矛盾。
第4章是指令系統(tǒng),講述指令系統(tǒng)的一般設計原則、尋址技術,后以JUC1教學模型機為例,介紹了它的指令系統(tǒng)。
第5章是很關鍵的一章,通過這一章的學習將建立起計算機主機的概念,并通過指令執(zhí)行流程,理解計算機的工作原理。在講述了控制器的基本原理之后,以JUC1教學模型機為例,具體講解了微程序控制器設計方法。這一章的后還介紹了指令流水線。
第6章和第7章講解輸入輸出系統(tǒng)和系統(tǒng)總線,包括常用外部設備、輔助存儲器、主機與外設的數(shù)據(jù)傳送方式、總線仲裁等內容。
本書由計算機組成原理課程組的6位老師合作編寫,第1章和第5章由肖鐵軍編寫,第2章由鄒婷婷編寫,第3章主要由楊旭東編寫,第4章由丁偉編寫,第6章由袁曉云編寫,馬學文編寫了第7章以及第3章的一部分。研究生于洋參加了JUC1教學模型機的FPGA設計和驗證工作。由于編者水平有限,書中難免有疏漏之處,敬請讀者批評指正。
編者
2010年3月
第1章計算機系統(tǒng)概述
1.1計算機的發(fā)展歷程
1.2計算機硬件的基本組成
1.2.1存儲器
1.2.2運算器
1.2.3控制器
1.2.4輸入輸出設備
1.2.5總線
1.3程序設計語言和計算機的層次結構
1.4計算機的主要性能指標
1.4.1機器字長
1.4.2運行速度
習題
第2章信息表示
2.1進位計數(shù)制及其相互轉換
2.1.1進位計數(shù)制
2.1.2數(shù)制轉換
2.2數(shù)值數(shù)據(jù)的表示
2.2.1定點數(shù)的表示
2.2.2浮點數(shù)的表示
2.2.3C語言中定點數(shù)和浮點數(shù)的表示
2.2.4十進制數(shù)的二進制編碼
2.3非數(shù)值數(shù)據(jù)的表示
2.3.1邏輯類型數(shù)據(jù)表示
2.3.2字符編碼
2.3.3漢字編碼
2.3.4多媒體數(shù)據(jù)的表示
2.4可靠性編碼
2.4.1格雷碼
2.4.2奇偶校驗碼
2.4.3海明碼
2.4.4循環(huán)冗余校驗碼
習題
第3章邏輯電路基礎
3.1邏輯代數(shù)基礎
3.1.1邏輯常量、邏輯變量
3.1.2邏輯代數(shù)的基本運算
3.1.3基本邏輯公式、定理和規(guī)則
3.1.4邏輯函數(shù)
3.1.5邏輯函數(shù)化簡
3.2邏輯電路
3.2.1邏輯門電路
3.2.2門電路的實現(xiàn)
3.2.3集成電路
3.2.4可編程邏輯電路
3.2.5邏輯電路的設計模式
3.3計算機中常用的組合邏輯電路
3.3.1加法器
3.3.2譯碼器
3.3.3多路選擇器
3.3.4三態(tài)門
3.4計算機中常用的時序邏輯電路
3.4.1基本RS觸發(fā)器和D觸發(fā)器
3.4.2鎖存器
3.4.3數(shù)據(jù)寄存器
3.4.4移位寄存器
3.4.5計數(shù)器
習題
第4章運算方法與運算器
4.1定點數(shù)加減法運算
4.1.1原碼加減運算方法
4.1.2補碼加減運算方法
4.1.3補碼加減運算的邏輯實現(xiàn)
4.1.4運算結果的特征標志
4.1.5移碼加減運算
4.2定點數(shù)移位運算
4.2.1邏輯移位
4.2.2算術移位
4.2.3循環(huán)移位
4.3定點乘法運算
4.3.1原碼乘法運算
4.3.2補碼乘法運算
4.3.3陣列乘法器
4.4定點除法運算
4.4.1原碼除法運算
4.4.2補碼除法運算
4.4.3陣列除法器
4.5浮點數(shù)的四則運算
4.5.1浮點加減運算
4.5.2浮點乘除運算
4.6運算器的組織
4.6.1算術邏輯單元設計實例
4.6.2數(shù)據(jù)通路的結構類型
4.6.3運算器數(shù)據(jù)通路
4.6.4浮點運算器的組成與結構
習題
第5章存儲器
5.1存儲器概述
5.1.1存儲器的分類
5.1.2存儲器的性能指標
5.2半導體隨機存取存儲器
5.2.1靜態(tài)隨機存取存儲位元
5.2.2動態(tài)隨機存取存儲位元
5.2.3半導體隨機存取存儲芯片
5.2.4DRAM的發(fā)展
5.3非易失性半導體存儲器
5.3.1掩模型只讀存儲器
5.3.2一次可編程只讀存儲器
5.3.3可擦除可編程只讀存儲器
5.3.4電可擦除可編程只讀存儲器
5.3.5Flash存儲器
5.3.6鐵電存儲器
5.3.7磁性隨機存儲器
5.3.8相變存儲器
5.4主存儲器的組織
5.4.1CPU與主存儲器的連接
5.4.2主存儲器容量的擴充
5.4.3主存儲器的編址方式
5.4.4哈佛結構
5.5多模塊存儲器
5.6輔助存儲器
5.6.1磁記錄原理及記錄方式
5.6.2磁盤存儲器
5.6.3磁帶存儲器
5.6.4光盤存儲器
習題
第6章微程序控制計算機
6.1指令系統(tǒng)
6.1.1指令和指令系統(tǒng)
6.1.2指令的格式
6.1.3指令的類型
6.1.4尋址方式
6.1.5符號指令和匯編語言
6.1.6指令系統(tǒng)設計實例
6.2控制器概述
6.2.1控制器的基本組成
6.2.2控制器的工作過程
6.3CPU數(shù)據(jù)通路
6.3.1Intel 8080的數(shù)據(jù)通路
6.3.2VAX11/780的數(shù)據(jù)通路
6.3.3JUC3的數(shù)據(jù)通路
6.4指令執(zhí)行流程
6.4.1取指令階段
6.4.2取操作數(shù)階段
6.4.3執(zhí)行階段
6.4.4指令執(zhí)行的微操作序列舉例
6.5微程序控制器
6.5.1微程序控制基本原理
6.5.2微指令編碼方式
6.5.3后繼微指令地址的形成
6.5.4微程序控制的時序
6.6微程序控制器設計實例
6.6.1微指令編碼設計
6.6.2微轉移方式
6.6.3取指令的微程序設計
6.6.4取操作數(shù)的微程序設計
6.6.5執(zhí)行階段的微程序
6.7JUC匯編語言程序設計
6.7.1符號指令與功能
6.7.2順序結構程序設計
6.7.3分支程序設計
6.7.4循環(huán)程序設計
6.7.5堆棧及子程序
習題
第7章精簡指令集計算機
7.1RISC概述
7.1.1RISC的產(chǎn)生及發(fā)展
7.1.2RISC的主要特點
7.1.3RISC與CISC的比較
7.2硬布線控制
7.2.1單周期數(shù)據(jù)通路的控制
7.2.2多周期數(shù)據(jù)通路的控制
7.2.3流水線數(shù)據(jù)通路的控制
7.3RISCV開源指令集架構
7.3.1RISCV指令集
7.3.2RISCV的尋址方式
7.3.3RV32I指令舉例
7.4RISCV的單周期微架構設計
7.4.1數(shù)據(jù)通路設計
7.4.2控制器的設計方法
7.5RISCV的流水線微架構設計
7.5.1流水線的基本原理
7.5.2RISCV流水線設計
7.5.3RISCV流水線數(shù)據(jù)通路
7.5.4RISCV流水線控制
7.6流水線的性能
7.6.1流水線的性能指標
7.6.2指令流水線的相關與沖突
7.6.3流水線的指令調度
7.6.4超標量與超流水線
習題
第8章存儲體系
8.1存儲體系的層次結構
8.2高速緩沖存儲器
8.2.1Cache的基本原理
8.2.2相聯(lián)存儲器
8.2.3全相聯(lián)映像方式
8.2.4直接映像方式
8.2.5組相聯(lián)映像方式
8.2.6Cache的讀策略和替換算法
8.2.7Cache的寫策略
8.2.8多級Cache
8.3虛擬存儲器
8.3.1虛擬存儲器的基本概念
8.3.2頁式虛擬存儲器
8.3.3段式虛擬存儲器
8.3.4段頁式虛擬存儲器
8.3.5快速地址變換
8.4多級存儲的性能指標
習題
第9章輸入輸出系統(tǒng)
9.1輸入輸出系統(tǒng)概述
9.1.1輸入輸出系統(tǒng)的組成
9.1.2輸入輸出設備
9.1.3輸入輸出接口
9.1.4輸入輸出接口與主機的信息傳送控制方式
9.2程序查詢方式
9.2.1程序查詢傳送工作流程
9.2.2查詢輸入接口
9.2.3查詢輸出接口
9.3程序中斷方式
9.3.1中斷概述
9.3.2中斷請求的表示與控制
9.3.3中斷響應
9.3.4中斷服務和中斷返回
9.3.5中斷嵌套
9.3.6中斷優(yōu)先級的動態(tài)分配
9.4DMA方式
9.4.1DMA概述
9.4.2DMA控制器
9.4.3DMA傳送方式
9.4.4DMA傳送過程
9.5總線
9.5.1總線的特性和性能指標
9.5.2總線仲裁
9.5.3總線操作和定時
9.5.4典型總線標準
習題
附錄ARISCV指令系統(tǒng)
A.1RISCV概述
A.2RISCV指令系統(tǒng)的模塊化結構
A.3RISCV的指令長度編碼
A.4基本整數(shù)指令集RV32I
A.4.1RV32I的寄存器模型
A.4.2RV32I的指令格式
A.4.3RV32I指令集詳解
A.5標準擴展指令集
A.5.1乘法/除法擴展指令集RV32M
A.5.2壓縮擴展指令集RV32C
A.6RISCV匯編語言程序設計
A.6.1RISCV的偽指令
A.6.2RISCV寄存器使用約定
A.6.3RISCV匯編語言程序設計實例
參考文獻