計算機組成與設計(第二版)

計算機組成與設計(第二版)

《計算機組成與設計(第二版)》是2012-6-20齣版的圖書,作者是薛宏熙、胡秀珠、鄭玉彤

圖書簡介

本書共分7章和兩個附錄,第1章是概論;第2章介紹數據在計算機內部的表示形式;第3章介紹如何用數字電路實現數據的存儲與計算;第4~7章是計算機組成原理和設計方法的主體內容,包括中央處理器(CPU) 、存儲系統、外圍設備和輸入/輸出系統。附錄A介紹EDA工具QuartusII,附錄B介紹硬體描述語言VHDL。本書附有光碟,其中包含EDA工具Quartus II 9.0(網路版)、PPT形式的課件以及本書中涉及的VHDL原始碼。作者將習題解答放置在清華大學出版社網站,教師向出版社提供身份證明後可免費下載。
本書的特點是引入電子設計自動化(Electronic Design Automation, EDA)工具和硬體描述語言VHDL,使理論教學和上機實驗相結合,使學習基本原理和掌握設計方法相結合。
本書可作為高等院校計算機及相關專業“計算機組成原理”課程的教材,也可作為從事相關工作的工程技術人員的參考書。

圖書前言

作業系統是計算機系統的核心,它負責控制和管理整個計算機系統的軟硬體資源,使之協調工作。近年來,計算技術的發展日新月異,現代作業系統在經典體系結構的基礎上,加入了很多新的特性和功能。
圖形用戶界面的出現是作業系統發展中的一個里程碑。圖形界面相對字元界面更加方便和快捷的操作方式,使得計算機不再只是專業人員的工具,而為更多的普通用戶所接受,辦公系統也成為圖形界面作業系統的主流套用。計算機的硬體處理能力的不斷提升使得多媒體技術得到廣泛的套用,新一代的作業系統可以利用三維圖形、圖像、視頻和音頻等更加直觀的方式表示信息,用戶還可以通過語音和電子筆等手段來更加高效地和計算機進行互動。這種自然的用戶界面必將進一步促進計算機被更多的普通用戶所接受,家庭計算和娛樂也將成為新一代的主流計算機套用。
對信息和數據的存儲和管理是作業系統的基本功能。為了適應多媒體用戶界面的需要,字元不再是信息表達的唯一方式,圖形、圖像、聲音等多媒體信息逐漸成為計算機表示信息的基本結構。大容量存儲技術的發展給用戶利用計算機管理大量的數據提供了物質基礎,這也給作業系統管理數據和信息帶來了新的挑戰。如何在海量的數據中高效地瀏覽、查找所需要的信息成為現代作業系統需要解決的重要問題。對數據的結構化管理以及對信息搜尋的支持必將成為下一代作業系統的重要功能。
網路和互聯技術的發展,使得計算機不再是信息的孤島。網際網路技術的發展使得更多的計算機之間可以更加方便地交換信息;移動計算和無線技術的發展,使得計算機可以連線和控制各種各樣的智慧型設備。以前的用戶只能在特定的場合使用計算機,現在人們離無處不在的計算機越來越近了。計算機之間的互連以及計算機和智慧型設備的互連成為現代作業系統的重要功能,隨之而來的計算機的安全性問題也得到了前所未有的重視。通過開放的數據結構來支持數據的交換和共享,同時保證高度的安全性和穩定性成為下一代作業系統追求的重要目標。
儘管計算機的功能不斷地發展和創新,計算機系統仍然遵循馮·諾依曼提出的體系結構,作業系統的核心功能依然是對處理器、存儲器和輸入輸出設備的管理。對作業系統的基本原理和核心功能的學習和理解,是進一步創新的基礎。
本書作者張堯學教授和史美林教授有多年豐富的計算機教學及科研經驗,對各種現代作業系統有深入細緻的了解。本書對作業系統的基本概念和發展歷史進行了系統的闡述,並對作業系統的核心功能如進程管理、處理機調度、存儲管理、檔案系統和設備管理等作了詳盡的描述和分析。本書行文簡潔流暢,講解清晰,為讀者深入理解作業系統的原理提供了堅實的理論基礎。本書既注重對作業系統的經典內容的論述,又緊密聯繫當前作業系統的發展方向。以當代最流行的作業系統Windows和Linux作為實例,闡述了作業系統的具體實現,反映了現代作業系統技術最新發展方向。
微軟亞洲研究院成立以來,一直將支持中國高校的課程建設作為重要的工作,很高興微軟的張高博士能參與本書的編寫工作。我謹代表微軟公司表達對支持中國教育事業的長期承諾和誠意,希望和中國高校的專家和教授一起,寫出更多這樣好的教材,為中國信息產業的騰飛盡一份力量。
沈向洋
微軟亞洲研究院院長
2006年8月
在本書第一版的基礎上進行了如下修改和補充:
(1) 對第一版中某些部分進行了適當的增刪和修改,改正了第一版中的某些錯誤。改動比較大的部分包括:
① 第3章中的3.3節細分為3.3.1節和3.3.2節,其中3.3.2節用VHDL對某個靜態隨機訪問存儲器(Static Random Access Memory, SRAM)作功能描述,通過該實例說明存儲器的基本概念。
② 第4章中增加了4.6.6節、4.6.7節、4.6.8節、4.6.9節。其中,4.6.6節、4.6.7節、4.6.8節是對處理器設計加以改寫,改進了原方案並且描述更為清晰。4.6.9節則對使用EDA工具設計和手工設計進行比較,分析了硬連線控制器和微程式控制器的優缺點。
③ 由於QuartusII 9.0網路版不再需要Liciense,故刪去附錄A中不必要的內容,改寫後的A.1節不再細分為3節。QuartusII版本的更新也引起相應內容的更新。
(2) 豐富了光碟中的內容,除了提供EDA工具QuartusII、VHDL原始碼外,還增加了PPT形式的課件。
(3) 在清華大學出版社的網站上提供習題解答,教師提供身份證明後可免費下載。
課件和習題解答部分由鄭玉彤完成,三位作者共同討論修改方案,由薛宏熙最終定稿。
限於作者的經驗和水平,錯誤或不當之處在所難免,歡迎讀者和使用此教材的教師批評指正。
致謝
ALTERA公司中國區項目經理徐平波為本書提供了EDA工具QuartusII 9.0網路版並授權發行,特此致謝。
作 者2012年2月於清華園
計算機系統由硬體和軟體組成,計算機組成原理課程偏重於硬體,並且把硬體和軟體之間的橋樑搭接起來。目標是讓學生了解計算機的內部結構,以便為他們將來的發展奠定一個良好的專業基礎。作者發現某些計算機專業畢業的大學生在學習後續課程中暴露出以下弱點:他們對計算機組成的細節知道不少,而總體把握不足,在實際套用時概念模糊,不知如何下手。為此本書在寫作風格上貫徹以下特點:
首先,在教學體系上提供一個理論與實踐結合的實驗平台。為此,本書引入電子設計自動化(electronic design automation, EDA)工具和硬體描述語言VHDL,使理論教學和上機實驗相結合。這樣做帶來的好處是: ①學生的注意力可以集中於對計算機及其部件功能的深刻理解和精確描述,深刻理解各功能部件的相互連線關係,而不陷入手工設計的煩瑣細節中,因為這些煩瑣的細節工作可以交給EDA工具去做。②檢驗一個設計正確與否可以在EDA工具(模擬驗證)的幫助下完成,因而使學生具備自我檢查的能力。③通過實驗完成一個計算機部件的設計,必然印象深刻,並且這個設計不是紙面上的圖形和文字,而是可以提交給EDA工具、可直接被綜合為積體電路的設計。雖然學習EDA工具的使用方法以及學習硬體描述語言VHDL都需要花費一定的時間和精力,但是這種付出和收穫相比,收穫將遠大於付出。從更長遠的角度看,掌握EDA工具的使用方法及硬體描述語言對學生的發展極為有益,學生畢業後走上工作崗位,如果遇到硬體設計問題,用這種方法進行設計必然省時、省力,效果好。
其次,易學易懂是本書的一個重要目標。為此,在每章的開頭有【課前思考】和【學習指南】,為學習本章提供指導性意見,每章的末尾有習題供學生作練習。在文字表述上,儘量避免長篇的文字描述,而儘量多用圖形、表格、提綱等方式,醒目地介紹有關知識。學習計算機組成原理會涉及許多專業術語和概念,為了使學生便於接受這些術語和概念,本書採用實例引導的方法,逐步深入地引入概念。在描述比較複雜的概念或定義的時候,採取先粗略、後精確的方法,經過若干步驟達到由表及里、由淺入深。當涉及深入的數學問題的時候,本書先給出初始出發點和有關定義,再給出相應的結論,而略去中間的推導(或證明)過程。因為我們的讀者不是數學專業的學生,我們的目的是了解這些結論如何套用於計算機中。
本書在取材方面以基本內容為主,當涉及某些難度較大,而又需要一般了解的知識點時,本書給有關章節加上星號,提示該部分內容不屬於基本要求。
本書採用的EDA工具是ALTERA公司的Quartus II,該公司有一個支持教育的大學計畫(university program) ,為學生免費提供Quartus II學生版。在此我們要感謝ALTERA公司,感謝他們為學校的理論教學和上機實驗相結合提供了實驗平台。
全書共分7章和2個附錄。第1章是概論,以形象、概括的方式介紹計算機的組成,使讀者儘早地對計算機有一個整體的認識。其中包括計算機的基本部件,計算機的硬體、軟體及其相互關係,計算機的套用和發展等。
第2章介紹計算機內部的編碼系統。主要介紹數據表示形式的多樣性:在計算機外部,數據的表示形式要儘量方便人的理解;在計算機內部,數據表示形式要儘量適合計算機的存儲與處理。由此而產生了多種編碼系統,其中補碼套用最廣,也是本章的重點。
第3章介紹用數字電路實現數據的存儲與運算。數字電路中最基本的邏輯元件是邏輯門,最基本的存儲元件是觸發器,用邏輯門和觸發器可以構建計算機的各種部件。如何理解邏輯門、觸發器的基本功能,如何用邏輯門和觸發器構建計算機的各種部件,如何檢驗設計的部件是否和預期的功能相符,這就要用到EDA工具和硬體描述語言VHDL。應當說明的是,本章的內容和“數字邏輯”的內容有部分重疊之處,出現重疊的原因是出發點不完全相同,本書的著重點在於如何使用基本邏輯元件構建計算機,而不是介紹這些邏輯元件本身。讀者可把重疊之處作為複習,也可以跳過不看。
第4章介紹計算機的核心部件--處理器。處理器的主要功能是執行指令,因此需要了解指令的格式和指令的執行過程。處理器由數據通路和控制器組成,控制器向數據通路發出控制信號,使數據沿著指定的通路前進,從而完成指令所要求的操作。學習處理器有2個難點: ①指令的執行過程; ②控制器的設計。本書採用的教學方法是:用VHDL描述一個簡化的處理器,使學生從總體上把握處理器的功能和指令的執行過程,至於設計的細節則交給EDA工具去完成。這樣做避開了難點和煩瑣的細節,有利於學生從總體上掌握關於處理器的知識,同時也符合將來工作的實際環境。因為EDA工具已經比較成熟,教科書應當在技術上與時俱進,把先進的工具引入教學過程,提高教學效果。
第5章介紹計算機的存儲系統,存儲系統由內(主)存儲器、外(輔助)存儲器、高速緩衝存儲器和虛擬存儲器4部分組成。我們知道,計算機的指令和數據都存儲在存儲器中,存儲器是計算機不可缺少的重要部件。存儲系統為什麼要由4部分組成而不是單一品種?最重要的原因是為了提高性能價格比。
第6章介紹計算機的外圍設備,包括輸入設備和輸出設備。
第7章介紹匯流排和輸入輸出系統,主要內容為外圍設備和處理器的連線方式。
附錄A介紹Quartus II,通過精選的實例進行引導,讀者可以跟隨這些例子並實際操作,從而掌握Quartus II的使用方法和技巧。
附錄B介紹硬體描述語言VHDL.
從第3章開始,理論學習要和上機實驗相結合,這就必然涉及EDA工具Quartus II和硬體描述語言VHDL。在學習方法上,我們不是先學習了Quartus II和VHDL之後才學第3章以及此後的章節。建議初學者先快速瀏覽附錄A和附錄B,然後在學習有關理論知識的過程中邊學邊查,穿插進行。先對Quartus II和VHDL有個粗略的了解,最後達到全面掌握。教師講課時,也可以在講第3章之前用2個課時簡單介紹Quartus II,然後布置作業讓學生在實踐中逐步掌握Quartus II的使用方法和技巧。
有關Quartus II、VHDL及可程式邏輯器件的詳細資訊,可參閱文獻\.
本書的適用對象是大學本科生,以及想通過自學掌握計算機內部結構的工程技術人員。
本書附有光碟,其中包含EDA工具Quartus II 6.0網路版,使讀者得以方便地使用該軟體;光碟中還包含本書中所有表格、圖片以及VHDL原始碼,方便學生學習和教師製作課件。
致謝
研究生陳美杉和董龍仔細閱讀了本書第1~6章,提出了許多寶貴意見,許忠信博士對附錄A進行了審校,ALTERA公司中國區項目經理徐平波為本書提供了EDA工具Quartus II 6.0網路版並授權發行,在此一併致謝。
限於作者的經驗和水平,錯誤或不當之處在所難免,歡迎讀者和使用此教科書的教師、學生提出寶貴意見。
作 者2006年9月於清華園

