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