新書推薦:
《
深度学习详解
》
售價:NT$
519.0
《
李白传(20世纪文史学家李长之经典传记)
》
售價:NT$
207.0
《
津轻:日本无赖派文学代表太宰治自传性随笔集
》
售價:NT$
302.0
《
河流之齿
》
售價:NT$
270.0
《
新经济史革命:计量学派与新制度学派
》
售價:NT$
406.0
《
盗墓笔记之秦岭神树4
》
售價:NT$
259.0
《
战胜人格障碍
》
售價:NT$
302.0
《
逃不开的科技创新战争
》
售價:NT$
467.0
|
編輯推薦: |
1. 本书作者是清华大学计算机系教授,本书是专为应用型本科和软件工程专业编写的计算机组成原理教材,也适合程度较好的高职院校使用。2. 本书在组成原理的基础上增加了布尔代数与逻辑电路和汇编语言程序设计与上机调试等有关内容,涵盖了主要的计算机硬件内容。3. 本书整体结构清晰,内容充实,概念清楚,重点突出。为了方便学生理解掌握所学知识,本书还列举丰富的实例加以说明。本书在写作过程中注重内容的先进性、实用性,特别强调基础知识、基本原理和基本技能。
|
內容簡介: |
本书主要介绍了计算机的基本组成和工作原理。全书共分10章,分别介绍计算机的基本特性、布尔代数与逻辑电路、数据表示、运算方法和运算器、指令系统、存储系统、控制器、外围设备、输入输出系统和计算机发展展望。 本书整体结构清晰,内容充实,概念清楚,重点突出,深入浅出。为了方便学生理解掌握所学知识,本书还列举了丰富的实例加以说明。本书在写作过程中注重内容的先进性、实用性,特别强调基础知识、基本原理和基本技能。本书可作为应用型院校计算机、软件工程及其相关专业的计算机原理课程教材,也可供工程技术人员学习计算机知识时参考。
|
目錄:
|
目录
第1章绪论1
1.1计算机的基本特性1
1.1.1二进制数据2
1.1.2存储程序2
1.1.3逻辑运算2
1.1.4高速电子开关电路2
1.1.5数字编码技术2
1.2计算机的基本组成3
1.2.1基本组成原理3
1.2.2CPU、主机与输入输出设备5
1.2.3存储器6
1.2.4总线6
1.3计算机系统7
1.3.1计算机系统组成7
1.3.2计算机层次结构8
1.4计算机分类8
1.5计算机发展简史10
1.6微处理器发展的启示11
1.7计算机的应用13
1.7.1科学计算、工程设计13
1.7.2数据处理13
1.7.3实时控制13
1.7.4辅助设计14
1.7.5人工智能14
习题14
*第2章布尔代数与逻辑电路15
2.1布尔代数基本逻辑运算15
2.1.1与逻辑15
2.1.2或逻辑16
2.1.3非逻辑16
2.2布尔代数的基本公式16
2.2.1基本公式16
2.2.2三个重要规则17
2.3逻辑函数及其表示方法18
2.3.1逻辑函数18
2.3.2逻辑函数表示法18
2.3.3逻辑函数化简19
2.4基本逻辑电路20
2.4.1门电路21
2.4.2触发器22
2.5基本逻辑部件24
2.5.1寄存器24
2.5.2计数器25
2.5.3译码器26
2.5.4多路数据选择器27
习题28
计算机组成原理第3版 目录 第3章数据表示30
3.1计数制30
3.1.1十进制计数制30
3.1.2二进制计数制31
*3.1.3R进制计数制31
*3.1.4在计算机中为什么采用二进制数32
3.2不同数制间数据的转换33
3.2.1十进制整数转换为二进制整数33
3.2.2十进制小数转换为二进制小数34
3.2.3二进制数转换为十进制数35
*3.2.4任意两种进制数间的转换35
3.3十进制数据编码36
3.3.1有权码方案37
*3.3.2无权码方案38
3.4字符编码39
3.4.1ASCII字符编码39
3.4.2EBCDIC码40
3.4.3字符串40
3.5汉字编码41
3.5.1汉字输入码41
3.5.2国标码与内码42
3.5.3汉字输出码44
3.6机器数及其编码45
3.6.1定点小数编码46
3.6.2定点整数编码49
3.6.3浮点数编码51
3.7数据校验码53
3.7.1奇偶校验码54
*3.7.2海明校验码55
*3.7.3循环冗余校验码57
习题60
第4章运算方法与运算器62
4.1定点加减法运算62
4.1.1补码加减法运算63
4.1.2溢出的产生及判别64
4.1.3全加器与加法装置65
4.2定点乘法运算70
4.2.1一位原码乘法70
*4.2.2两位原码乘法72
4.3定点除法运算75
4.3.1原码恢复余数除法75
4.3.2加减交替法除法78
4.4逻辑运算80
4.4.1逻辑乘法81
4.4.2逻辑加法81
4.4.3求反操作81
4.4.4异或运算82
4.5位片结构定点运算器82
4.5.1位片运算器电路Am 290183
*4.5.2先行进位电路Am 290286
*4.5.3多片Am 2901组成的位片结构运算器87
4.6浮点加减法运算89
4.6.1运算规则及算法89
4.6.2浮点加减法运算流程91
4.6.3浮点加减法装置及流水线结构运算器93
4.7浮点乘除法运算94
4.7.1浮点乘法94
*4.7.2浮点除法96
习题98
第5章指令系统100
5.1指令格式100
5.1.1指令字101
5.1.2指令操作码及其扩展技术103
5.1.3地址码与数据字长104
5.2寻址方式105
5.2.1存储器寻址方式105
5.2.2寄存器寻址方式108
5.2.3立即数寻址方式110
5.2.4堆栈寻址方式110
5.3指令类型112
5.3.1按操作数据类型分类112
5.3.2按指令功能分类113
5.4小型机指令系统举例114
5.4.1PDP11计算机简介114
5.4.2单操作数指令114
5.4.3双操作数指令117
*5.5大型机指令系统举例118
5.5.1IBM 360370计算机简介118
5.5.2指令格式119
5.5.3指令举例121
5.6微型机指令系统举例122
5.6.1IBM PC计算机及Pentium Ⅳ处理器简介122
5.6.2Intel 8086指令格式123
5.6.3Intel 8086指令的寻址方式125
5.6.48086 指令系统127
5.7机器语言与汇编语言128
5.7.1Intel 8086汇编标记与运算符128
5.7.2汇编语句129
*5.8汇编语言程序设计和上机调试130
5.8.1一般程序的设计步骤130
5.8.2汇编语言程序的调试与运行131
5.9精简指令系统计算机132
5.9.1MIPS指令格式133
5.9.2MIPS指令分类134
习题136
第6章存储系统138
6.1存储器的基本特性138
6.1.1主存储器的特性138
6.1.2辅助存储器的特性139
6.1.3主存储器的主要技术指标139
6.2半导体存储器的基本记忆单元140
6.2.1随机存储器的记忆单元140
6.2.2只读存储器的记忆单元142
6.2.3闪速存储器144
6.3主存储器的组成和工作原理144
6.3.1主存储器概述144
6.3.2RAM集成电路145
6.3.3半导体存储器的组成147
6.3.4存储器控制149
*6.3.5存储器读写时序151
6.4高速存储器152
*6.4.1新型RAM芯片技术153
6.4.2并行存储结构154
6.4.3高速缓冲存储器及分级存储体系155
6.5高速缓冲存储器156
6.5.1高速缓冲存储器工作原理156
*6.5.2高速缓冲存储器组织157
6.6虚拟存储器161
6.6.1基本原理161
6.6.2页式虚拟存储器162
*6.6.3段式虚拟存储器163
*6.6.4段页式虚拟存储器165
6.7存储保护165
6.7.1存储区保护165
6.7.2访问方式保护 167
习题167
第7章控制器169
7.1指令执行过程169
7.2控制器的功能和组成170
7.2.1控制器的功能170
7.2.2控制器的基本组成171
7.3处理器总线及数据通路176
7.3.1ALU为中心的数据通路177
7.3.2单内总线CPU结构177
7.4组合逻辑控制器179
7.4.1组合逻辑控制器的特征179
*7.4.2组合逻辑控制器设计原理179
*7.4.3可编程序逻辑阵列控制器183
7.5微程序控制器184
7.5.1微程序设计的基本原理184
7.5.2微指令方案187
*7.5.3微程序设计的基本问题189
*7.6微程序的顺序控制191
7.6.1后继微地址的增量方式191
7.6.2后继微地址的断定方式192
7.6.3顺序控制部件Am 2910193
*7.7微程序设计举例197
7.7.1指令流程图197
7.7.2微程序控制器逻辑图197
7.7.3微程序编码198
7.8指令流水线结构199
习题201
第8章外围设备203
8.1外围设备的种类和特性203
8.1.1外围设备的分类203
8.1.2外围设备工作的特性204
8.2常用输入设备205
8.2.1键盘206
8.2.2鼠标207
8.2.3扫描仪208
8.3显示设备209
8.3.1显示设备的分类和基本概念209
8.3.2字符显示器211
8.4打印装置214
841点阵式打印机214
8.4.2激光打印机215
8.4.3喷墨打印机216
8.4.4汉字的显示与打印217
8.5磁表面外存储器218
8.5.1存储原理和记录方式218
8.5.2磁盘存储器223
*8.5.3软磁盘存储器228
*8.5.4磁带存储器233
*8.5.5磁盘阵列236
8.6光盘存储器237
8.7固态盘239
8.7.1固态盘的分类及特点239
*8.7.2基本结构240
*8.8通信设备240
8.8.1调制解调器240
8.8.2模数与数模转换装置241
习题243
第9章输入输出系统与控制245
9.1系统总线245
9.1.1系统总线结构245
9.1.2总线控制方式247
9.1.3总线通信方式249
9.2微机总线250
9.2.1S100总线251
9.2.2STD总线251
9.2.3IBM PC总线251
9.2.4ISA总线251
9.2.5EISA总线252
9.2.6RS232C总线253
9.2.7IEEE488总线254
9.2.8IDE磁盘接口255
*9.2.9SCSI总线255
9.2.10PCI总线257
*9.2.11串行总线USB258
9.3基本IO接口组成和工作原理261
9.3.1设备选择电路261
9.3.2数据缓冲寄存器262
9.3.3设备工作状态262
9.3.4传输中断的请求与屏蔽263
9.4输入输出控制方式264
9.4.1程序查询方式264
9.4.2程序中断方式265
9.4.3直接存储器访问方式266
*9.4.4输入输出处理机方式267
9.5中断系统269
9.5.1为什么要设置中断269
9.5.2CPU响应中断的条件271
9.5.3中断周期272
9.5.4优先排队器及编码电路273
9.5.5中断处理过程276
9.5.6中断级及中断嵌套277
9.6DMA控制方式279
9.6.1DMA基本概念279
9.6.2DMA的工作方式280
9.6.3DMA控制器的组成280
9.6.4DMA数据传送过程281
*9.6.5通用DMA接口Intel 8257282
9.7通用并行接口286
9.7.1分类286
9.7.2基本的并行接口电路287
*9.7.3可编程序并行接口288
9.8串行通信与通用串行接口293
9.8.1串行通信方式294
*9.8.2可编程序串行接口294
习题300
第10章计算机发展展望302
10.1计算机发展史上的重大事件302
10.2中国计算机事业发展中重大事件306
*10.3并行处理技术进展308
10.3.1超标量处理机308
10.3.2超流水线处理机309
10.3.3大规模并行处理系统MPP311
*10.4智能计算机进展311
10.4.1数据流计算机312
10.4.2数据库机与知识库机313
10.5分布式计算机系统与机群系统313
10.5.1分布式计算机系统313
10.5.2计算机支持的协同工作314
10.5.3机群系统(Cluster)314
10.6计算机网络315
10.7多媒体计算机315
参考文献316
|
內容試閱:
|
前言 计算机科学技术的发展日新月异,其内涵也发生着重要转变。计算机影响人类的生产方式、认知方式和社会生活方式。它不仅是与数学、物理、化学、天文、地理、生物平行的一门学科,而且是一门推动各学科进一步向前发展的学科。计算学科作为新的基础技术学科,从狭义工具论向计算思维(Computation Thinking)转变,它强调一切皆可计算。从物理世界到社会模拟、人类各种智能活动,都可以被认为是计算的某种形式的体现。运用计算机科学的基本概念和平台,通过建立物理模型,在计算机上模拟、分析、求解、处理,进行各种科学研究活动。作为计算机科学的载体和硬件基础,计算机组织、计算机组成原理这类课程是不可逾越的。想得心应手地应用它,就要认识、了解它的思维方法,这可能会对你有启发。对于一些工科院校、文科院校、理科院校的学生来说,学习一些计算机课程是有意义的。计算机课程不要求太多,关键课程不缺即可。选择一本合适的教材,对学习来说很重要。内容太多的教材可能重点不够突出,课时安排不下;太浅的教材有些内容学不到,也不是最好的选择。作为教材,首先要把课程中最重要的内容,如基本概念、基本方法、基本原理讲清楚。越是基本的内容越是具有普遍意义,是可以举一反三的。其次,内容要跟上技术发展的步伐,要努力缩小教材与产品的差距。第三,内容要有一定深度,面向应用型教育的计算机教材也是大学教材,与中专教材不同,不是越简单越好。第四,教材要有系统性,要按照事物发展规律由浅入深、由近及远地叙述。第五,教材内容要联系实际,计算机组成原理是一门计算机硬件基础课程,讲述计算机主要部件的具体组成和工作原理,只有通过典型事例才容易说明问题。本教材就是基于以上思想编写的。作者1959年从清华大学计算机专业毕业留校后,长期从事计算机专业的教学和科研工作,先后主讲计算机原理、计算机组织与结构、并行和分布处理系统等课程,积累了一定的教学经验。2002年,作者有机会参与高等职业教育的教学工作,深感编写一本好教材的迫切,在清华大学出版社的大力支持下,2003年编写出版了《计算机组成原理》一书。这是一本面向普通高等教育,包括高等职业教育和成人教育的计算机原理教材,也是一本引导广大计算机爱好者步入计算机应用领域的计算机基础教材。为了培养学生的动手能力,加强实践教学环节,清华大学计算机系计算机组成原理实验室的老师们专门为本课程研制了EC2003教学实验系统。2004年10月出版了该书的配套实验指导书《计算机组成原理实验指导》。2005年4月又出版了《计算机组成原理例题分析与习题解答》。三本教材密切配合,提供了一种教学理论联系实际,训练动手能力,掌握分析方法的良好学习环境,受到读者欢迎。该套教材于2006年被评为北京高等教育精品教材。本教材的第1版主要是面向高职高专院校编写的,由于教材内容充实、重点突出、联系实际,很多应用型本科院校也希望选用,因此,第2版改版采纳了一些应用型本科院校的意见,结合计算机发展的新进展,对第1版内容进行了补充修改,对于不同类型、不同层次、不同要求的学校,书中提供一些可以选学的内容(目录中带*号的章节)。本书第2版被教育部评定为普通高等教育十一五国家级规划教材。本书在使用中得到大家厚爱,收到一些建议。如软件工程专业老师反映,本课程是该专业唯一一门与硬件相关的专业知识课程,重点让学生了解一个完整的计算机硬件系统结构、计算机的构成部件、各部件的作用和工作原理,以及一个程序在计算机中的运行过程,同时介绍一些新型计算机结构。由于没有开设独立的数字电路课程,建议教材适当补充布尔代数和门电路的相关基础知识。为了满足有关专业需求,本书第3版增加布尔代数与逻辑电路一章。并在指令系统汇编语言一节后增加汇编语言程序设计与上机调试等有关内容。对其他章节也做了部分补充,希望能有积极的意义。为了方便教学,重庆工程学院的老师们专为本书编制了课件,特此表示感谢。本教材以面向应用型人才培养为特色,适合应用型本科和高职高专院校教学需要。由于计算机组成原理课程对学习计算机专业知识具有承上启下、承前启后的作用,本教材也可作为从事计算机应用开发人员的自学用书或培训教材。书中难免存在不足和疏漏之处,敬请指正。
谢树煜2017年3月于清华园计算机组成原理第3版
第5章指 令 系 统计算机的指令是程序人员和计算机交往的最基本的界面,是机器指令的简称。机器指令是人们指示计算机执行各种基本操作的命令。一般来说,指令包括操作码及地址码两部分,用二进制编码表示。操作码用来表示各种不同的操作,如加、减、乘、除等。不同指令的操作码是不同的。操作码的位数,反映一台机器允许的不同指令的个数。如5位操作码,可以有25=32个编码,最多允许设置32种指令;7位操作码,最多有27=128个编码,最多允许设置128种指令。指令种类的多少,反映机器功能的强弱,但增加指令种类伴随而来的是机器结构愈加复杂。地址码指出被运算数据在存储器中存放的位置。被运算数据,一般都放在计算机的主存储器中。因此,指令地址码通常给出的是被运算数据的主存地址编号。地址位数反映CPU可直接访问的主存的容量,如地址码是11位二进制数,则可直接访问的主存最大容量是211=2048个地址单元,简称2K个单元;若地址码是15位,最大的主存容量是215=32 768个单元,简称32K个单元。因为指令字的位数有限,通常不直接给出要访问的主存单元地址,而是通过地址变换技术,扩充可以访问的主存容量。通过指令中给出的地址码及地址变换方式字段,寻找操作数在主存中存放的真实地址,这种方法叫寻址方式。寻址方式不但扩大了可以访问的存储器容量,而且还可以为满足用户提出的各种方便编写程序的需要。指令系统是一台机器所能执行的全部指令。确定机器指令系统是计算机设计时的大事,一方面机器设计要满足用户的需要,方便编制程序;另一方面要节省设备,简化硬件结构,这对于机器的造价、维护、可靠性等方面都有好处。由于计算机发展很快,各种型号的计算机层出不穷,其性能有了很大提高,但是由于指令系统不兼容给用户更新机器带来很大不便。因此提出了计算机升级换代的系列化问题,特别是指令系统兼容问题,这在计算机的推广应用及设计生产时都值得特别重视。5.1指令格式计算机能把计算程序存放在存储器中,并按规定顺序执行有关操作,是近代计算机广泛应用的关键,这种存储程序的概念是冯诺依曼1945年提出的。实现存储程序的关键是用二进制代码表示指令。其中,一部分二进制代码表示操作种类的性质,另一部分二进制代码表示参加操作的数据在存储器中存放的位置。从主存看,指令字表面上与数据字没有什么不同,但作为指令的二进制代码与数据字有着根本不同的含义。主存单元作为指令字或是数据字是由指令计数器及指令中地址码分别给出的。由指令计数器给出地址,从主存单元中读出指令字,读出的内容送给控制器中的指令寄存器进行分析。根据指令中地址码决定的主存有效地址,从主存单元读出操作数,读出的内容送到运算器中的数据寄存器中等待运算器处理。计算机组成原理第3版第5章指令系统5.1.1指令字指令字的位数叫指令字的长度。它通常与数据字的长度有关,也就是说与每个主存单元存放的数据位数有关。每个主存单元,可以用来存放一个操作数,也可用来存放一条指令,选取指令字长与数据字长相同,可以充分利用主存单元每个信息位,另外也便于存放。如果指令字长大于数据字长,则取一条指令,要访问几次主存,造成控制线路复杂,也降低了执行一条指令的速度。因此大多数机器选取二者等长。但在8位字长的微机中,除8位指令外,还设有多倍字长的指令,满足长指令字的需要。在一些大型计算机中,数据字较长,如48位、64位等,而指令字较短,若一个主存单元中存放两条指令或三条指令,可以充分利用主存单元中每个信息位。读指令时,一次读出多条指令,供控制器依次分析处理,这样做还可以提高指令的执行速度。大型计算机指令系统复杂,指令功能差别较大。不同类型的指令字长是不同的。这样可以更好提高主存单元利用率。例如IBM 360370计算机字长是32位,两个操作数的指令字长有16位、32位、48位三种,分别对应于寄存器寄存器型指令,寄存器存储器型指令,以及存储器存储器型指令。一般指令中应包括以下信息:1 操作的种类和性质,称为操作码。2 操作数的存放地址,在双操作数运算中,如加、减、乘、除、逻辑乘、逻辑加的运算中都需要指定两个操作数,给出二个操作数地址。3 操作结果存放地址。4 下条指令存放地址。这样可以保证程序能连续不断地执行下去,直到程序结束。指令中用不同的代码段表示上述不同信息,这种代码段的划分和含义,就是指令的编码方式,又叫指令格式,通常一条指令中包括操作码字段和若干个地址码字段。操作码字段规定操作的种类、性质、指令字长度、操作数个数和指令格式等,一般放在指令的第一个字段。存放操作数位置的字段,称为操作数地址码,一般操作数可以放在通用寄存器或主存中,因此,操作数地址码可以是寄存器号或主存单元地址。同理,存放操作结果位置的字段,也可以是寄存器号或主存单元地址。一般情况下,程序中各条指令是顺序执行的。下条指令放在当前指令后一单元中,也就是下条指令地址是当前指令地址加1,多数计算机中都设置程序计数器PC,指明本条指令的主存存放地址,本条指令结束时,PC+1给出下条指令地址。这样在指令中可以省去一个地址字段,缩短指令字长度。如果当前指令占用多个存储单元,则下条指令地址为PC加上当前指令占用的主存单元数。典型的指令格式如图51所示。OPA1A2A3操作码地址码1地址码2地址码3图51典型指令格式这种指令操作的含义是: 主存地址A1单元中的数据与主存地址A2单元中的数据,执行OP规定的操作,运算结果放到主存地址A3的单元中。根据指令中包含地址码的数目,指令可分为以下几种格式。1 三地址指令,指令格式与图51相同。OP为操作码,并且表示按三地址指令格式解释指令;A1为第一源操作数地址;A2为第二源操作数地址;A3为运算结果存放地址。该指令的含义是: (A1)OP(A2)A3。这里需要说明: A1表示主存单元的地址, A1表示主存单元存放的数据,是A1单元的内容。三地址指令字长较长,程序在主存中占用单元数较多,并且执行一条指令最多要访问存储器四次,即取指令,取第一源操作数,取第二源操作数,结果送往主存单元。因此,执行一条指令的时间也较长。2 二地址指令,指令格式如图52所示。为了缩短指令字长度,可把存放运算结果的地址码省去,规定第二源操作数地址一身二用,即不但作为第二源操作数地址,还兼作运算结果存放的主存地址。二地址指令含义: (A1)OP(A2)A2。二地址指令表达意义清楚,指令字长较短,但执行结果删去了一个操作数,有时也带来不便。3 一地址指令,指令格式如图53所示。图52二地址指令格式图53一地址指令格式一地址指令只给出一个操作数地址,另外一个操作数地址,隐含规定为累加器AC。在单累加器结构的计算机中,都这样处理。一地址指令的含义是: (AC)OP(A)AC。累加器的名称也由此而来。每一条指令运算结果都放在累加器中,当然累加器也提供一个操作数。这种指令的优点是指令字长短,访问主存次数少,指令执行时间短应用非常广泛。缺点是上条指令运算结果还有用时,需另外保存。(4) 寄存器型指令指令中地址码不是主存地址,而是运算器中数据寄存器编号。这种指令的优点是指令字长短、访问主存次数更少、指令执行时间更短,因此应用很广,特别是二个操作数都在寄存器中,除了取指令外,一个时钟周期即可得到运算结果。在新型的精简指令计算机系统中,广泛采用寄存器型指令。5 有些指令不需要指出操作数地址,如堆栈指令,由栈顶两个单元的数相操作,操作结果仍放在堆栈中,这种指令格式称为零地址指令。还有一类指令,根本不需要操作数,常用于控制操作,如停机、空操作等。在一些大型机中,还设置向量指令、字符串处理指令等,它们所需的地址字段会更多一些。5.1.2指令操作码及其扩展技术指令操作码有两种编码格式,常用的是固定格式,操作码长度固定不变,放在一个字段中,若操作码为k位二进制数,则它最多只能有2k种不同指令。这种格式译码方便,控制简单,在大中型计算机中采用。缺点是扩充性差、不灵活。如IBM 360370计算机、VAX11系列计算机字长为32位,操作码字段占8位,可表示256种不同指令。另一种格式为可变长度操作码格式,各种指令的操作码位数不同,能够在不长的指令字中灵活设置很多种指令,满足不同类型指令的需要,因此能够有效缩短操作码的平均长度,增加新的指令也比较方便。但这种操作码译码不方便,而且指令格式也不规整。【例51】设某台机器有指令128种,用二种操作码编码方案: 1用固定长度操作码方案设计其操作码编码; 2如果在128种指令中常用指令有8种,使用概率达到80%,其余指令使用概率为20%,采用可变长操作码编码方案设计其编码,并求出其操作码平均长度。解:1 采用固定长操作码编码方案,需要7位操作码,27=128,可有128种编码,每种编码表示一种指令。2 采用可变长操作码编码方案,用4位代码表示8种常用指令,用8位代码表示120种不常用指令,具体操作码分配如下:0000表示指令0的操作码0001表示指令1的操作码0111表示指令7的操作码1000 0000表示指令8的操作码1000 0001表示指令9的操作码1000 1111表示指令23的操作码 1001 0000表示指令24的操作码1001 1111表示指令39的操作码1110 1111表示指令119的操作码1111 0000表示指令120的操作码1111 0111表示指令127的操作码指令操作码的平均长度为4位80% 8位20%=4.8位可见使用可变长操作码可以有效缩短操作码平均长度。从指令的扩展性看,可变长操作码提供这种支持,特别是系列计算机设计中,为了保持软件的兼容性,希望保留先前机器指令的编码,而新增指令的操作码与以前指令的操作码又不相同。在上例中,7位固定长操作码已经不能扩展新的指令,而8位操作码方案剩下的编码种类也是有限的,如利用可变字长操作码方案,把操作码扩展为12位,显然824=128,则又可扩展128种指令。例如PDP11计算机指令操作码采用可变长度方案,其字长为16位,操作码长度有4位、7位、8位、13位和16位几种。5.1.3地址码与数据字长地址码用来指定操作数的地址。地址码可以是存储器地址,也可以是通用寄存器号。地址码的编码方法很多,形成操作数有效地址的方法各不相同,我们把寻找操作数有效地址的方式称为寻址方式,在5.2节中专门介绍。指令中需要的操作数的个数不同,根据操作数的个数,可以设置不同数目的地址码。操作码的设计应与地址码的设计相配合。例如地址码数目较多的指令中可安排较短的操作码,或者操作码较长的指令中安排的地址码是寄存器号等。计算机中处理的数据字长,有时并不是固定的。会根据指令的不同要求而改变。如IBM 360370计算机单字长指令处理数据是32位,双字长指令处理的数据是64位,有时还要处理16位半字数据,有时又要处理8位数据。字长为8位的数据对应8位的ASCII编码,在字符处理中非常有用。通常称为1字节。为了能读、写1个字节数据,必须对每一个字节单元进行编址,因此在IBM 360370系列机以及PDP11系列机中,都是对字节进行编址。但是CPU处理数据以及与主存交换数据,大多数情况都是以单字长形式进行的,每次访问主存,必须保证能够读出一个单字长数据,因此不同类型的数据在主存中的存放有专门规定。如IBM 360370系列机器规定: 主存的最小寻址单位为字节,每个字节有一个地址编号,字节地址是任意的二进制数。2个字节组成16位的半字,半字的地址为2的倍数,即地址的最低位为0,由本地址指出的字节与下一地址字节(本字节地址 1)组成16位半字,也可称双字节数据。单字长数据由4个字节组成,共32位。其地址为4的倍数,即字地址的最低两位为00,本地址字节与紧跟着的3个字节一起组成一个32位的单字长数据。双字长数据由8个字节组成,共64位,其地址为8的倍数,即地址的末3位为000,显然本地址字节与紧跟的7个字节组成一个双字,字节地址末3位为000~111,共8个字节。这种多字节数据地址编排格式称为数据边界对齐,其基本要求是一个数据字存放在一个完整的数据单元中,一次访存操作能够读出一个完整的数据字。或者说用最少的访存次数读取一个多字节数据。这就要求一个4字节长的数据必须放在一个主存的字单元中;一个8字节长的数据必须放在2个主存的字单元中;一个双字节数据必须放在1个字单元中,且必须放在该字单元的高2个字节或低2个字节,保证每个字单元可以存放2个双字节数据,如图54所示。图54存储数据边界对齐示意图当一个数据字或一个双字长数据字在主存单元中存放时,可以把低位字节数据放在字节地址小的字节内;也可按照相反次序存放,低位字节数据放在字节地址大的字节内,高位字节放在字节地址小的字节内。前者称小数端数据存储方式,后者称大数端数据存储方式。5.2寻址方式在指令中,由于指令字长有限,且主存地址位数太多,通常在指令的地址码中不直接给出被运算数在主存中存放的地址,而是给出寻找操作数有效地址的编码方法和位移量,位移量有时又叫形式地址。寻找操作数有效地址的方式叫寻址方式。设置不同寻址方式的目的,除了扩展可以访问的主存容量外,也是为了在程序中更加灵活地指定操作数的存放位置,特别是在重复执行的程序段中以及对某些数据结构类型进行操作时,可以不修改程序就完成对不同数据的操作。5.2.1存储器寻址方式操作数在存储器中存放。经常使用的寻址方式有如下几种。1. 直接寻址方式指令地址码中直接给出操作数存放的有效地址,这种寻址方式叫做直接寻址方式。直接寻址中地址码的位数决定了可以访问的主存容量。这种方式适于访问固定的主存单元,如图55所示。图55直接寻址方式存放操作数的有效地址是EA=D,D单元的内容是操作数。2. 间接寻址方式指令地址码中给出的既不是操作数,也不是操作数地址,而是存放操作数地址的主存单元地址,访问一次主存后,才可得到操作数有效地址,这种方式称为一次间接寻址方式。存放操作数地址的寄存器或主存单元又叫地址指针。指令中必须给出间接寻址的标志,以便与直接寻址等方式相区分。其指令格式如图56格式。图56间接寻址方式存放操作数的有效地址是EA=(D)=A,即指令地址码指定单元D的内容是EA,而EA单元的内容(主存A单元的内容)是操作数。3. 变址寻址方式指令中的地址码位数有限,为了扩大访存容量,常常采用变址寻址方式。规定指令中的地址码与另外一个寄存器的内容相加,得到的结果才是操作数的有效地址。显然操作数有效地址的位数取决于相加2个数中位数最长的数。如地址码8位,寄存器存放的数为16位,两数相加其和为16位数,有效地址位数应为16位数,显然扩大了可访问的存储器的空间。变址寻址方式的指令中应有变址寻址标志,指出有效地址码如何形成,同时应该设有专门的变址寄存器,其内容称为变址量,其指令格式如图57所示,其中变址寄存器RX中数据K称变址量;操作数的有效地址: EA=(RX) D=K D=E,E单元的内容是操作数。有时变址寄存器可以有多个,由指令指定具体使用哪一个变址寄存器。变址寻址方式适合于对一组数据进行访问,每访问一个数据元素后,只要改变变址值,就可用原来的指令访问下一个数据元素。图57变址寻址方式4. 相对寻址方式相对寻址方式是一种特殊的变址寻址方式。当变址寄存器指定为程序计数器PC时的寻址方式称为相对寻址方式。PC的内容是当前执行指令的地址。相对寻址方式格式如图58所示。图58相对寻址方式存放操作数有效地址是EA=(PC) D=E,EA单元的内容(即E单元的内容)是操作数。指令中地址码部分D给出的叫位移量,它是一个固定的数值。当前指令的地址是(PC)单元,而指令使用的操作数放在距本条指令地址间隔为D的那个单元中。这种指令适合于程序搬家再定位时使用,因为不管指令搬到何处,其使用的操作数永远放在距本条指令地址为D的那个单元中。5. 基址寻址方式在多用户的计算机中,为每一个用户分配一个存储空间,每个用户按自己的逻辑地址编程。在程序装入机器中运行时,为每个用户指定一个基地址,用户程序实际存放的地址为基地址与其逻辑地址之和,不同用户使用不同的基地址,占用不同的存储空间。这种寻址方式称为基址寻址方式。在计算机中需设置专门的基址寄存器,其内容由系统指定。基址寻址指令格式如图59所示。图59基址寻址存放操作数的有效地址是EA=(Rb) D=E,其中Rb为基址寄存器。5.2.2寄存器寻址方式在计算机中,运算器中的数据寄存器数目越多,运算越方便,还可以减少访存次数。例如,本条指令的结果下条指令不用,但再下条指令使用,这时运算器中数据寄存器数目少时,必须将本条指令结果先存入存储器,再下条指令使用时,还需由该存储单元取出来送入运算器,多访问了两次存储器;如果运算器的数据寄存器多,就可将运算结果存放到一个暂时不用的寄存器中,不必存到存储器中。运算器中的数据寄存器称为通用寄存器,各个寄存器的作用,地位都是一样的。计算机执行程序时,操作数在通用寄存器中存放,取数时不必访问存储器,这样可以加快程序的执行速度。在相应的指令地址码中,只要给出寄存器号即可。由于寄存器数目不会太多,一般是4个、8个、16个或32个。因此,寄存器的编号为2~5位二进制数。例如: 有4个通用寄存器,则用00、01、10、11分别表示4个通用寄存器的编号,4个寄存器也可分别用R0、R1、R2、R3表示,称为寄存器地址。寄存器地址位数少,指令字长较短,一条指令中可以设置多个寄存器地址。在寄存器寻址的指令中,一般给出两个寄存器地址,相当于二地址指令,指令格式中,除了操作码外,还给出源寄存器编号和目的寄存器编号,分别称为RS、RD,为使用通用寄存器存放操作数的指令带来很多方便。1. 寄存器直接寻址图510寄存器直接寻址方式操作数在寄存器中存放,指令的地址码只需给出寄存器号即可。由于寄存器号的位数不多,指令字长较短,另外取操作数不需访问主存,因而指令执行速度较快。在一地址指令中若使用寄存器寻址,指令中给出一个源寄存器号Ri,另一个操作数隐含指定放在累加寄存器AC中,且AC还用来存放运算结果。寄存器直接寻址指令格式如图510所示,执行: ACOPRiAC。2. 寄存器间接寻址如果在指令地址码中给出的不是操作数的地址,而是存放操作数地址的主存单元地址时,称为间接寻址。同理,寄存器寻址时,指令中指定的寄存器中存放的不是操作数,而是操作数的地址时,称为寄存器间接寻址。寄存器间接寻址方式是指令中指定的寄存器含有操作数的有效地址,而不是操作数本身。此种方式,要读操作数必须访问主存,但找操作数有效地址,不访问主存。这种指令的字长也较短,其指令格式如图511所示。图511寄存器间接寻址方式寄存器间接寻址方式操作数有效地址: EA=(Ri)=E。指令执行ACOPRiAC。特别强调,Ri的内容不是操作数,而是操作数的地址。要找到操作数,还需访主存。操作数在存储器中存放,从寻找操作数的角度看,应属于存储器型寻址。但指令格式属于寄存器型寻址,指令中给出的是寄存器编号。该类指令是寄存器直接寻址,还是寄存器间接寻址,一般由操作码指定,或是由地址码字段的寻址方式位来决定。有些计算机的指令是二地址指令,一个地址是寄存器号,另一个地址是存储器地址。
|
|