本書共分7章。第1章幫助讀者快速、輕松并深刻地建立計算機系統的整體概念并了解現代計算機硬件的測試技術與工具;第2章介紹計算機的存儲體系,并著重介紹DRAM的內部操作對性能參數的影響;第3章介紹計算機總線系統和主板的有關知識;第4章介紹計算機的輸入輸出及其控制技術;第5章介紹計算機核心部件——控制器的工作原理和基本設計方法;第6章從架構層面介紹處理器中的并行技術;第7章介紹人們在非馮·諾依曼體系結構和非硅晶體元器件兩個方面的探索。
第7版前言
(一)
計算機技術是人類傾注了心血并還在投入更大心血的一個領域,也使它成為競爭最為激烈的領域之一,呈現出日新月異的特征。作為這個領域的一門教材,不應當膠柱鼓瑟,而必須與時俱進,這是筆者在每一版修訂時都思考的一個重要方面。本書從第4版開始增加了未來計算機展望一章,在第6版的第2章中增加了DRAM內部操作與性能參數一節,本次修訂中對第7章的內容進行了部分更新等,都是基于這一考慮的。
目前,國內已經有一些計算機組成原理的教材,但是多數是面向計算機設計的。本書則想寫成一本面向應用的教材,目的是讓讀者能從應用的角度來了解計算機的組成及其工作原理。為此,本書從第5版起增加了對計算機性能有重要影響的總線與主板一章,在本次修訂中則在第1章增加了計算機性能測試工具和天梯圖的內容。
(二)
計算機作為人類歷史上最偉大的工具之一,是全人類智慧的結晶,其中包含了中華民族歷史上和現代的巨大貢獻。讓讀者了解這些事實,不僅是為了還原歷史的真實,還在于這些事實折射出來的邏輯思維精華有啟迪思維、激勵創新、增強自信之效能。這是我寫這本書時一直堅持的一個原則。
本書作為一本教材,希望能做到好教又好學。為此,本次修訂除在文字上進行了一些修改外,還從結構上進行了一些調整。
(三)
計算機俗稱電腦,顧名思義,它就是一種模擬人腦的機器。模擬可以從兩個方面進行:結構模擬和功能模擬。現在要用計算機從結構的角度模擬人腦還有許多問題沒有解決,只能從功能模擬的角度進行,即由一些功能部件來模擬人腦的功能。因此,計算機組成原理作為計算機科學與技術及其相關專業的一門必修核心課程,對于它的學習應當從建立計算機的組成部件與人的大腦功能之間的聯系開始,然后再對這兩者的工作過程加以區別。這是我要與初學者共享的一點心得。
(四)
在本次修訂中,作者參考了其他一些著作和網絡作品。盡管本人盡力將它們對本書的貢獻通過參考文獻來表明,但由于有些內容(特別是網站內容)出處不明或作者難以查考,因而疏漏之處在所難免。在此,謹向為本書提供了幫助的各位深表謝意,并向由于上述原因未能列入參考文獻的文章作者表示歉意。同時,還要感謝在本次修訂中參加了部分寫作工作的趙忠孝、姚威、張展為、史林娟、戴璐、張友明、張秋菊、陳覺、董兆軍。
本書的修訂仍不會畫上句號。本人誠懇地希望閱讀過本書的專家、老師和學生能無保留地提出批評意見和建議,幫助本人把這本書修訂得更好。
張基溫2017年4月
張基溫,研究和教學領域涉及計算機科學與技術、信息管理、信息經濟學、電子政務與電子商務、服務科學、新媒體。先后擔任名古屋大學訪問學者,山西財經大學、江南大學、華東政法大學、常熟理工學院、福建工程學院、廣西職業技術學院、晉城學院等多所大學的專職、客座或兼職教授,北京大學博雅方略城市發展與信息化研究中心研究員,南京大學出版社總編顧問,太原高新技術區IT研究院實驗室主任,山西省緊缺人才專家委員會副主任,中國信息經濟學會常務理事,全國高等院校計算機基礎教育研究會常務理事兼課程建設委員會副主任,中國計算機學會教育專業委員會委員,國家NIT考試委員會委員,江蘇省計算機基礎教學指導委員會委員,山西省新世紀專家學者協會副會長。為清華大學出版社、電子工業出版社、中國水利水電出版社、南京大學出版社、中國鐵道出版社等主編了信息管理與信息系統專業、計算機實驗與實踐、大學生信息素養等多個系列教材。已發表學術論文百余篇,出版著作百余種
目錄
第1章計算機系統概述1
1.1計算工具的進步軌跡1
1.1.1神奇的算盤和算籌——軟件與硬件的起源1
1.1.2提花機的啟示與巴貝奇分析機——內程序計算機的最早實踐5
1.1.3帕斯卡加法器——內動力計算機的嘗試7
1.1.4從八卦圖到布爾代數——電子數字計算機的理論基礎11
1.1.5諾依曼電子數字計算機體系的確立19
1.1.6操作系統——計算機的自我管理22
1.1.7現代計算機系統結構25
1.1.8自動計算機理論的再討論27
1.20、1編碼27
1.2.1數字系統中的信息單位與量級27
1.2.2十進制數與二進制數的轉換28
1.2.3八進制、十六進制和BCD碼30
1.2.4原碼、反碼、補碼和移碼31
1.2.5浮點數與定點數34
1.2.6聲音的0、1編碼36
1.2.7圖形圖像的0、1編碼37
1.2.8文字的0、1編碼39
1.2.9指令的0、1編碼與計算機程序設計語言43
1.2.10數據傳輸中的差錯檢驗44
1.3電子數字計算機的基本原理48
1.3.1電子數字計算機的運算器48
1.3.2計算機存儲器50
1.3.3計算機控制器54
1.3.4總線56
1.3.5計算機中的時序控制57
1.4馮·諾依曼計算機體系的改進59
1.4.1馮·諾依曼瓶頸59
1.4.2并行與共享60
1.4.3哈佛結構63
1.4.4擬態計算機64
1.5計算機性能評測64
1.5.1計算機的主要性能指標64
1.5.2計算機性能測試工具69
1.5.3天梯圖71
習題74
第2章存儲系統77
2.1主存儲器概述77
2.1.1ROM元件77
2.1.2RAM元件與存儲結構79
2.1.3DRAM元件與基本存儲結構82
2.2主存儲體組織85
2.2.1內存條結構85
2.2.2存儲體的基本擴展方式87
2.2.3Bank89
2.2.4并行存儲器90
2.2.5并行處理機的主存儲器93
2.3DRAM內部操作與性能參數94
2.3.1SDRAM的主要引腳94
2.3.2SDRAM的讀寫時序95
2.3.3突發傳輸97
2.3.4數據掩碼98
2.3.5DRAM的動態刷新99
2.3.6芯片初始化與預充電102
2.3.7存儲器控制器104
2.3.8RAM的一般性能參數104
2.3.9DDR SDRAM與RDRAM107
2.4磁盤存儲器109
2.4.1磁表面存儲原理109
2.4.2硬磁盤存儲器的存儲結構111
2.4.3磁盤格式化112
2.4.4硬磁盤存儲器與主機的連接115
2.4.5硬磁盤存儲器的技術參數118
2.4.6磁盤陣列120
2.5光盤存儲器123
2.5.1光盤的技術特點與類型123
2.5.2可擦寫型光盤讀寫原理124
2.5.3光盤規格124
2.6閃速存儲器127
2.6.1閃存原理128
2.6.2固態硬盤128
2.7存儲體系131
2.7.1多級存儲體系的建立131
2.7.2多級存儲體系的性能參數132
2.7.3Cache主存機制133
2.7.4虛擬存儲器138
2.8未來記憶元件141
2.8.1磁隨機存取存儲器141
2.8.2鐵電隨機存取存儲器142
2.8.3相變隨機存取存儲器143
2.8.4阻變隨機存取存儲器144
習題145
第3章總線與主板148
3.1總線的概念148
3.1.1總線及其規范148
3.1.2總線分類149
3.1.3總線的性能指標152
3.1.4標準總線153
3.2總線工作原理154
3.2.1總線的組成與基本傳輸過程154
3.2.2總線的爭用與仲裁155
3.2.3總線通信中主從之間的時序控制157
3.3幾種標準系統總線分析161
3.3.1ISA總線161
3.3.2PCI總線163
3.3.3AGP總線166
3.3.4PCIExpress總線 168
3.4幾種標準I/O總線分析169
3.4.1ATA與SATA總線 169
3.4.2SCSI與SAS總線171
3.4.3USB總線174
3.4.4光纖總線178
3.4.5AMR和CNR178
3.5微型計算機主板179
3.5.1主板的概念179
3.5.2主板的組成180
3.5.3主板架構及其進展185
3.5.4主板選擇參數188
3.5.5主板整合技術191
3.5.6智慧型主板技術191
習題193
第4章輸入輸出系統195
4.1外圍設備195
4.1.1外部設備及其發展195
4.1.2鍵盤198
4.1.3鼠標201
4.1.4打印設備202
4.1.5顯示器210
4.1.6觸摸屏220
4.1.7虛擬現實設備223
4.2I/O過程的程序直接控制225
4.2.1I/O過程的程序無條件傳送控制方式225
4.2.2I/O過程的程序查詢傳送方式225
4.3I/O過程的程序中斷控制227
4.3.1程序中斷控制的核心概念227
4.3.2中斷關鍵技術230
4.3.3中斷接口234
4.3.4多重中斷235
4.4I/O數據傳送的DMA控制236
4.4.1DMA的基本概念236
4.4.2DMA與CPU共享存儲器沖突的解決方案237
4.4.3DMA控制器239
4.4.4DMA傳送過程240
4.4.5DMA與中斷方式比較241
4.5I/O過程的通道控制242
4.5.1通道控制及其特點242
4.5.2通道控制原理244
4.5.3通道類型246
4.6I/O接口247
4.6.1影響I/O設備與計算機連接的主要因素248
4.6.2I/O接口的功能與類型249
4.6.3I/O接口結構250
4.6.4緩沖251
4.6.5I/O端口252
4.7I/O設備適配器253
4.7.1顯卡254
4.7.2聲卡256
4.7.3網卡259
4.8I/O管理261
4.8.1設備驅動程序261
4.8.2ROM BIOS262
習題265
第5章控制器邏輯268
5.1處理器的外特性——指令系統268
5.1.1指令系統與匯編語言概述268
5.1.2尋址方式271
5.1.3Intel 8086指令簡介276
5.1.4CISC與RISC283
5.1.5指令系統的設計內容287
5.2組合邏輯控制器287
5.2.1指令的微操作分析288
5.2.2指令的時序控制與時序部件290
5.2.3組合邏輯控制器設計舉例292
5.3微程序控制器295
5.3.1概述295
5.3.2微程序操作控制部件的組成295
5.3.3微程序操作控制部件設計舉例296
習題299
第6章處理器架構302
6.1流水線技術302
6.1.1指令流水線302
6.1.2運算流水線304
6.1.3流水線中的相關沖突305
6.1.4流水線中的多發射技術307
6.1.5Pentium CPU309
6.1.6流水線向量處理機312
6.2多處理器系統316
6.2.1多計算機系統與多處理器系統316
6.2.2SMP架構317
6.2.3多處理器操作系統319
6.3多線程處理器320
6.3.1多線程處理器架構的提出320
6.3.2同時多線程技術322
6.3.3超線程處理器324
6.4多核處理器327
6.4.1多核處理器及其特點327
6.4.2多核+ 多線程——CMT技術329
6.5關于處理器并行性開發的討論329
6.5.1并行性及其級別329
6.5.2基于并行性的處理器體系Flynn分類331
6.5.3處理器并行性開發的思路與途徑333
習題334
第7章未來計算機展望337
7.1非馮·諾依曼體系計算機的探索337
7.1.1數據流計算機337
7.1.2歸約機339
7.1.3智能計算機341
7.1.4神經網絡計算機343
7.2未來計算機元器件展望349
7.2.1摩爾定律及其影響349
7.2.2突破傳統微電子工藝的努力351
7.2.3納米電子器件353
7.2.4量子計算機356
7.2.5光學計算機358
7.2.6超導技術359
7.2.7生物計算機360
習題363
附錄A國內外常用二進制邏輯元件圖形符號對照圖364
參考文獻366
第5章控制器邏輯
中央處理器(CentralProcessingUnit,CPU)是計算機的中樞,是計算機系統的運算核心和控制核心,主要由運算器(ArithmeticLogicUnit,ALU)、控制器(ControlUnit,CU)、一組寄存器以及相關總線組成。了解計算機的工作原理的關鍵是搞清CPU的工作原理。關于ALU的簡單原理已經在1.3.1節中介紹,本章主要對CU進行邏輯分析。CU的核心功能是分析指令,設計依據是指令系統。
5.1處理器的外特性——指令系統〖4/5〗5.1.1指令系統與匯編語言概述〖2〗1.指令及其基本格式在計算機中,指令(instruction)是要求計算機完成某個基本操作的命令。計算機程序就是由一組指令組成的代碼序列。這里所說的“基本”是針對具體的CPU而言的,不同的CPU所指的“基本”二字的意義不同,所能執行的基本操作的數量和種類也不相同。但是,任何CPU都必須滿足最小完備性原則,即它所能執行的基本操作必須能組成該CPU所承擔的全部功能。也就是說,有的CPU的基本操作多一些、復雜一些,有的CPU的基本操作少一些、簡單一些,但它們的組合效果應當相同。例如,有的CPU將乘法作為基本操作之一;有的沒有乘法操作,但可以使用加法和移位操作組成乘法操作。
在1.2.9節中已經介紹過,一條指令由操作碼和地址碼兩大部分組成,并且可以按照地址的數量把指令分為如下4種類型:
3地址指令。
2地址指令。
1地址指令。
0地址指令。
一條指令的長度由操作碼和各地址碼的長度決定。
指令地址碼的長度由指令的尋址空間——存儲器的容量決定。如,一個10b的地址碼的尋址空間為210。一個1GB的內存,需要的地址碼長度為30b,對于3地址指令,指令的長度就需要100b左右。這樣的指令就太長了。但是多地址指令比少地址指令編寫出來的程序長度小,并且執行速度快。
為了解決短地址碼訪問大容量存儲器的問題,人們研究出了多種尋址方式。具體內容將在后面介紹。
操作碼的長度由操作的種類決定,一個包含n位的操作碼最多能表示2n種操作。不同的計算機中,可以采用定長操作碼——操作碼占有固定長度的位數,也可以采用變長操作碼——操作碼的長度不固定。變長操作碼可以用擴展窗口將部分地址作為操作碼使用,以增加指令條數。
例5.1某計算機字長為16b,操作碼占4b,有3個4b的地址碼,試說明如何擴展該機器的指令系統。
解:在定長操作碼系統中,操作碼的長度與地址碼是沖突的。即地址碼越長,操作碼就越短。而操作碼短了,指令系統中的指令數就少了。例如在本例中,操作碼只有4位,指令系統中最多只能有16條指令,這常常是不夠的。為了解決這個矛盾,可以采用變長操作碼。即減少地址數,擴展操作碼。
在進行操作碼擴展時,要特別注意一點:長碼中不可出現短碼。因為編譯器會首先從短碼開始區分不同的指令類型。因此,短碼至少要留出一位用于連接擴展位,稱為擴展窗口位。圖5.1指令的一般格式
指令的一般格式如圖5.1所示。
計算不同地址數指令的步驟如下:
(1)原始OP占有4b,用0000~1110定義15條三地址指令,留下1111作為擴展窗口,與A3一起組成擴展字段。
(2)由于長碼中不可出現短碼,所以只能用11110000~11111110定義二地址指令,共15條。留下11111111作為一地址指令的擴展窗口,與A2組成擴展操作碼。
(3)同理,用111111110000~111111111110定義15條一地址指令。
(4)最后,用1111111111110000~1111111111111111定義16條零地址指令。
2.指令系統
一個CPU所能承擔的全部基本操作由一組對應的指令描述。這組完整地描述該CPU操作的指令就稱為該CPU的指令系統(commandsystem,instructionsystem,commandset,instructionset),也稱該CPU的機器語言。
指令系統決定了CPU的外特性。一方面,因為指令系統表明了CPU能執行哪些基本操作,因此,指令系統是(系統)程序員在該CPU上進行程序設計的依據。另一方面,功能模擬和結構模擬是研究、制造任何一種計算機的兩個最重要的途徑。20世紀60年代,人們從程序員的角度觀察計算機的屬性,開始用“計算機體系結構”來統一功能和結構這兩個方面。但是由于功能和結構兩者仍然存在差別,通常把計算機的功能方面叫作外(宏)體系結構,把計算機的實現方面叫作內(微)體系結構。由于CPU的功能是取指令—分析指令—執行指令,所以一個CPU設計所依據的功能也來自指令系統,即指令系統是CPU設計的基本依據。要設計一個CPU,要先為它設計指令系統。
3.指令系統的描述語言——機器語言與匯編語言
一個CPU的指令系統就是與該CPU進行交互的工具,用其可以讓該CPU完成特定的操作。所以一個CPU的指令系統就可以看成該CPU的機器語言。顯然,不同的CPU具有不同的機器語言。
在表現形式上,機器語言就是用0、1碼描述的指令系統。用它編寫程序,難讀,難記,難查錯,給程序設計和計算機的推廣、應用、發展造成極大困難。面對這一不足,人們最先是采用一些符號來代替0、1碼指令,如用ADD代替“加”操作碼等。這種語言稱為符號語言。下面是幾條符號指令與其對應的機器指令代碼的例子:MOVAH,01H;機器指令代碼:B401H
XORAH,AH;機器指令代碼:34E2H
MOVAL,\[SI+0078H\];機器指令代碼:8A847800H
MOVBP,\[0072H\];機器指令代碼:8B2E7200H
DECDX;機器指令代碼:4AH
INAL,DX;機器指令代碼:ECH
符號語言方便了編程,用它編寫程序時效率高,寫出的程序易讀性好,提高了程序的可靠性。但是,符號語言是不能直接執行的,必須將之轉換為機器語言才能執行。
符號語言程序轉換為機器語言程序的方法是查表。這是非常簡單的工作。為了將這種查表工作自動化,除了正常的指令外,還需要添加一些對查表進行說明的指示指令——偽指令。這種查表工作稱為匯編。為了進行自動查表,還需要一些指示性指令。用符號語言描述并增加了指示性指令的指令系統稱為匯編語言。匯編語言為程序員提供了極大的方便,也提高了程序的可靠性。通常在介紹指令系統時,采用的都是匯編語言。
匯編語言指令的一般形式如下:標號:操作碼地址碼(操作數);注釋
下面是一段用Intel8086匯編語言描述的計算A=2+3的程序。ORGC0H;C0H為程序起始地址
START:MOVAX,2;2→AX,AX為累加器,START為標號
ADDAX,3;3+(AX)→AX
HALT;停
ENDSTART;結束匯編
由于匯編語言比機器語言有更好的易讀性,又與機器語言一一對應,所以機器指令都可按匯編語言符號形式給出。
……