圖書目錄

第1章 概論 /1
1.1 從外部觀察計算機 /1
1.2 數字計算機與模擬計算機 /5
1.3 計算機的內部結構 /6
1.3.1 計算機硬體的組成 /7
1.3.2 計算機軟體的組成 /11
1.4 微型計算機的主要指標 /13
1.5 計算機的發展與套用 /14
1.5.1 製造工藝進步導致計算機
性能提高 /14
1.5.2 計算機的普及與套用導致計算機
產業發展 /15
1.5.3 遠景展望 /16
本章小結 /17
習題 /17
第2章 數碼系統--數據在計算機內部的
表示形式 /19
2.1 數據表示形式的多樣性 /19
2.1.1 適合於人的數據表示形式 /19
2.1.2 適合於計算機的表示形式
--編碼 /20
2.1.3 數據格式的相互轉換 /28
2.2 機器數的編碼格式 /31
2.2.1 二進制定點數的原碼錶示形式 /32
2.2.2 二進制定點數的補碼錶示形式 /34
2.2.3 二進制定點小數的反碼
表示形式 /42
2.2.4 十進制數的二進制編碼及運算 /43
2.2.5 浮點數的編碼形式 /46
2.3 信息傳輸過程中的檢錯/ 糾錯碼 /47
2.3.1 奇偶校驗碼 /48
2.3.2?* 海明校驗碼 /49
2.3.3?* 循環冗餘校驗碼 /52
本章小結 /57
習題 /57
第3章 用數字電路實現數據的存儲與運算 /62
3.1 數字積體電路的基本元件--邏輯門 /63
3.1.1 MOS電晶體 /63
3.1.2 邏輯門 /65
3.2 定點數的簡單算術運算 /70
3.2.1 簡單二進制加法器的實現
(舉例) /70
3.2.2 簡單二進制減法器的實現
(舉例) /78
3.2.3 定點二進制數的補碼加減法
運算器 /79
3.2.4 定點二進制數乘法運算部件
的實現 /80
3.2.5 定點二進制數除法運算部件
的實現 /82
3.2.6 邏輯運算的實現(舉例) /82
3.3 數據的存儲 /83
3.3.1 暫存器(Register) /83
3.3.2 存儲器(Memory) /87
3.4 二進制定點數的乘法運算 /90
3.4.1 正數的定點小數乘法運算 /90
3.4.2 補碼的乘法運算 /95
3.5 二進制定點數的除法運算 /100
3.5.1 正數的定點小數除法運算 /100
3.5.2?* 補碼的除法運算 /103
3.6 浮點數的算術運算 /107
3.6.1 浮點數的加減運算 /107
3.6.2 浮點數的乘除運算 /108
3.6.3 階碼的表示形式--補碼
和移碼 /110
3.6.4 浮點數四則運算的小結 /111
3.7 算術邏輯運算單元(ALU)舉例 /112
本章小結 /114
習題 /114
第4章 計算機的核心部件--處理器 /117
4.1 處理器的工作過程簡介 /117
4.2 數據在記憶體中與在處理器中的
表示方式 /119
4.3 指令格式(機器碼格式) /119
4.3.1 操作碼 /120
4.3.2 地址碼 /121
4.4 定址(編址)方式 /122
4.4.1 基本定址方式概述 /123
4.4.2 定址方式舉例 /125
4.5 一個簡單處理器(簡化模型)的指令系統 /126
4.6 處理器的組成與設計 /128
4.6.1 處理器的組成 /128
4.6.2 處理器和記憶體的相互聯繫 /130
4.6.3 控制器 /131
4.6.4 處理器指令執行的詳細流程 /133
4.6.5 處理器的(VHDL)行為描述 /141
4.6.6 CPU的VHDL代碼的
基本框架 /142
4.6.7 CPU的完整的VHDL代碼 /144
4.6.8 處理器與記憶體相連組成一台
計算機 /149
4.6.9 使用EDA工具設計與手工設計
的比較 /155
4.7 流水線技術 /157
4.8 精簡指令系統計算機(RISC) /160
本章小結 /161
習題 /161
第5章 多級結構的存儲器系統 /163
5.1 概述 /163
5.2 存儲器分類 /164
5.3 主存儲器的基本原理 /165
5.3.1 靜態存儲器的基本原理 /167
5.3.2 動態存儲器的基本原理 /168
5.3.3 唯讀存儲器(ROM) /169
5.3.4 主存儲器的主要技術指標 /171
5.4 構成主存儲器的有關技術 /172
5.4.1 主存容量的擴展 /172
5.4.2 單向數據匯流排和雙向數據匯流排 /173
5.4.3 地址碼的一級解碼和二級解碼 /174
5.4.4 主存的檢錯與糾錯 /176
5.4.5 主存的並行讀寫技術 /176
5.4.6 CPU與主存的協同工作--
同步與異步 /178
5.4.7?* 同步動態隨機存儲器 /178
5.4.8?* Rambus DRAM /179
5.4.9?* 雙連線埠存儲器 /179
5.4.10?* 在DRAM晶片內加入快取 /180
5.5 輔助存儲器 /180
5.5.1 磁記錄原理與記錄方式 /180
5.5.2 磁碟存儲器 /183
5.5.3 磁碟陣列存儲器 /185
5.5.4 光碟存儲器 /187
5.5.5 移動式存儲器 /190
5.6 高速緩衝存儲器 /190
5.6.1 高速快取的工作原理 /191
5.6.2 地址映像 /192
5.6.3 替換算法和更新策略 /194
5.7 虛擬存儲器 /196
5.7.1 虛擬存儲器的基本概念 /196
5.7.2 段式虛擬存儲器 /196
5.7.3 頁式虛擬存儲器 /197
5.7.4 段頁式虛擬存儲器 /198
5.7.5 快表與慢表 /199
本章小結 /200
習題 /200
第6章 計算機的輸入輸出設備 /203
6.1 圖形和圖像的點陣表示 /204
6.2 鍵盤輸入設備 /205
6.3 定位輸入設備 /206
6.3.1 滑鼠器 /206
6.3.2 軌跡球 /207
6.3.3 觸摸板 /207
6.4 掃瞄器 /207
6.4.1 掃瞄器的工作原理 /207
6.4.2 掃瞄器的性能指標 /208
6.5 顯示器 /208
6.5.1 CRT顯示器 /209
6.5.2 液晶顯示器 /211
6.6 印表機 /212
6.6.1 針式印表機 /212
6.6.2 噴墨印表機 /214
6.6.3 雷射印表機 /215
6.7 漢字輸入 /215
本章小結 /217
習題 /217
第7章 計算機的輸入輸出系統 /219
7.1 概述 /219
7.2 計算機匯流排 /221
7.2.1 匯流排類型 /221
7.2.2 匯流排判優與仲裁 /222
7.2.3 匯流排通信控制 /225
7.2.4 匯流排的標準化和性能指標 /227
7.2.5 匯流排舉例 /228
7.3 輸入輸出接口 /231
7.3.1 接口的功能與組成 /231
7.3.2 接口的分類 /233
7.3.3 串列接口的通信協定 /233
7.4 程式直接控制的輸入輸出方式 /235
7.5 程式中斷輸入輸出方式 /237
7.5.1 中斷的基本概念 /237
7.5.2 中斷請求與判優 /238
7.5.3 中斷回響與中斷處理 /241
7.5.4 多重中斷中的現場保存與恢復 /243
7.6 DMA輸入輸出方式 /244
7.6.1 基本概念 /244
7.6.2 DMA接口 /246
7.6.3 DMA的工作方式 /247
7.6.4 DMA的數據傳送過程 /247
7.7?* 通道控制與外圍處理機控制方式 /248
7.8?* 可程式接口電路舉例--8255 /249
7.9?* 8255的VHDL行為描述 /254
本章小結 /259
習題 /260
附錄A EDA工具 QuartusII簡介 /262
A.1 QuartusII的安裝與運行 /263
A.2 設計流程 /265
A.3 項目的建立與版本管理 /267
A.3.1 建立一個新項目 /267
A.3.2 QuartusII項目的版本管理 /269
A.4 設計的原理圖描述 /271
A.4.1 進入原理圖編輯器 /271
A.4.2 從元件庫中調入元件符號 /272
A.4.3 繪製原理圖 /272
A.5 設計的VHDL描述 /274
A.5.1 進入文本編輯器 /275
A.5.2 在文本編輯器中編輯
VHDL檔案 /275
A.5.3 發現並糾正VHDL代碼中
的錯誤 /276
A.5.4 保存檔案 /278
A.6 綜合和編譯 /278
A.6.1 進入編譯器 /278
A.6.2 發現並糾正原理圖中的錯誤 /280
A.7 模擬驗證 /281
A.7.1 使用波形編輯器繪製測試
向量波形 /281
A.7.2 執行模擬 /284
A.8 層次化設計實例 /286
A.8.1 在原理圖編輯器中實現層次
化設計 /287
A.8.2 VHDL設計描述與原理圖混合
使用的層次化設計 /290
A.9 時序分析器 /293
A.10 調用帶參數的庫元件 /294
A.10.1 在原理圖編輯器中創建一個
存儲器 /294
A.10.2 初始化存儲器的內容 /300
A.10.3 存儲器的模擬實例 /300
A.11 可程式器件的物理實現 /301
A.11.1 引腳分配 /301
A.11.2 對目標器件編程 /305
A.12 用SignalTapII實時測試FPGA中
的信號波形 /310
附錄B 硬體描述語言VHDL簡介 /316
B.1 VHDL的產生與發展 /316
B.2 用VHDL建立電路模型 /317
B.2.1 電路模型 /317
B.2.2 實體聲明與結構體 /319
B.2.3 結構體的描述方式 /320
B.2.4 標識符 /321
B.3 面向模擬器的某些特性 /322
B.3.1 模擬周期 /323
B.3.2 延遲時間 /323
B.4 VHDL中的對象 /324
B.5 數據類型 /325
B.5.1 標量類型 /326
B.5.2 複合類型 /327
B.5.3 子類型 /329
B.5.4 檔案類型 /329
B.5.5 類型轉換 /330
B.6 VHDL的詞法單元 /331
B.6.1 注釋 /331
B.6.2 數字 /332
B.6.3 字元 /332
B.6.4 字元串 /333
B.6.5 位串 /333
B.7 屬性 /333
B.8 表達式與運算符 /336
B.9 子程式--過程與函式 /339
B.10 程式包與設計庫 /341
B.10.1 程式包--設計中的
數據共享 /341
B.10.2 設計庫 /342
B.10.3 VHDL中名字的可見性 /343
B.10.4 library語句和use語句 /344
B.11 行為描述 /345
B.11.1 進程語句 /345
B.11.2 行為模型的順序性 /346
B.11.3 行為模型的並行性 /353
B.12 結構描述 /357
B.12.1 連線埠的基本特徵 /358
B.12.2 元件例化語句 /359
B.12.3 配置指定 /360
B.12.4 規則結構 /361
B.12.5 無連線連線埠 /362
B.13 重載 /362
B.14 VHDL保留字和預定義程式包 /364
B.14.1 VHDL保留字 /364
B.14.2 標準程式包STANDARD /365
B.14.3 IEEE多值邏輯系統程式
包std_logic_1164 /372
參考文獻 /375

相關詞條

熱門詞條

聯絡我們