唐朔飞版和白中英版《计算机组成原理》考研考点讲义.pdf
- 文件大小: 11.31MB
- 文件类型: pdf
- 上传日期: 2025-08-25
- 下载次数: 0
概要信息:
目 录
绪论 (1)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
第一章 计算机系统概述 (3)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
第二章 数据的表示与运算 (12)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!
第三章 存储器层次结构 (64)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
第四章 指令系统 (110)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
第五章 中央处理器 (133)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
第六章 总线 (168)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
第七章 外围设备 (180)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
第八章 输入输出系统 (198)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
绪 论
一、课程的地位:
核心课程中的骨干课程
核心专业基础
核心硬件课程
学位课
国家研究生入学统考科目
大部分自主命题学校研究生入学考试科目
二、与其他课程联系
三、考试特点分析
1.有单独作为一门专业课考查,也有与其它专业课混合考查
2.课程特相对较难,因为:
内容面广,知识点多。
内容不具体不直观、不具体、抽象!
技术性、工程性、实践性强,知识与技术发展变化快,对实验环境要求高,部分学校投入不足,学
生对硬件课程缺乏足够的重视。
四、复习方法
1.课堂听讲:是传授与接收理论知识的主渠道,课堂的效率可以节约大量的课余时间,本课程自
1
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
学难度较大。如还有不懂,在学习本视频课程中反复听讲,及时消化。
2.及时复习:是学习的重要环节,在遗忘前复习。
3.不轻视基础内容,不怕难点内容。
4.适当习题:做一定量的习题,是帮助理解和熟练掌握课程内容的重要环节,应独立认真完成 。
五、复习注意事项
1.分清复习的阶段,对课程进度把握
2.亲手做题,切忌眼高手低,在练习中总结出题方向和方法
3.重视真题,透彻分析,揣摩出题人心理
4.讲过的知识点和题一定要真正弄懂
5.注重知识点之间的联系
六、教材及主要参考资料
《计算机组成与结构》(第四版)王爱英主编 清华大学出版社
《计算机组成原理》王闵编著 电子工业出版社
《计算机组成与设计》胡越明主编 科学出版社
2
? 第一章
计算机系统概述
一、本章要求
学习计算机组成原理之前,先搞清楚计算机的系统层次结构,计算机硬件的基本组成(五大部件
的构成)、计算机软件的分类,以及计算机的基本工作过程。
从体系结构上来看,有多种不同类型的计算机,那么这些不同的计算机谁好谁坏?如何评价?还
需要我们了解计算机性能评价指标和相关参数。
二、目录分析
1.1计算机的发展历程[了解]
1.2计算机结构
1.2.1计算机硬件的基本组成[一般理解]
1.2.2计算机软件的分类[一般理解]
1.2.3计算机的工作过程 [掌握]
1.2.4计算机的层次结构 [一般理解]
1.3计算机性能指标 [掌握]
三、考试分析
考点 重点与难点 考试中常见题型 复习思路与方法
计算机发展历程、系统层
次结构、硬件的基本组成、
软件的分类、工作过程、计
算机性能指标
系统层次结构、工作
过程、性能指标
以选择,填空,判断
小题为主
了解概念,抓住教材。理
解计算机的工作过程。
第1讲 计算机的硬件、软件和层次结构
一、考点精讲
1.2计算机结构
3
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
1.2.1计算机的硬件
计算机系统
硬件:指组成计算机的各种设备实体,计算机系统是物质基础。
软件:泛指各种程序和文件{ 。
计算机的基本功能主要包括数据加工、数据保存、数据传送和操作控制等。
计算机硬件有哪些?计算机到底怎么工作?
计算机硬件系统五大功能部件包括:
运算器、控制器
存储器(高速缓存 主存储器 虚拟存储器)
输入设备、输出设备
这些设备和部件通过 总线 和 接口 连结在一起,构成一台完整的计算机。
现也有认为五大组成部分是CPU、存储器。摄入设备、输出设备、总线。还有其它分法。
4
计算机系统的硬件组成
1.运算器
运算器就好比一个由电子线路构成的算盘,能进行加、减、乘、除等算术运算,还可进行逻辑运算,
其主要功能包括:
(1)执行数值数据的加减乘除等算术运算,执行逻辑数据的与或非等逻辑运算,由一个被称为
ALU的线路完成。
(2)暂时存放参加运算的数据和中间结果,由多个通用寄存器和乘商寄存器承担。
(3)运算器通常也是数据传输的通路 。
计算机中通常采用二进制数。因为二进制数的运算规律非常简单,在电子线路中比较容易实现,
而且设备也最节省。
注:二进制数和十进制数一样,位数越多,计算的精度就越高,但是位数越多,所需的电子器件也
越多。目前计算机的运算器长度一般是8位、16位、32位或64位。
2.存储器
保存或“记忆”解题的原始数据和解题步骤。在运算前把参加运算的数据和解体步骤通过输入输
出设备送到存储器中保存起来。
不论是数据,还是解题步骤。存储器存储的全是0或1表示的二进制代码。
目前采用半导体器件来作为存储器。一个半导体触发器(D触发器等)可以记忆一个二进制代
码,一个数假定用16位二进制代码表示,那么就需要有16个触发器来保存这些代码。
存储元:保存一个二进制为的触发器,称为一个存储元。
存储单元:在存储器中保存一个字的所有触发器,称为一个存储单元。
地址:存储器是由许多存储单元组成,每个存储单元的编号,称为地址。
存储容量:存储器所有存储单元的总数。通常用单位“KB、MB、GB、TB”表示,如64KB,128KB。
存储容量越大,表示计算机记忆储 存的信息就越多。
外存储器:计算机中又配备的存储容量更大的磁盘存储器、光盘存储器等。相对而言,半导体存
5
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
储器称为内存储器,磁盘存储器、光盘存储器等称为外存储器。
由高速缓冲存储器、主存储器、虚拟存储器所组成的多级存储器系统,是计算机中用于存储程序
和数据的部件。这三级存储器各自的功能分工、所用的存储介质的工作原理和特性各不相同。将作为
三个部分分别讲解。
3.控制器
控制器是计算机中发号施令的部件,向计算机各功能部件提供每一时刻协同运行所需要的控制
信号:它控制计算机的所有部件有条不紊地进行工作。控制器的任务是从内存中取出解题步骤加以
分析,然后执行某种操作。
(1)正确分析与执行每条指令:取指令→分析指令→执行指令。
(2)保证指令按规定序列自动连续地执行。
(3)对各种异常情况和请求及时响应和处理。
1)计算程序
运算器只能完成加、减、乘、除四则运算及其他一些辅助操作。对于比较复杂的算题,计算机在运
算前必须化成一步一步简单的加、减、乘、除等基本操作来做。
每一个基本操作就叫做一条指令,而解算某一问题的一串指令序列,叫做该问题的计算程序,简
称为程序。
例如在前述求解y=ax+b-c的例子中,解题步骤的每一步,只完成一种基本操作,所以就是一条
指令,而整个解题步骤就是一个简单的计算程序。
2)指令的形式
指令的内容由两部分组成,即操作的性质和操作的地址。前者称为操作码,后者称为地址码。
6
操作码:指出指令所进行的操作,如加、减、乘、除、取数、存数等等;
地址码:表示参加运算的数据应从存储器的哪个单元取,运算的结果应存到哪个单元。
表中指令的操作码部分就可以变成二进制代码。假如把地址码部分和数据也换成二进制数,那
么整个存储器的内容全部变成了二进制的代码或数据
指令的操作码定义
指令 操作码
加法 001
减法 010
乘法 011
除法 100
取数 101
存数 110
打印 111
停机 000
将指令存放到存储器中叫存储程序。
存储器的任何位置既可以存数据也可以存指令,但是一般将指令和数据分开存。
控制器依靠存储的的程序来控制全机协调地完成计算任务叫做程序控制。
存储程序并按地址执行就是冯·诺依曼型计算机的设计思想,也是机器自动化工作的关键。
3)控制器的基本任务
计算机进行计算时,指令必须是按一定的顺序一条接一条地进行。
控制器的基本任务,就是按照计算程序所排的指令序列,先从存储器取出一条指令放到控制器
中,对该指令的操作码由译码器进行分析判别,然后根据指令性质,执行这条指令,进行相应的操作。
接着从存储器取出第二条指令,再执行这第二条指令。依次类推。
通常把取指令的一段时间叫做取指周期,而把执行指令的一段时间叫做执行周期。
因此,控制器反复交替地处在取指周期与执行周期之中。每取出一条指令,控制器中的指令计数
器就加1,从而为取下一条指令做好准备,这也就是指令为什么在存储器中顺序存放的原因。
7
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
4)指令流和数据流
计算机字既可以代表指令,也可以代表数据。如果某字代表要处理的数据,则称为数据字;如果
某字为一条指令,则称为指令字。
指令和数据统统放在内存中,从形式上看,它们都是二进制数码。一般来讲,在取指周期中从内存读
出的信息是指令流,它流向控制器;而执行周期中从内存读出的信息流是数据流,它由内存流向运算器。
4.适配器与输入输出设备
输入设备把人们所熟悉的某种信息形式变换为机器内部所能接收和识别的二进制信息形式。
输出设备把计算机处理的结果变换为人或其他机器所能接收和识别的信息形式。
计算机的输入/输出设备通常称为外围设备(简称外设)。
由于种类繁多且速度各异,因而它们不是直接地同高速工作的主机相连接,而是通过适配器部件
与主机相连接。
冯·诺依曼思想的基本要点:
(1)采用二进制形式表示数据和指令
(2)由输入设备、输出设备、运算器、存储器和控制器五大部件组成。
(3)采用存储程序方式
存储程序方式是诺依曼思想的核心。
(4)指令和数据以同等地位存于存储器,可按地址寻访,程序和数据统一存储
(5)指令由操作码和地址码组成
(6)以运算器为中心
1.2.2软件的组成和分类
计算机软件:系统程序,应用程序
系统程序用来简化程序设计,简化使用方法,提高计算机的使用效率,发挥和扩大计算机的功能
及用途。包括:
各种服务性程序:如诊断程序、排错程序、练习程序等;
语言程序:如汇编程序、编译程序、解释程序等;
操作系统
数据库管理系统
应用程序是用户利用计算机来解决某些问题所编制的程序,如工程设计程序、数据处理程序、自动控制程
序、企业管理程序、情报检索程序、科学计算程序等等。随着计算机的广泛应用,这类程序的种类越来越多。
如同硬件一样,计算机软件也是在不断发展的。
1.目的程序
用机器语言书写的程序,计算机完全可以“识别”并能执行,所以又叫做目的程序。
用机器语言编写程序很繁琐,又耗费大量的人力和时间,容易出错,出错后寻找错误也相当费事。
8
2.汇编程序
为了编写程序方便和提高效率,人们用一些约定的文字、符号和数字按规定的格式来表示各种不
同的指令,然后再用这些特殊符号表示的指令来编写程序。
借助于汇编程序,计算机本身自动地把称为汇编源程序翻译成用机器语言表示的目的程序。
3.源程序
算法语言比较接近数学语言,直观通用,与具体机器无关,便于学习,便于推广使用计算机。
用算法语言编写的程序称为源程序,源程序是不能由机器直接识别和执行的,必须给计算机配备
一个即懂算法语言又懂机器语言的“翻译”,才能把源程序翻译为机器语言。
(1)把源程序翻译成目的程序,然后机器执行目的程序,得出计算结果。通常,把编译程序和运行
系统和称为编译系统。如VC、C++、C等
(2)逐个解释并立即执行源程序的语句,它不是编出目的程序后再执行,而是直接逐一解释语句
并得出计算结果。叫解释系统。如BASIC、VB等
1.2.3计算机的工作过程
使用计算机处理一个实际问题过程
(1)建立数学模型
(2)找出计算方法
(3)编写计算机程序
(4)调试运行程序
(5)输出运算结果
计算机硬件的工作过程
(1)把程序和数据装入主存储器
(2)从程序起始地址开始运行程序
(3)从首地址取出一条指令,译码,执行,并计算下一条指令地址
(4)取第二条指令,译码,执行,再计算下一条指令地址
…… …… ……
9
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
(5)程序结束
1.2.4计算机系统层次结构
1.3计算机的性能指标
机器字长 指处理机运算器中一次能够完成二进制数运算的位数。当前处理机的字长有8位、
16位、32位、64位。
字长越长,表示计算的精度越高。与 CPU中的 寄存器位数有关
吞吐量 表征一台计算机在某一时间间隔内能够处理的信息量,单位是字节/秒(B/s)。
响应时间 表征从输入有效到系统产生响应之间的时间度量,用时间单位来度量,例如微秒(10
-6s)、纳秒(10-9s)。
利用率 表示在给定的时间间隔内,系统被实际使用的时间所占的比率,一般用百分比表示。
总线宽度 一般指CPU中运算器与存储器之间进行互连的内部总线二进制位数。
存储器容量 存储器中所有存储单元的总数目,通常用KB、MB、GB、TB来表示。
其中K=210,M=220,G=230,T=240,B=8位(1个字节)。
存储器容量越大,记忆的二进制数越多。
存储器带宽 存储器的速度指标,单位时间内从存储器读出的二进制数信息量,一般用字节数/
秒表示。
主频/时钟周期 CPU的工作节拍受主时钟控制,主时钟不断产生固定频率的时钟,主时钟的频
率(f)叫CPU的主频。度量单位是 MHz(兆赫兹)、GHz(吉赫兹)。例如 Pentium系列机为60MHz~
266MHz,而Pentium4升至3.6GHz。
主频的倒数称为CPU时钟周期(T),即T=1/f,度量单位是微秒、纳秒。
CPU执行时间 表示CPU执行一段程序所占用的CPU时间,可用下式计算:
CPU执行时间 =CPU时钟周期数 ×CPU时钟周期长
CPI 表示每条指令周期数,即执行一条指令所需的平均时钟周期数。用下式计算:
MIPS 表示每秒百万条指令数,用下式计算:
01
MFLOPS 表示每秒百万次浮点操作次数,用下式计算:
MIPS是单位时间内的执行指令数,所以MIPS值越高说明机器速度越快。
MFLOPS是基于操作而非指令的,只能用来衡量机器浮点操作的性能,而不能体现机器的整体
性能。
TFLOPS 表示每秒万亿次浮点操作次数,该技术指标一般在超级计算机中使用。
二、真题举例:
1.冯·诺依曼计算机中指令和数据均以二进制形式存放在存储器中,CPU区分它们的依据是(
)[2009]
A.指令操作码的译码结果 B.指令和数据的寻址方式
C.指令周期的不同阶段 D.指令和数据所在的存储单元
2.下列选项中,描述浮点数操作速度指标的是( )[2011]
A.MIPS B.CPI C.IPC D.MFLOPS
三、本讲小结
本讲主要讲解了计算机的基本组成和基本工作过程。
重点讲解计算机各部件的分工的工作过程。
常考题型以小题为主,一般一份试卷最多一两道小题。
应试方法通读教材,深入理解计算机的工作过程。
11
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
? 第二章
数据的表示和运算
一、本章要求
十、二、八、十六进制数及其相互转换。真值和机器数之间的关系以及 BCD码、字符与字符串的
编码、校验码。
数据的表示码原码、反码、补码、移码以及它们之间的关联与区别。
定点数的表示,定点数位移运算、原码定点数加/减运算、补码定点数的加/减运算、定点数乘/除
运算、溢出概念和判别方法。
浮点数的表示(浮点数的表示范围和IEEE754标准)和浮点数的加/减运算。
串行加法器和并行加法器、算术逻辑单元ALU的功能和结构。
二、目录分析
2.1数据的表示与编码[理解、掌握]
2.2定点数加/减法[理解、掌握]
2.3定点数乘法 [理解、掌握]
2.4定点数除法 [理解、掌握]
2.5浮点数 [理解、掌握]
2.6ALU[理解、掌握]
三、考试分析
考点 重点与难点 考试中常见题型 复习思路与方法
数据的表示及编码,定点
数运算,浮点数运算以
及ALU
数据的机器码表示及
其关系,定点运算、浮
点数的规格化表示及
其运算
试题基本涵盖所有
题型,还易和其它章
节结合的综合性应
用题
对数据机器码表示机制要
深入理解,这样更容易记
忆他们之间的关系,对于
运算重点掌握运算方法。
21
第1讲 数的机器表示(一)
一、考点精讲
2.2定点数的表示和运算
2.2.1定点数的表示
定点表示:约定机器中所有数据的小数点位置固定不变。由于约定在固定的位置,小数点就不再
使用记号“.”来表示。
通常将放到数值位最后面或者最前面,这样数据表示成纯整数或纯小数。
1.无符号数的表示
用全部二进制代码表示表示数字,没有符号位
8位二进制无符号数范围(00000000~11111111)
0~28-1
2.有符号数的表示方法
定点数x=x0x1x2…xn在定点机中表示如下(x0:符号位,0代表正号,1代表负号):
纯小数的表示
纯小数的表示范围为
(x0x1x2…xn数值位各位均为0时绝对值最小;数值位各位均为1时绝对值最大)
0≤ |x|≤ 1-2-n
-(1-2-n)≤x≤ 1-2-n
例如:
用八位二进制
31
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
x0 x1 x2 x3 … … … x30 x31
32位二进制数定点小数可以表示的范围
-0.9999999995343387≤x≤ 0.9999999995343387
2.纯整数的表示
纯整数的表示范围为
(x0x1x2…xn数值位各位均为0时绝对值最小;数值位各位均为1时绝对值最大)
-(2n-1)≤x≤ 2n-1 0≤ |x|≤ 2n-1
例如:用八位二进制
-1111111≤x≤1111111 (1111,1111) (0111,1111)
-(27-1)≤ x≤ 27-1 -127≤ x≤ 127
41
x0 x1 x2 x3 … … … x30 x31
32位二进制数定点整数可以表示的范围
(111… … … 1) (01… … … 11)
-(231-1)≤ x≤ 231-1
目前计算机中多采用定点纯整数表示,因此将定点数表示的运算简称为整数运算。
例:机器字长为32位,定点表示时,数符1位,尾数31位。
则:定点整数表示时,最大正数值= ,
最小负数值= 。
定点小数表示时,最大正数值= ,
最小负数值= 。
十进制加法器可由BCD码(二-十进制码)来设计,它可以在二进制加法器的基础上加上适当的
“校正”逻辑来实现,该校正逻辑可将二进制的“和”改变成所要求的十进制格式。
BCD码
十进制数 BCD码
合
法
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
非
法
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111
51
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
BCD码举例:
非法BCD码:
BCD码的加法运算法则
直接相加
适用于两个数相加的和是也合法BCD码———即和小于等于9(1001)
(1)10+(8)10=(9)10
(9)10的BCD码为:
机器按二进制相加,所以4位二进制数相加时,是按“逢十六进一”的原则进行运算的;
而实质上两个十进制数相加,应该按“逢十进一”的原则相加;
16与10相差6,所以当和超过9或有进位时,都要“加6进行修正”。
加 6修正的BCD码加法运算
第一种情况:10≤两个数相加的和≤15,和需要加6修正,进位在修正过程中产生
第二种情况:两个数相加的和≥ 16,结果需加6修正,进位在相加过程中产生
61
1.原码表示法
原码就是数值的真值(绝对值)前面加上一个符号位(正数0、负数1)
若定点小数的原码形式为x0x1x2…xn,则原码表示的定义是
[x]原 =
0+|x|=x 1>x≥0
1+|x|=1-x 0≥x{ >-1
(2.7)
式中[x]原是机器数,x是真值
例如,x=+0.1001,则[x]原 =0.1001
x=-0.1001,则[x]原 =1.1001
对于0,原码机器中往往有“+0”、“-0”之分,故有两种形式:
[+0]原 =0.000...0
[-0]原 =1.000...0
一个 n+1位(包括数值位和符号位)定点小数原码的表示范围是
若定点整数的原码形式为x0x1x2…xn,则原码表示的定义是
n+1位定点整数原码的表示范围是
对于0,原码机器中往往有“+0”、“-0”之分,故有两种形式:
[+0]原 =0000...0
[-0]原 =1000...0
n+1位定点整数原码的表示范围
71
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
-(2n
"
1)≤ x≤2n"1
思考:n+1位定点整数原码能表示多少个数?有几个编码?
例:已知x,根据原码的定义求x的原码[x]原。
①x=+0.1010110 ②x=-0.1010110 ③x=+1010110 ④x=-1010110
解:①[x]原 =x=0.1010110
②[x]原 =1-x=1+0.1010110=1.1010110
③[x]原 =x=01010110
④[x]原 =2
7-x=27+1010110=10000000+1010110=11010110
几点注意:
(1)[x]原的表示为符号位加上x的绝对值,所以原码又称带符号位的绝对值表示。
(2)纯小数的原码表示中
当x≥ 0时,[x]原 =x,
当x<0时,[x]原 =1+#x# ,即符号位加上x小数部分的绝对值。
当x为纯整数中
当x≥ 0时,[x]原 =x,
当x<0时,[x]原 =2
n+
#
x
#
,其中2n为符号位的权值,2n+
#
x
#
相当于使符号位为1。
(3)x和-x的原码转换:
将[x]原的符号位(左端第一位)取反,即可得到[-x]原。
(4)原码中0的表示不唯一。
(5)若原码字长为n,总共有2n个编码,但对应的真值只有2n-1个。
因为[0]原占用了两个编码,因此原码表示的范围较小(2
n个编码只能表示2n-1个真值)。注
意与补码的不同。
(6)负数原码形式上大于正数的原码:
对于定点小数,当x>0时,0<[x]原 <1;
当x<0时,1<[x]原 <2。
对于定点整数,当x>0时,0<[x]原 <2
n-1;
当x<0时,2n-1<[x]原 <2
n。
(7)原码的移位规则:
符号位不变,数值部分左移或右移,移出的空位填“0”。(左移一位相当于乘以2,右移一位相当
于除以2)
例:已知[X]原,求[
1
2X]原和[2X]原。
①[X]原 =0.0110000;②[X]原 =10011010
81
解:①[12X]原 =0.0011000 [2X]原 =0.1100000
② [12X]原 =10001101 [2X]原 =10110100
左移时注意不要将有效位移出,否则将会出错。
例:设机器字长为8位,写出+0.375和-0.6875的二进制原码表示。
解:(+0.375)10=(0.011)2=(0.0110000)2
[0.0110000]原 =0.0110000
(-0.6875)10=(-0.1011)2=(-0.1011000)2
[-0.1011000]原 =1.1011000
例:设机器字长为8位,写出+37和-37的二进制原码表示。
解:(+37)10=(100101)2
[100101]原 =00100101=25H
(-37)10=(-100101)2
[-100101]原 =10100101=A5H
可见将[X]原的符号取反即可得到[-X]原
原码的优点和缺点:
优点:原码简单易懂,与真值转换容易,实现乘除法方便。(乘除法数值位由两数的绝对值相乘/
除得到,符号位由两数的符号位异或即可);
不足:①原码中0的表示有两种,给使用带来了不便;
②原码表示的加减法运算复杂,这是因为:
当两数相加时,如果是同号则数值相加;如果是异号,则要进行减法。
而在进行减法时还要比较绝对值的大小,然后大数减去小数,最后还要给结果选择符号。
为了解决原码的不足,人们找到了补码表示法。
第2讲 数的机器表示(二)
一、考点精讲
2.补码表示法
我们以钟表对时为例说明补码的概念。
举例1:假设现在的标准时间为4点正;而有一只表已经7点了,为了校准时间,可以采用两种
方法:
将时针退 7-4=3格;
将时针向后拨9格,7+9(mod12)=4。
这两种方法都能对准到4点。
91
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
可以看出,减3和加9是等价的,即9是(-3)对12的补码,可以用数学公式表示-3=+9(mod12)
mod12的意思就是12模数,这个“模”表示被丢掉的数值。
7-3和7+9(mod12)等价,原因就是表指针超过12时,将12自动丢掉,最后得到16-12=4。从
这里可以得到一个启示,就是负数用补码表示时,可以把减法转化为加法。
7-3和7+9(mod12)等价,9称为-3对12的补码
即 [-3]补 =9=12+(-3) (mod12) a式
举例2:对于秒表,现在指针在50秒,如果要表的指针指向30秒,可以向回拨20秒即50-20=
30,也可以向后拨40秒也可以到30秒。30=50+40(mod60)
50-20和50+40(mod60)等价,40称为-20对60的补码即
[-20]补 =40=60+(-20) (mod60) b式
对一个确定的模而言,当需要减去一个数x时,可以用加上x对应的负数的补码[-x]补来代替。
再比较[-3]补 =9=12+(-3) (mod12) a式
试说出补码定义?
补码的定义:
[X]补 =M+X(modM)
当x≥0时,M+X大于M,把M丢掉,所以[X]补 =X,即正数的补数等于其本身。
当x<0时,[X]补 =M+X=M-|X|,所以负数的补数等于模与该数绝对值之差。
例:求模M=2时。二进制数x的补。
①x=+0.10110101 ②x=-0.10110101
解:①x≥0
[x]补 =2+x=10.00000000+0.10110101=10.10110101=0.10110101(mod2)
因为x≥ 0,模2丢掉。
②因为x<0
[x]补 =2+x=2-#x#=10.00000000-0.10110101=1.01001011(mod2)
若定点小数补码形式为x0.x1x2…xn,则补码表示的定义是
对定点整数,补码表示的定义是
[X]补 =M+X(modM)
02
纯小数补码表示的模M=2,纯整数补码表示的模M=2n+1
例:已知x,求x的补码[x]补。
①x=+0.1010110 ②x=-0.1010110
③x=+1010110 ④x=-1010110
解:①[x]补 =x=0.1010110
②[x]补 =2+x=10.0000000+(-0.1010110)=1.0101010
③[x]补 =x=01010110
④[x]补 =2
8+x=100000000+(-1010110)=10101010
补码的性质:
(1)几个特殊数值的补码表示:
0的补码表示
[+0]补 =[-0]补 =2±0.00… 00=0.00… 00 (纯小数mod2)
[+0]补 =[-0]补 =2
n+1±00… 00=00… 00 (纯整数mod2n+1)
注意:0的补码表示只有一种形式。
-1和-2n的补码表示(注意与原码的表示范围比较)
n+1位纯小数补码表示中
[-1]补 =2+(-1)=10.0…0+(-1.0… 0)=1.0… 0
纯小数原码表示中[-1]原是不能表示的。只能表示到-(1-2
-n)
n+1位纯整数补码表示中
纯整数原码表示中[-2n]原是不能表示的。只能表示到-(2n-1)
可见补码比原码在数轴的最左端多表示一个数。
-1和-2n的补码与[-0]原表示形式一样。
注意:这个补码最高位既表示符号也表示数值,而其它补码的最高位只表示符号。
(2)补码的表示范围
一个n+1位定点整数补码的表示范围是-2n≤ x≤2n"1
一个n+1位定点小数补码的表示范围是-1≤x≤1-2-n
回顾原码的范围:
一个n+1位定点整数原码的表示范围是-(2n-1)≤ x≤2n"1
一个n+1位定点小数原码的表示范围是-(1-2-n)≤x≤1-2-n
12
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
(3)补码与原码的关系
对于正数直接取其二进制数的表示构成补码。
即若x≥ 0,[x]原 =[x]补。
若 x<0,对[x]原其按位取反(符号位不变)后再在最低位加1得到[x]补;反之将[x]补除符号位
以外各位取反后,再在最低位加1,即可得到[x]原。
注意:补码中特殊数-1(纯小数)和-2n(纯整数)的表示,在原码中没有对应表示。
(4)[x]补和[-x]补的关系
已知[x]补,将[x]补的各位(含符号位)取反,然后在最低位上加1,即得到[-x]补。反之亦然。
求[-x]补,也称为对[x]补的求补
例:[x]补 =1.0011010 [-x]补 =0.1100110
[x]补 =10110010 [-x]补 =01001110
简单求补方法是:在取反过程中,低位最后一个1不变,最后一个1后的0也都不变。
(5)补码的移位规则:
补码的左移(乘2):符号位不变,数值部分左移,最低位移出的空位填0;
补码的右移(除2):符号位不变,数值部分右移,最高位移出的空位填符号位。
例:已知[x]补,求[2x]补、[
1
2x]补。
(1)[x]补 =0.0101001, (2)[x]补 =11011010
解:(1)[2x]补 =0.1010010
[
1
2x]补 =0.0010100
(2)[2x]补 =10110100
[
1
2x]补 =11101101
(6)负数补码形式上大于正数的补码:
与原码类似
(7)补码的位扩展
例如将字节(8位二进制)表示的补码扩展为16位二进制表示的补码。
22
定点小数:在最低位用0扩展。
定点整数:在最高位用符号位扩展。
常用求补码的方法(与定义求补码比较):
a.若x≥0则[x]补 =x,符号位为0
若x<0,则将x绝对值的各位取反,然后在最低位上加1,符号位为1,即得到[x]补。
b.若x≥0数值位不变,符号位为0.
若x<0,数值位从最低位开始,对遇到的0和第一个1取其原来的代码,对第一个以后开始直至
最高位均按位取反,符号位为1。
这两种求补方法电路实现简单易行。
3.反码表示法
所谓反码,就是二进制的各位数码0变为1,1变为0。也就是说,若xi=1,则反码为xi=0;若 xi
=0,则反码xi=1。数值上面的一横表示反码的意思。在计算机中用触发器寄存数码,若触发器Q端
输出表示原码,则其Q端输出就是反码。由此可知,反码是容易得到的。
反码的主要作用就是求补码。
对定点小数,反码表示的定义为
其中n代表数的位数。
反码实质上是一种特殊的补码,其特殊之处在于反码的模比补码的模小一个最低位上的1。
在一些文献中,这种以2为基数的反码又称为1的补码。
一般情况下,对于正数 x=+0.x1x2…xn,则[x]反 =1.x1x2…xn
对于负数 x=-0.x1x2…xn,则有[x]反 =1. …
对于0,有[+0]反和[-0]反之分:
[+0]反 =0.00...0
[-0]反 =1.11...1
我们比较反码与补码的公式
[x]反 =(2-2
-n)+x
[x]补 =2+x
可得到
这就是通过反码求补码的重要公式。这个公式告诉我们:若要一个负数变补码,其方法是符号位
32
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
置1,其余各位0变1,1变0,然后在最末位(2-n)上加1。
对定点整数,反码表示的定义为
反码的特点:
(1)在反码表示中,用符号位x0表示正负,形式与原码表示相同,0为正,1为负
(2)反码中,0有两种表示形式
纯小数:[+0]反 =0.00… 0 [-0]反 =1.11… 1
纯整数:[+0]反 =000… 0 [-0]反 =111… 1
(3)反码的表示范围与原码相同。注意,纯小数的反码不能表示为-1,纯整数的反码不能表示为
-2n
(4)对于整数有
反码表示在计算机中往往作为数码变换的中间环节。
4.移码表示法
补码表示很难直接判断其真值大小
移码通常用于表示浮点数的阶码。由于阶码是个n位的整数,假定定点整数移码形式为 x0x1x2…
xn时,
对定点整数,移码的传统定义是n位数值真值加上一个固定常数2n
对定点小数,移码的传统定义是真值加上一个固定常数1
42
根据上两式可知,移码表示把真值x在数轴上正向平移1(纯小数)或2n(纯整数)后得到的。
若阶码数值部分为7位,以x表示真值,则
[x]移 =2
7+x=128+x 128>x≥-128
例如,当正数x=+1010101时,
[x]移 =2
7+1010101=1,0000000+1010101=1,1010101;
当负数x=-1010101时,
[x]移 =2
7+x=27-1010101=10000000-1010101=0,0101011。
移码中的逗号不是小数点,而是表示左边一位是符号位。
移码中符号位x=表示的规律与原码、补码、反码相反(0表示负,1表示正)。
移码的几何性质
(1)移码的几何性质
当n=3时,纯整数的移码为:
真值 移码 真值 移码
+000(+0) 1000 -001(-1) 0111
+001(+1) 1001 -010(-2) 0110
+010(+2) 1010 -011(-3) 0101
+011(+3) 1011 -100(-4) 0100
+100(+4) 1100 -101(-5) 0011
+101(+5) 1101 -110(-6) 0010
+110(+6) 1110 -111(-7) 0001
+111(+7) 1111 -1000(-8) 0000
移码表示的实质是把真值映像到一个正数域,因此移码的大小可直观地反映真值的大小。
不管正数还是负数,用移码表示时,可以按无符号数比较大小。
(2)移码中“0”的表示
移码中“0”的表示是唯一的
[+0]移 =[-0]移 =2
n±0…0=10…0(纯整数)
移码的表数范围与补码一致
52
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
纯整数移码表示的最小数可以表示到-2n
(3)移码与补码的关系
x≥0时 [x]补 =x,[x]移 =2
n+x,[x]移 =[x]补 +2
n
x<0时 [x]补 =2
n+1+x,[x]移 =2
n+x,[x]移 =2
n+[x]补 -2
n+1=[x]补 -2
n
x=+1011010
[x]补 =01011010
[x]移 =2
n+x=27+1011010=11011010
X=-1011010
[x]补 =10100110
[x]移 =2
n+x=27+(
"
1011010)=00100110
由上例可见:补码的数值部分不变,符号取反,即得移码。反之亦然。
(4)移码的符号位:
0表示负数,1表示正数,和原码、反码、补码不同。
(5)移码与真值的线性关系:
移码的顺序和真值完全一致,因此移码在表示阶码时可以方便的进行大小比较,其结果与真值
一致。
二、真题举例
1.一个C语言程序在一台32位机器上运行。程序中定义了三个变量xyz,其中x和z是 int型,y
为short型。当x=127,y=-9时,执行赋值语句z=x+y后,xyz的值分别是( ) [2009]
A.x=0000007FH,y=FFF9H,z=00000076H
B.x=0000007FH,y=FFF9H,z=FFFF0076H
C.x=0000007FH,y=FFF7H,z=FFFF0076H
D.x=0000007FH,y=FFF7H,z=00000076H
2.假定有4个整数用8位补码分别表示r1=FEH,r2=F2H,r3=90H,r4=F8H,若将运算结果存放
在一个8位寄存器中,则下列运算会发生溢出的是( )[2010]
A.r1×r2 B.r2×r3 C.r1×r4 D.r2×r4
r1=FEH=1111,1110=1000,0010=-2
r2=F2H=1111,0010=1000,1110=-14
r3=90H=1001,0000=1110,1111+1=1111,0000=-112
R4=F8H=1111,1000=1000,1000=-8
三、本讲小结
上面的数据四种机器表示法中,移码表示法主要用于表示浮点数的阶码。
62
由于补码表示对加减法运算十分方便,因此目前机器中广泛采用补码表示法。
在这类机器中,数用补码表示,补码存储,补码运算。
也有些机器,数用原码进行存储和传送,运算时改用补码。
还有些机器在做加减法时用补码运算,在做乘除法时用原码运算。
第3讲 运算方法和运算器(一)
一、考点精讲
字符与字符串的表示方法
1.字符的表示方法
目前国际上普遍采用的字符系统是七单位的 ASCI码(美国国家信息交换标准字符码),它包括
10个十进制数码,26个英文字母和一定数量的专用符号,如$,%,+,=等,共128个元素,因此二进
制编码需7位,加一位偶校验位,共8位一个字节。
ASCI码规定8个二进制位的最高一位为0,余下的7位可以给出128个编码,表示128个不同的字符。
2.字符串的表示方法
字符串是指连续的一串字符,通常方式下,它们占用主存中连续的多个字节,每个字节存一个字
符。当主存字由2个或4个字节组成时,在同一个主存字中,既可按从低位字节向高位字节的顺序存
放字符串的内容,也可按从高位字节向低位字节的次序顺序存放字符串的内容。
汉字的表示方法
为了能直接使用西文标准键盘把汉字输入到计算机,就必须为汉字设计相应的输入编码方法。
当前采用的方法主要有以下三类:
数字编码 常用的是国标区位码,用数字串代表一个汉字输入。
数字编码输入的优点是无重码,且输入码与内部编码的转换比较方便,缺点是代码难以记忆。
拼音码 拼音码是以汉字拼音为基础的输入方法。使用简单方便,但汉字同音字太多,输入重码率
很高,同音字选择影响了输入速度。
字形编码 字形编码是用汉字的形状来进行的编码。把汉字的笔划部件用字母或数字进行编码,
按笔划的顺序依次输入,就能表示一个汉字。
汉字内码是用于汉字信息的存储、交换、检索等操作的机内代码,一般采用两个字节表示。
英文字符的机内代码是七位的 ASCI码,当用一个字节表示时,最高位为“0”。为了与英文字符
能相互区别,汉字机内代码中两个字节的最高位均规定为“1”。
注意:有些系统中字节的最高位用于奇偶校验位,这种情况下用三个字节表示汉字内码。
注意:汉字的输入编码、汉字内码、字模码是计算机中用于输入、内部处理、输出三种不同用途的
编码,不要混为一谈。
字模码是用点阵表示的汉字字形代码,它是汉字的输出形式。
72
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
根据汉 字输出的要求不同,点阵的多少也不同。字模点阵的信息量很大,所占存储空间也很大。
因此字模点阵只能用来构成汉字库,而不能用于机内存储。字库中存储了每个汉字的点阵代码。当
显示输出或打印输出时才检索字库,输出字模点阵,得到字形。
校验码
元件故障\噪声干扰等各种因素常常导致计算机在处理信息过程中出现错误。为了防止错误,可
将信号采用专门的逻辑线路进行编码以检测错误,甚至校正错误。通常的方法是,在每个字上添加一
些校验位,用来确定字中出现错误的位置。
A.奇偶校验码
组成奇偶校验码的基本方法:在 n位有效信息位上增加一个二进制校验位,构成一个 n+1位奇
偶校验码。
奇校验:使n+1位的奇偶校验码中1的个数为奇数。
偶校验:使n+1位的奇偶校验码中1的个数为偶数。
B.海明校验码
海明校验实质上是一种多重奇偶校验。它将有效信息按某种规律分成若干组,每组安排一个校
验位,作奇偶测试,就能提供多位检错信息,以指出最大可能是哪位出错,从而将其纠正。
C.CRC码
校验码由多项式M(x)·2r除以产生校验码的生成多项式G(x)所得的余数形成。
CRC的检错和纠错方法:
发送部件将某信息的CRC码传送至接收部件,接收部件收到CRC码后,仍用约定的多项式G(x)
去除,若余数为0,表示传送正确;
若余数不为0,表示出错,再由余数的值来确定哪一位出错,从而加以纠正。
海明校验和CRC校验相对奇偶校验而言较为复杂,但它们不仅可以查错,还能指出是哪位出错
并通过线路纠正其错误,从而保证数据信息传送的正确性。
2.2.1定点数的运算
定点加法减法运算
补码加法
82
负数用补码表示后,可以和正数一样来处理。
当需要减去一个数x时,可以用加上x对应的负数的补码[-x]补来代替。
这样,运算器里只需要一个加法器就可以了,不必为了负数的加法运算,再配一个减法器。
补码加法的公式是
例:x=0.1001,y=0.0101,求x+y。
解:[x]补 =0.1001,[y]补 =0.0101
[x]补 0.1001
+[y]补 0.0101
[x+y]补 0.1110
所以 x+y=+0.1110
例:x=+0.1011,y=-0.0101,求x+y。
[x]补 =0.1011, [y]补 =1.1011
[x]补 0.1011
+[y]补 1.1011
[x+y]补 10.0110
所以x+y=0.0110
算术运算验证0.1011+(-0.0101)=0.0110
由以上两例看到,补码加法的特点,一是符号位要作为数的一部分一起参加运算,二是要在模2
的意义下相加,即超过2的进位要丢掉。
数用补码表示时,减法运算的公式为
[-y]补 =-[y]补 (mod2)
[x-y]补 =[x]补 +[-y]补 (mod2)
[x-y]补 =[x]补 +[-y]补 (mod2
n+1)
例:x=+0.1101,y=+0.0110,求x-y。
解:[x]补 =0.1101
[y]补 =0.0110, [-y]补 =1.1010
92
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
[x]补 0.1101
+[y]补 1.1010
[x+y]补 10.0111
所以x-y=+0.0111
算术运算验证0.1101-0.0110=0.0111
补码运算的基本规则:
①参加运算的各个操作数均以补码表示,运算结果仍以补码表示。
②符号位与数值位一样参加运算。
③若求和,则将两补码数直接相加,得到两数之和的补码;
若求差,则将减数变补(由[y]补求[-y]补),然后与被减数相加,得到两数之差的补码。
④补码总是对确定的模而言,若运算结果超过模(有从符号位上产生的进位),则将模自动丢掉。
2.2.2溢出概念与检测方法
例:x=+0.1011,y=+0.1001,求x+y。
解:[x]补 =0.1011[y]补 =0.1001
[x]补 0.1011
+[y]补 0.1001
[x+y]补 1.0100
两个正数相加的结果成为负数,这显然是错误的。
例:x=-0.1101,y=-0.1011,求x+y。
解:[x]补 =1.0011[y]补 =1.0101
[x]补 1.0011
+[y]补 1.0101
[x+y]补 0.1000
两个负数相加的结果成为正数,这同样是错误的。
之所以发生错误,是因为运算结果产生了溢出。
两个正数相加,结果大于机器所能表示的最大正数,称为上溢。而两个负数相加,结果小于机器
所能表示的最小负数,称为下溢。
为了判断“溢出”是否发生,可采用两种检测的方法。
第一种方法是采用双符号位法
双符号位法又称变形补码,符号位有两位用“00”表示正,“11”表示负。
1.两个符号位都看作数码一样参加运算
03
2.两数进行以4位模的加法,即最高符号位上产生的进位要丢掉。
如果两个数相加后,其结果的符号位出现“00”和“11”则没有溢出,出现“01”或“10”两种组合时,
表示发生溢出。
最高符号位永远表示结果的正确符号。
例:x=+0.1100,y=+0.1000,求x+y。
解:[x]补 =00.1100, [y]补 =00.1000
[x]补 00.1100
+[y]补 00.1000
01.0100
两个符号位出现“01”,表示已溢出,即结果大于+1。
例:x=-0.1100,y=-0.1000,求x+y。
解:[x]补 =11.0100, [y]补 =11.1000
[x]补 11.0100
+[y]补 11.1000
10.1100
两个符号位出现“10”,表示已溢出,即结果小于-1。
当以双符号位补码运算,运算结果的二符号位相异时,表示溢出;相同时,表示未溢出。故溢出逻
辑表达式为 V=Sf1$Sf2,其中Sf1和Sf2分别为最高符号位和第二符号位。此逻辑表达式可用异或门实
现。
第二种溢出检测方法是采用单符号位法。
当最高数值位产生进位而符号位无进位时,产生上溢;当最高有效位无进位而符号位有进位时,
产生下溢。
故溢出逻辑表达式为V=Cf$Co,其中 Cf为符号位产生的进位,Co为最高有效位产生的进位。
此逻辑表达式也可用异或门实现。
在定点机中当运算结果发生溢出时,机器通过逻辑电路自动检查出溢出,并进行中断处理。
基本的二进制加法/减法器
两个二进制数字Ai,Bi和一个进位输入Ci相加,产生一个和输出Si,以及一个进位输出Ci+1。
表2.2中列出一位全加器进行加法运算的输入输出真值表。根据表2.2所示的真值表,三个输
入端和两个输入端可按
13
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
如下逻辑方程进行联系:按此表达式组成的一位全加器示图2.2,求和部分Si由两个异或门组成,
进位部分Ci+1由与非门组成。
补码运算的二进制加法/减法器的逻辑结构图
(+8)+(+12)=20
001000+001100=010100
23
例:x=+0.1101,y=+0.0110,求x-y。
[x]补 =0.1101 [y]补 =0.0110, [-y]补 =1.1010
关于延迟的讨论:
对一位全加器(FA)来说,Si的时间延迟为6T(每级异或门延迟3T),Ci+1的时间延迟为5T,其中
T被定义为相应于单级逻辑电路的单位门延迟。T通常采用一个“与非”门或一个“或非”门的时间延
迟来作为度量单位。
现在我们计算一个n位的行波进位加法器的时间延迟。
9T为最低位上的两极“异或”门再加上溢出“异或”门的总时间,2T为每级进位链的延迟时间。
当不考虑溢出检测时,有
ta=(n-1)·2T+9T (2.23)
ta意味着加法器的输入端输入加数和被加数后,在最坏情况下加法器输出端得到稳定的求和输
出所需的最长时间。显然这个时间越小越好。注意,加数、被加数、进位与和数都是用电平来表示的,
因此,所谓稳定的求和输出,就是指稳定的电平输出。
2.2.3十进制加法器
十进制加法器可由BCD码(二-十进制码)来设计,它可以在二进制加法器的基础上加上适当的
33
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
5.画出电路图
例3:CPU的地址总线16根(A15—A0,A0为低位),双向数据总线8根(D7—D0),控制总线中与
主存有关的信号有/MREQ(允许访存,低电平有效),R/W(高电平为读命令,低电平为写命令)。主
存地址空间分配如下:0—8191(8192/1024=8K)为系统程序区,由只读存储芯片组成;8192—32767
(32676-8191=24576 24597/1024=24K)为用户程序区;最后(最大地址)2K地址空间为系统程序
工作区。上述地址为十进制,按字节编址。
现有如下存储器芯片:
EPROM:8K×8位(控制端仅有/CS);
SRAM:16K×1位,2K×8位,4K×8位,8K×8位.
8192/1024=8K
32676-8191=24576
24597/1024=24K
问1:请从上述芯片中选择适当芯片设计该计算机主存储器,
问2:画出主存储器逻辑框图,注意画出选片逻辑(可选用门电路及3∶8译码器74LS138)与CPU
的连接,说明选哪些存储器芯片,选多少片。
解:第一步确定三总线及不同存储芯片时的地址总线、数据总线、控制总线。
CPU提供的总线为:地址总线———16(A15—A0)
数据总线———8(D7—D0)
控制总线———2(/MREQ,R/W)
主存地址分布图
08
芯片 地址总线 数据总线 控制总线 构成存储系统需要片数
16K×1位 14(A13—A0) 1(D0)
2K×8位 11(A10—A0) 8(D7~D0) 1片
4K×8位 12(A11—A0) 8(D7~D0)
8K×8位 13(A12—A0) 8(D7~D0) 3片
EPROM
8K×8位
13(A12—A0) 8(D7~D0) 1(/CS) 1片
各存储芯片的地址位图
芯片 A15A14A13A12A11A10~A2A1A0
EPROM
8K×8位
0000,0000,0000,0000~0001,1111,1111,1111(/Y0) 0000~1FFFH
1号8K×8位
(A12~A0)
0010,0000,0000,0000~0011,1111,1111,1111(/Y1) 2000~3FFFH
2号8K×8位
(A12~A0)
0100,0000,0000,0000~0101,1111,1111,1111(/Y2) 4000~5FFFH
3号8K×8位
(A12~A0)
0110,0000,0000,0000~0111,1111,1111,1111(/Y3) 6000~7FFFH
2K×8位
(A10~A0)
1111,1000,0000,0000~1111,1111,1111,1111(/Y7) F800~FFFFH
18
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
例:设CPU有16根地址线,8根数据线,并用MREQ作为访存控制信号(低电平有效),用WR作为读写控制信
号(高电平为读、低电平为写)。现有下列存储芯片:1K×4位RAM、4K×8位RAM、8K×8位RAM、2K×8位ROM、
4K×8位ROM、8K×8位ROM及74138译码器和各种门电路。画出CPU与存储器的连接图,要求如下:
①主存地址空间分配:6000H~67FFH为系统程序区。
6800H~6BFFH为用户程序区。
②合理选用上述存储芯片,说明各选几片。
③详细画出存储芯片的片选逻辑图。
解:
28
二、真题举例
1.某计算机字长32位,存储容量256MB,若按字编址,它的寻址范围是( )
A.1M B.512KB C.64M D.256KB
2.某计算机字长32位,存储容量4GB,若按双字编址,它的寻址范围是( )
A.4G B.0.5G C.8G D.2G
3.某DRAM芯片,其存储容量为512K×8bit,则该芯片的地址线和数据线数目为( )
A.8,512 B.512,8 C.18,8 D.19,8
4.某计算机主存容量为64KB,其中ROM区为4KB,其余为RAM区,按字节编址。现要用2K×8
位的ROM芯片和4K×4位的RAM芯片来设计该存储器,则需要上述规格的 ROM芯片数和 RAM芯
片数分别是( )【2009】
A.1、15 B.2、15 C.1、30 D.2、30
5.假定用若干个2K×4位芯片组成一个8K×8为存储器,则0B1FH所在芯片的最小地址是(
)【2010】
A.0000H B.0600H C.0700H D.0800H
38
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
6.某计算机存储器按字节编址,主存地址空间大小为64MB,现用4M ×8位的 RAM芯片组成
32MB的主存储器,则存储器地址寄存器MAR的位数至少是( )【2011】
A.22位 B.23位 C.25位 D.26位
三、本讲小结
本讲主要讲解了存储器和CPU的连接方法。
掌握字扩展、位扩展、字位扩展三种扩展方法。
单科组卷有可能考大题;
多科组卷考小题概率大。
第4讲 双端口与交叉模块存储器
一、考点精讲
3.6双端口与多模块存储器
3.6.1双端口存储器
1.双端口存储器的逻辑结构
双端口存储器是指同一个存储器具有两组相互独立的读写控制线路,是一种高速工作的存储器。
它提供了两个相互独立的端口,即左端口右端口。它们分别具有各自的地址线、数据线和控制
线,可以对存储器中任何位置上的数据进行独立的存取操作。可以实现一个存储器挂接两个CPU。
2.无冲突读写控制
当两个端口的地址不相同时,在两个端口上进行读写操作,一定不会发生冲突。当任一端口被选
中驱动时,就可对整个存储器进行存取,每一个端口都有自己的片选控制和输出驱动控制。
3.有冲突的读写控制
当两个端口同时存取存储器同一存储单元时,便发生读写冲突。为解决此问题,特设置了 BUSY
标志。
由片上的判断逻辑决定对哪个端口优先进行读写操作,而暂时关闭另一个被延迟的端口。
(1)/CE判断:如果地址匹配且在/CE之前有效,片上的控制逻辑在/CEL和/CER之间进行判断
48
来选择端口。
(2)地址有效判断:如果/CE在地址匹配之前变低,片上的控制逻辑在左、右地址间进行判断来选
择端口。
3.6.2多模块交叉存储器
1.存储器的模块化组织
一个由若干个模块组成的主存储器是线性编址的。
这些地址在各模块有两种安排方式:一种是顺序方式,一种是交叉方式。
顺序方式:
某个模块进行存取时,其他模块不工作,某一模块出现故障时,其他模块可以照常工作,通过增添
模块来扩充存储器容量比较方便。但各模块串行工作,存储器的带宽受到了限制。
地址5位,32个空间。由4个模块(M0,M1,M2,M3)组成(每个模块8个单元)。
A4,A3用于选择4个模块,经译码作模块片选信号。
A2,A1,A0用于进行内部译码选择8个地址。
交叉方式:
地址码的低位字段经过译码选择不同的模块,而高位字段指向相应模块内的存储字。连续地址
分布在相邻的不同模块内,同一个模块内的地址 都是不连续的。对连续字的成块传送可实现多模块
流水式并行存取,大大提高存储器的带宽。
地址5位,32个空间。由4个模块(M0,M1,M2,M3)组成(每个模块8个单元)。
A1,A0用于选择4个模块,经译码作模块片选信号。
A4,A3,A2用于进行内部译码选择8个地址。
58
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
下面做定量分析:
顺序方式存储器连续读取m个字所需时间为t2=mT.
m=4的流水线方式存取示意图如下
我们认为模块字长等于数据总线宽度,模块存取一个字的存储周期为T,总线传送周期为τ,存储
器的交叉模块数为m(m=4),为了实现流水线方式存取,应当满足 T=mτ(m=T/τ称为交叉存取度)
交叉存储器要求其模块数必须大于或等于 m,以保证启动某模块后经 mτ时间再次启动该模块
时,它的上次存取操作已经完成。这样,连续读取m个字所需的时间为 t1=T+(m-1)τ
交叉存储器的带宽确实大大提高了。
在不改变存取周期的前提下,增加存储器的带宽
68
例:设存储器容量为32字,字长64位,模块数m=4,分别用顺序方式和交叉方式进行组织。存储周期
T=200ns,数据总线宽度为64位,总线传送周期τ=50ns。问顺序存储器和交叉存储器的带宽各是多少?
解:顺序存储器和交叉存储器连续读出m=4个字的信息总量都是:q=64位×4=256位
顺序存储器和交叉存储器连续读出4个字所需的时间分别是:
t2=mT=4×200ns=800ns=8×10
-7s;
t1=T+(m-1)=200ns+3×50ns=350ns=3.5×10
-7s
顺序存储器和交叉存储器的带宽分别是:
W2=q/t2=256÷(8×107)=32×10
7[位/s];
W1=q/t1=256÷(3.5×107)=73×10
7[位/s]
1.四体并行低位交叉存储,每个模块容量是64K×32位,存取周期为200ns,下列说法正确的是
( )
A.在200ns内,存储器能能向CPU提供128位二进制信息
B.在50ns内,存储器能能向CPU提供32位二进制信息
C.在200ns内,存储器能能向CPU提供32位二进制信息
D.在200ns内,存储器能能向CPU提供1的二进制信息的位数不确定
二、本讲小结
本讲的主要内容是提高存储器性能的两种方法。
第5讲 Cache(一)
一、考点精讲
3.6cache存储器
在实际的计算机系统中,因为CPU的工作速度提高很快,因此对应存储器的速度及容量的要求越
来越高,为此需要采用提高存储器的工作速度的技术,或采用层次化的存储器系统结构(如图)。
Cache就是在此背景下产生的。
3.6.1cache基本原理
存储器的速度指标包括:访问时间、访问周期时间、带宽。
78
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
访问时间:
从启动访问存储器的操作到获得访问数据的时间,即从提供地址和读操作信号到数据读出所经
历的时间。
访问周期时间:
此时间一般比访问时间长,在一次访问完成之后存储器需要一定的恢复时间才能开始下一次的
访问操作。
带宽:
存储器在连续访问时的数据吞吐率。
微电子技术发展趋势
CPU与DRAM性能比较
现代计算机中的存储层次
利用程序的局部性原理
以最低廉的价格提供尽可能大的存储空间
以最快速的技术实现高速存储访问
88
在计算机系统中,CPU的工作速度一般大于主存储器的工作速度。主存储器一般用动态存储器
实现,高速的静态存储器芯片因为容量小,价格高不适应组成大容量的主存储器。采用怎样的方式能
够解决CPU与存储器的接口问题呢?
引入基础:
人们通过大量统计发现了这样一个访问规律:程序对存储空间的90%的访问局限于存储空间的
10%的区域中,另外10%的访问则分布在存储空间的90%的区域中。
计算机程序对存储器的访问有两种局限性规律:
1.时间局限性:
如果一个存储单元被访问,则可能这个存储单元会很快再次被访问。
2.空间局限性:
如果一个存储单元被访问,则它邻近的存储单元可能很快被访问。
程序访问的局限性:
较短的时间间隔内,由程序产生的地址往往集中于存储器逻辑地址空间很小的范围内。
指令地址的分布又是连续的,加上循环程序段的反复执行,对这些地址的访问自然具有时间上集
中分布的倾向。
这种对局部范围的存储器地址的频繁访问,对这些范围外的地址访问甚少的现象称为程序访问
的局限性。程序访问的局限性为cache的引入提供了理论依据。
1.cache的功能
早期的计算机只有主存及外存,没有 cache,因为 CPU速度不断提高,为了满足 CPU与存储器之
间的速度差异,采用了cache技术。
现代计算机与存储器的关系
Cache是介于CPU和主存之间的小容量存储器,存取速度比主存快。能高速地向 CPU提供指令
和数据,加快程序的执行速度。它的内容为主存一部分内容的副本。当存储器接到有关读取指令时,
98
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
查表时,由逻辑页号同时去查快表和慢表,当在快表中有此逻辑页号时,就能很快地找到对应的
物理页号送入实主存地址寄存器,从而做到虽采用虚拟存储器但访主存速度几乎没有下降。
2.段式虚拟存储器
在段式虚拟存储系统中,段是按照程序的逻辑结构划分的,各个段的长度因程序而异。虚存地址
与实存地址的组成如下:
段表:每个逻辑段在段表内有一行记录。
由段起址、有效位、段长组成。
段表也是一个段,可以存在外存中,但一般是驻留在主存中
对虚拟存储器的访问步骤如下:
1.用段号及段标基地址形成地址访问段表,如果装入位 =1,表明此段已在主存中,找到段起址,
由段起址和段内地址形成主存地址访问主存。
在访问某段时,如果段内地址值超过段的长度,则发生地址越界中断。
2.如果装入位=0,表明此段不在主存中,通过辅助软硬件的控制,根据某种算法将主存中的某段
原有的内容释放,调进需要访问的段,同时段表内容改动。
601
段式虚拟存储器有许多优点:
①段的逻辑独立性使其易于编译、管理、修改和保护,也便于多道程序共享。
②段长可以根据需要动态改变,允许自由调度,以便有效利用主存空间。
段式虚拟存储器也有一些缺点:
①因为段的长度不固定,主存空间分配比较麻烦。
②容易在段间留下许多外碎片,造成存储空间利用率降低。
③由于段长不一定是2的整数次幂,因而不能简单地像分页方式那样用虚地址和实地址的最低
若干二进制位作为段内偏移量,并与段号进行直接拼接,必须用加法操作通过段起址与段内偏移量的
求和运算求得物理地址。因此,段式存储管理比页式存储管理方式需要更多的硬件支持。
3.段页式虚拟存储器
段页式虚拟存储器是段式虚拟存储器和页式虚拟存储器的结合。
它把程序按逻辑单位分段以后,再把每段分成固定大小的页。
程序对主存的调入调出是按页面进行的,但它又可以按段实现共享和保护。
优点:兼备页式和段式的优点。
缺点:是在映象过程中需要多次查表。
在段页式虚拟存储系统中,每道程序是通过一个段表和一组页表来进行定位的。段表中的每个
表目对应一个段,每个表目有一个指向该段的页表起始地址及该段的控制保护信息。由页表指明该
段各页在主存中的位置以及是否已装入、已修改等状态信息。
如果有多个用户在机器上运行,多道程序的每一道需要一个基号,由它指明该道程序的段表起始地址。
701
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
例6:假设有三道程序(用户标志号为A,B,C),其基址寄存器内容分别为SA,SB,SC,在主存中,
每道程序都有一张段表,A程序有4段,C程序有3段。每段应有一张页表,段表的每行就表示相应页
表的起始位置,而页表内的每行即为相应的物理页号。请说明虚实地址变换过程。
解:地址变换过程如下:
①根据基号C执行SC加1(段号)操作,得到段表相应行地址,其内容为页表的起始地址b。
②执行b+2(页号),得到物理页号的地址,其内容即为物理页10。
③物理页号与页内地址拼接即得物理地址。
如计算机只有一个基址寄存器,基号可不要,多道程序切换时,操作系统修改基址寄存器内容。
可以看出,段页式虚拟存储系统由虚拟地址向主存地址的变换至少需要查两次表。
3.7.5替换算法
虚拟存储器中的页面替换策略和cache中的行替换策略有很多相似之处,但有三点显著不同:
(1)缺页至少要涉及前一次磁盘存取,读取所缺的页,缺页使系统蒙受的损失要比 cache未命中
大得多。
(2)页面替换是由操作系统软件实现的。
(3)页面替换的选择余地很大,属于一个进程的页面都可替换。
虚拟存储器中的替换策略一般采用LRU(近期最少使用)算法、LFU(最不经常使用)算法 、FIFO
(先进先出)算法,或将两种算法结合起来使用。
对于将被替换出去的页面,假如该页调入主存后没有被修改,就不必进行处理,否则就把该页重
新写入外存,以保证外存中数据的正确性。为此,在页表的每一行应设置一修改位。
例7:假设主存只有a,b,c三个页框,组成a进c出的FIFO队列,进程访问页面的序列是0,1,2,
4,2,3,0,2,1,3,2号。若采用①FIFO算法,②FIFO算法 +LRU算法,用列表法分别求两种替换策略
情况下的命中率。
解:
801
例:某计算机的页式虚存管理中,采用长度为32字的页,页表内容如下,求当 CPU程序按下列2
进制虚拟字地址访问存储器时产生的实地址为多少?
(1)00001101
(2)10000000
(3)00101000
解:
因此,以下虚拟地址对应的实地址为
(1)00001101→0101101
(2)10000000→ 1000000
(3)00101000→缺页,需要从虚拟存储器调入主存。
二、本讲小结
本讲主要讲解了虚拟存储器的概念,作用:
重点讲解页式管理、段式管理、段页式管理等三种虚拟存储器的管理方式。
常考题型:选择、填空、大题。
应试方法:注意综合性考题,可以和操作系统、辅存、cache等内容联合出题。
901
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
? 第四章
指令系统
一、本章要求:
掌握指令的格式(包括指令的基本格式、定长操作码指令格式、扩展操作码指令格式)和各种寻址
方式,还要能够区分数据寻址和指令寻址的区别。
CISC(复杂指令系统计算机)和RISC(精简指令系统计算机),我们要掌握它们的基本概念、特征,
以及它们之间的主要区别。
二、目录分析
4.1指令格式 [掌握、应用]
4.2寻址方式 [掌握、应用]
4.3CISC和RISC[一般掌握]
三、考试分析
考点 重点与难点 考试中常见题型 复习思路与方法
指令格式,地址码,操作码,指
令设计,指令分析,寻址方式
相关问题,RISC和 SISC的
概念
指令格式设计、
寻址方式
填空、选择、分析、
设计、综合应用
从二进制编码角度深入理解指令格式
的设计、寻址方式关键是掌握操作数
从什么地方取得
第1讲 指令格式
程序由一系列的指令组成的,指令是要计算机执行某种操作的命令。
从计算机组成的层次结构来说分为微指令、机器指令和宏指令。
微指令:微程序级的命令,它属于硬件;
宏指令:由若干条机器指令组成的软件指令,它属于软件;
机器指令(指令):介于微指令与宏指令之间,每条指令可完成一个独立的算术运算或逻辑运算。
指令系统:计算机中所有机器指令的集合。
011
指令中一般需要包含以下信息:
1.操作的类型:操作的内容和功能,如加法操作、访问存储器操作、等等。
2.操作数的存储位置:参加运算的数据存储的地方,操作数存储的位置可以是寄存器、存储单元、
直接安排在指令中。
3.操作结果的存储位置:将运算结果存储在什麽地方。
4.下一条指令的地址信息:到哪里去取下一条指令。
指令中还可以包含条件信息,表示执行该指令操作必须具备的条件。指令编码的格式称为指令
格式。
一、考点精讲
4.1指令格式
指令:操作码字段 地址码字段
操作码
指令字(简称指令):表示一条指令的机器字。
指令格式:是指令字用二进制代码表示的结构形式,由操作码字段和地址码字段组成。
操作码字段:表征指令的操作特性与功能;
地址码字段:指定参与操作的操作数的地址码。
指令系统的每一条指令都有一个操作码,它表示该指令应进行什么性质的操作。
不同的指令用操作码字段的不同编码来表示,每一种编码代表一种指令。
操作码 可以分为固定长度的代码和可变长度的代码。
固定长度的代码:所有指令操作码长度相同。
例如:某计算机共有64条指令,采用固定长度操作码,需要6位编码,从000000~111111。
优点:编码方法简单,便于指令的译码。
缺点:不便于指令系统中增加新的指令(扩展不方便)。
可变长度的代码:指令操作码长度不同。
优点:便于指令系统中增加新的指令(扩展方便)。
能够缩短指令操作码的平均长度。采用方法为常用的指令采用短的操作码,不常用的指令采用
长的操作码。
缺点:编码方法复杂,使指令的译码变的复杂。
例:设某台计算机有100条指令,要求:
1.采用固定长度操作码编码,试设计其操作码编码。
2.假设这100条指令中有10条指令的使用概率达到90%,其余90条指令的使用概率达到10%,
试采用不等长编码设计一种操作码编码的方案,并求出操作码的平均长度。
解:1.采用固定长度操作码编码,需要7位操作码。取其中100个代码作为操作码。
111
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
000,0000~110,0011之间的代码代表100条指令。(长度固定为7)
0000000 指令0的操作码
0000001 指令1的操作码
0000010 指令2的操作码
……… ………
1100010 指令98的操作码
1100011 指令99的操作码
其余的110,0100~111,1111共28个代码可用于增加新的指令。
2.采用不固定长度操作码编码,可以用4位代码对10条指令进行编码,用8位代码对90条指令
进行编码。
0000~1001对应10条常用的指令,1010~1111之间的代码扩展4位,1010,0000~1111,1001之
间的90个代码表示其余90条指令。
0000———指令0的操作码 ;
0001———指令1的操作码 ;
………
1000———指令8的操作码 ;
1001———指令9的操作码 ;
1010
……}
1111
未使用
1010,0000~1010,1111;代表16个操作码
1011,0000~1011,1111;代表16个操作码
1100,0000~1100,1111;代表16个操作码
1101,0000~1101,1111;代表16个操作码
1110,0000~1110,1111;代表16个操作码
1111,0000~1111,1001;代表10
个操作码
90个操作码
指令操作码的平均长度为:
4×90%+8×10%=4.4 小于等长编码的7位。
剩余的编码1111,1010~1111,1111(6个),通过增加操作码的长度进一步的扩展。
本例说明不等长的指令操作码可以减小操作码的平均长度,提高指令编码的效率。从指令的扩
展性来看,也希望操作码长度可变。
4.2.2地址码
指令中指定操作数存储位置的字段称为地址码。
211
地址码中可以包含存储器地址、也可包含寄存器的号。
指令中可以有一个、两个或者三个操作数,也可没有操作数。根据一条指令有几个操作数地址,
可将指令分为零地址指令、一地址指令、二地址指令、三地址指令。4个地址码的指令很少被使用。
零地址指令:只有操作码,没有地址码。(空操作NOP,停止HLT等)
一地址指令:指令编码中有一个地址码。指出了参加操作的一个操作数的存储位置,如果还有另
一个操作数则隐含在累加器中。
INC AL
INC [SI]
MOV AL, LSRC_BYTE
MUL RSRC_BYTE
二地址指令:指令编码中有两个地址码。指出了参加操作的两个操作数的存储位置,结果存储在
其中一个地址中。
(op a1,a2:a1opa2a1)
MOV AL, BL
MOV AX, DX
MOV AX, [SI]
ADD AL, 30
ADD AX, SI
三地址指令:指令编码中有三个地址码。指出了参加操作的两个操作数的存储位置和一个结果
的地址。
(opa1,a2,a3:a1opa2a3)
ADDR0,R1,R2;R0=R1+R2
注意
(1)零地址指令的指令字中只有操作码,而没有地址码。
(2)一地址指令常称为单操作数指令。
(3)二地址指令常称为双操作数指令,它的两个地址码字段分别指明参与操作的两个数在内存中
或运算器中通用寄存器的地址,A1作存放操作结果的地址。
(A1) OP (A2) -> A1
311
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
(4)三地址指令字中有三个操作数地址。
(A1) OP (A2) -> A3
A1,A2,A3可以是内存中的单元地址,也可以是运算器中通用寄存器的地址。
二地址指令格式中,从操作数的物理位置来说,又可归结为三种类型。
寄存器-寄存器(RR)型指令:需要多个通用寄存器或个别专用寄存器,从寄存器中取操作数,把
操作结果放到另一寄存器。机器执行寄存器-寄存器型指令的速度很快,因为执行这类指令,不需要
访问内存。
寄存器-存储器(RS)型指令:执行此类指令时,既要访问内存单元,又要访问寄存器。
存储器-存储器(SS)型指令:操作时都是涉及内存单元,参与操作的数都放在内存里,从内存某
单元中取操作数,操作结果存放至内存另一 单元中,因此机器执行这种指令需要多次访问内存。
4.2.3指令字
指令字长度:一个指令字中包含二进制代码的位数。其长度应该与计算机的数据字长相匹配,以
简化指令访存的操作。一般指令字长为计算机字长的整数倍。
机器字长:计算机能直接处理的二进制数据的位数,它决定了计算机的运算精度。指令字长等于
机器字长指令称为单字长指令
指令字长等于两个机器字长指令称为双字长指令,三字长以上指令较少使用。
使用多字长指令,目的在于提供足够的地址位来解决访问内存任何单元的寻址问题。
缺点:是必须两次或多次访问内存以取出一整条指令,降低了CPU的运算速度,又占用了更多的
存储空间。
操作码的设计,应当与地址码的设计相匹配,以形成高效合理的指令编码。
如指令长度固定的情况下,地址码数量较多的指令中可以安排较短的操作码,地址码数量较少的
指令中可以安排较长的操作码。
例:某计算机要求如下形式的指令:三地址指令4条,单地址指令254条,零地址指令16条,设指
令字长12位每个地址码3位,设计其编码。
解:1.先设计3地址编码用000~011这4个编码作为3地址的操作码
2.一地址指令中操作码可以扩展9位,
411
100,xxx,xxx———(1地址的64条指令)
101,xxx,xxx———(1地址的64条指令)
110,xxx,xxx———(1地址的64条指令)
111,xxx,xxx———(1地址的62条指令
)
254个编码
剩余为111,111,110,xxx———(0地址的8个编码)
111,111,111,xxx———(0地址的8个编码 })16个编码
例:计算机指令长度为20位,有2地址指令,1地址指令,0地址指令。地址码长度6位,问若操作
码字段固定长度为8位,现设计出m条2地址指令,n条0地址指令,此时该计算机最多可以设计出多
少条1地址指令。
解:
因为操作码字段固定长度为8位
2地址指令为m条
0地址指令为n条
最多可以设计出1地址指令为28-m-n条=256-m-n条
例:计算机指令长度为16位,有2地址指令,1地址指令,0地址指令。地址码长度6位,若m条2
地址指令,n条0地址指令,问此时该计算机最多可以设计出多少条1地址指令。
解:2地址指令的操作码字段为4位(4位可设计24个编码),而2地址指令为m条
因此,剩余的4位为24-m,
设1地址的指令为y条
最多可以设计1地址的编码数为(24-m)×26
可以设计0地址的指令数为 [(24-m)×26-y]×26
511
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
由于0地址指令为n条,因此 [(24-m)×26-y]×26=n
最多可以设计出1地址指令为 y=(24-m)×26-n/26
4.2.4指令助记
为了便于书写和阅读程序,每条指令通常用3个或4个英文缩写字母来表示。这种缩写码叫做
指令助记符。
如上表所示,这里我们假定指令系统只有7条指令,所以操作码只需3位二进制。由于指令助记
符提示了每条指令的意义,因此比较容易记忆,书写方便。
在不同的计算机中,指令助记符的规定是不一样的。因此,指令助记符还必须转换成与它们相对
应的二进制码。这种转换借助汇编程序可以自动完成,汇编程序相当于一个“翻译”。
例:某16位计算机指令格式如下所示,其中OP为操作码,试分析指令格式的特点。
解:(1)单字长二地址指令。
(2)操作码字段OP可以指定128条指令。
(3)源寄存器和目标寄存器都是通用寄存器(可分别指定16个通用寄存器),所以是RR型指令,
两个操作数均在寄存器中。
(4)这种指令结构常用于算术逻辑运算类指令。
例:16位机指令格式如下所示,OP为操作码字段,试分析指令格式特点。
解:(1)双字长二地址指令,用于访问存储器。
(2)操作码字段OP为6位,可以指定64种操作。
(3)一个操作数在源寄存器(共16个寄存器 ),另一个操作数在存储器中(由变址寄存器和位移
量决定)所以是RS型指令。
二、本讲小结
本讲主要讲解了:指令编码、包括指令字、操作码、地址码等概念
611
重点讲解二进制机器指令格式设计中的方法和思路。
常考题型,填空、选择、分析,设计、综合。
应试方法,根据题目中的要求(指令数量,指令字长等限制条件设计高效的指令系统编码。
第2讲 指令和数据的寻址方式
一、考点精讲
4.2指令和数据的寻址方式
操作数或指令在存储器中的地址:某个操作数或某条指令存放在某个存储单元时其存储单元的编号。
在存储器中,操作数或指令字写入或读出的方式,有地址指定方式、相 联存储方式和堆栈存取
方式。
寻址方式:当采用地址指定方式时,形成操作数或指令地址的方式。
寻址方式分为两类:指令寻址和数据寻址
指令寻址方式:比较简单
数据寻址方式:比较复杂,有如下3种情况:
存储器寻址:操作数在内存中。指令的地址码部分指明了操作数所在的内存单元地址。
寄存器寻址:指令的地址码部分指明了操作数所在的CPU中的一个寄存器。
立即数寻址方式:指令的地址码部分就是操作数本身。
传统的计算机中,内存中指令的寻址和数据的寻址时交替进行的。
4.3.1指令的寻址方式
指令的寻址方式有两种:顺序寻址方式和跳跃寻址方式。
1.顺序寻址方式
指令地址在内存中按顺序安排,当执行一段程序时,通常是一条指令接一条指令的顺序执行。从
存储器取出第一条指令,然后执行这条指令;接着从存储器取出第二条指令,执行第二条指令;接着再
取出第三条指令……这种程序顺序执行的过程,我们称为指令的顺序寻址方式。
为此,必须使用程序计数器(又称指令指针寄存器)PC来计数指令的顺序号,该顺序号就是指令
在内存中的地址。
2.跳跃寻址方式
当程序转移执行时,指令的寻址就采取跳跃寻址方式。所谓跳跃,是指下条指令的地址码不是由
程序计数器给出,而是由本条指令给出。程序跳跃后,按新的指令地址开始顺序执行。指令计数器的
内容也必须相应改变,以便及时跟踪新的指令地址。
采用指令跳跃寻址方式,可以实现程序转移或构成循环程序,从而能缩短程序长度,或将某些程
序作为公共程序引用。指令系统中的各种条件转移或无条件转移指令,就是为了实现指令的跳跃寻
址而设置的。
711
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
4.3.2操作数寻址方式
操作数的地址被称为有效地址。
形成操作数的有效地址的方法,称为操作数的寻址方式。
例如,一种单地址指令的结构如下所示,其中用X,I,D各字段组成该指令的操作数地址。
指令中操作数字段的地址码是由形式地址和寻址方式特征位等组合形成。一般来说,指令中所
给出的地址码,不一定是操作数的有效地址。
寻址过程就是把操作数的形式地址,变换为操作数的有效地址的过程。
寻址方式就是确定本条指令的操作数地址及下条要执行的指令地址的方法,它与计算机的硬件
密切相关。不同的计算机有不同的寻址方式,但是基本原理是相同的。下面介绍几种大多数计算机
都具有的寻址方式。
1.隐含寻址 (操作数在累加寄存器中)
在指令中不明显的给出而是隐含着操作数的地址。
例如,单地址的指令格式,没有在地址字段中指明第二操作数地址,而是规定累加寄存器 AL或
AX作为第二操作数地址,AL或AX对单地址指令格式来说是隐含地址。
MOV AL, LSRC_BYTE
MUL RSRC_BYTE
2.立即寻址(操作数在指令中)
指令的地址字段指出的不是操作数的地址,而是操作数本身。这种方式的特点是指令执行时间
很短,不需要再访问内存取数 mov ax, 2000h;
将立即数2000H存入AX累加器中
例如:单地址的移位指令格式为
这里D不是地址,而是一个操作数。F为标志位。当F=1,操作数进行右移;当 F=0时,操作数
进行左移。
811
b.基址寻址方式(操作数在内存中)
在基址寻址方式中,指令的地址码部分给出偏移量D,而基准地址放在基址寄存器Rb中,最后操作数
的有效地址仍然是由基准地址A与偏移量D相加而成,即:EA=(Rb)+D。用哪一个寄存器作为基址寄存
器也必须在硬件设计时就事先规定,基址寄存器Rb中的内容称为基准地址,该值可正可负。
它的优点是可以扩大寻址能力。同形式地址相比,基址寄存器的位数可以设置得很长,从而可以
在较大的存储空间中寻址。
c.变址寻址方式(操作数在内存中)
将指令的地址码部分给出的基准地址A与CPU内某特定的变址寄存器Rx的内容相加,形成操作
数的有效地址,即:EA=A+(Rx)。硬件设计时事先规定好变址寄存器,变址寄存器的内容称为变址值。
指令的地址码部分给出的地址A作为基准地址,而将变址寄存器Rx中的内容作为修改量。在遇
到需要频繁修改操作数地址时,无须修改指令,只要修改 Rx中的变址值就可以了,适用于数组运算、
字符串操作等一些进行成批数据处理的指令。
变址寻址就是将指令的地址码部分给出的基准地址A与CPU内某特定的变址寄存器Rx中的内
容相加,以形成操作数的有效地址,即:EA=A+(Rx)。用哪一个寄存器作为变址寄存器必须在硬件
设计时就事先规定,变址寄存器Rx中的内容称为变址值,该值可正可负。
变址寻址方式是一种被广泛采用的寻址方式,最典型的应用就是将指令的地址码部分给出的地址A作为
基准地址,而将变址寄存器Rx中的内容作为修改量。在遇到需要频繁修改操作数地址时,无须修改指令,只要
修改Rx中的变址值就可以了,这对于数组运算、字符串操作等一些进行成批数据处理的指令是很有用的。
121
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
b.存储器堆栈
串联堆栈存在一些限制:
一是寄存器的数目一般是有限的。如堆栈有8个寄存器,那么把多于8个的数据压入堆栈时,
“老”的数据就从栈底压出并被丢失。
二是堆栈的读出是破坏性的。当从堆栈取出一个数时,它就不能再在堆栈中存在。
由于有这些限制,通常由程序员设置出一部分主存储器来作为堆栈,称为存储器堆栈。
这种堆栈有三个优点:
(1)堆栈能够具有程序员要求的任意长度;
(2)只要程序员喜欢,愿意建立多少堆栈,就能建立多少堆栈;
(3)可以用对存储器寻址的任何一条指令来对堆栈中的数据进行寻址。
在存储器类型的堆栈中,需要一个堆栈指示器(sp),它是 CPU中一个专用的寄存器。堆栈指示
器指定的存储器单元,就是堆栈的栈顶。在设计计算机系统时,把主存储器的一部分用作堆栈区。一
旦设定堆栈区后,这一部分就不能用作其他用途。
当建立存储器堆栈时,可用程序来设置。把一个主存地址送入堆栈指示器,就可确定堆栈的顶。
在存储器堆栈中,数据的压入或取出操作,通常也是使用“进栈”指令和“出栈”指令来实现的,但是指
令的功能和串联堆栈中的情况有所不同。
进栈操作可描述如下:
(A)→Msp,(SP)-1→SP
其中(A)表示通用寄存器A的内容,SP表示堆栈
指示器,Msp表示堆栈指示的存储器栈顶单元。
出栈操作描述如下:
(SP)+1→SP,(Msp)→A
存储器堆栈中,进栈时先存入数据,后修改堆栈指示器;出栈时,先修改堆栈指示器,然后取出数
据。(堆栈指针永远指向一个空的单元。)
321
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
堆栈在计算机的工作中起着重要的作用如果在程序中要用到某些寄存器,但是它的内容却在将
来还有用,这时可以用堆栈把他们保存下来,然后到必要时再恢复原来的内容
PUSH AX
PUSH BX
………
期间程序用到AX和BX寄存器
………
POP BX
POP AX
二、本讲小结
本讲主要讲解了:指令寻址和数据寻址方式,其中指令寻址方式简单、数据寻址方式复杂。
重点讲解了数据的寻址;本讲考生要深刻领会寻址的意义,关键是根据寻址方式和形式地址确定
操作数究竟在哪里即确定实际地址。
常考题型选择、填空、综合等。
应试方法:关键是能准确找到操作数。
第3讲 CISC与 RISC、典型例题选讲
一、考点精讲
4.3CISC和RISC
计算机发展过程中,不同的设计理念,形成不同风格的指令系统。计算机指令系统的类型可以分
为复杂指令系统计算机(cisc)和精简指令系统计算机(risc)两种类型。
早期CISC设计风格的主要特点:
1.指令系统复杂。表现在指令多,寻找方式多、指令格式多。CISC指令数一般大于100条(一般
的CISC计算机所含的指令数目在300条以上,有的甚至达500条),寻找方式一般大于4种,且每个
地址码有多种寻找方式,指令的格式一般大于4种。
2.指令串行执行。一条指令的执行分为许多执行步骤,大多数指令需要多个时钟周期才能执行
完成。
3.各种指令都可以访问存储器。使得指令的执行步骤和执行时间变化范围很大。
4.采用微程序控制。因为微程序适合实现复杂的指令执行过程的控制。
5.有较多的专用寄存器。如变址寄存器、状态寄存器等,寄存器的编码和使用较为复杂。
6.编译程序难以用优化措施生成高效的目标代码程序。指令系统复杂,编译程序面临复杂的
选择。
421
在早期的计算机设计中,认为指令越多越好,指令越多,硬件功能越多速度快,早期的计算机把指
令的数目作为计算机性能的一项重要标志。
CISC面临的主要问题是控制器电路过于复杂,占有微处理器芯片中过多的面积。针对上述问
题,提出RISC微处理器。
早期的RISC微处理器主要特征:
1.简化的指令系统。表现在指令数较少,基本寻址方式少,指令格式少,指令字长度一致。
2.以寄存器———寄存器方式工作,除了LOAD/STORE指令,都为访问寄存器指令。
3.采用流水技术。
4.使用较多的通用寄存器以减少访问内存。
5.采用阵列逻辑控制器电路。为提高指令执行的速度。
6.采用优化编译技术。通过精心选择的指令系统,优化编译
技术生成优化的目标代码,防止或减少指令流水线中出现的相关性,使流水线畅通。
从应用角度考虑,这些指令的功能也具有普遍意义,几乎所有计算机的指令集中都能找到这些
指令。
在这个指令系统中,我们假定CPU中只有一个通用寄存器即累加寄存器A,所以对累加寄存器的
寻址采用隐含寻址方式。当CPU中使用多个累加器结构时,多累加器变成通用寄存器组,只要对通
用寄存器组进行编址,这个指令系统也能完全使用。
4.5.3精简指令系统
对于cisc指令系统而言,实际使用中,经常使用的指令占指令系统的20%,其使用频度为80% 。
80%的指令使用频度为20%。因此产生了RISC指令系统。
RISC指令系统的最大特点是:
(1)选取使用频率最高的一些简单指令,指令条数少;
(2)指令长度固定,指令格式种类少;
(3)只有取数/存数指令访问存储器,其余指令的操作都在寄存器之间进行。
典型RISC机指令系统的基本特征
型号 指令数 寻址方式 指令格式 通用寄存器数 主频/MHZ
RISC-I 31 2 2 78 8
RISC-I 39 2 2 138 12
MIPS 55 3 4 16 4
SPARC 75 4 3 120-136 25-33
MIPSR3000 91 3 3 32 25
i860 65 3 4 32 30
例:在SPARC中,有一些指令没有选入指令系统,但很容易使用指令集中的另外一条指令来替代
521
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
解:(1)直接寻址 (2)相对寻址 (3)变址寻址
(4)寄存器间接寻址 (5)间接寻址 (6)基址寻址
例:某16位机器所使用的指令格式和寻址方式如下所示,该机有两个20位基址寄存器,四个16
位变址寄存器,十六个16位通用寄存器指令汇编格式中的S(源),D(目标)都是通用寄存器,M是主
存中的一个单元。三种指令的操作码分别是 MOV(OP)=(A)H,STA(OP)=(1B)H,LDA(OP)=
(3C)H。MOV是传送指令,STA为写数指令,LDA为读数指令。
要求:
(1)分析三种指令的指令格式与寻址方式特点。
(2)CPU完成哪一种操作所花时间最短?哪一种操作所花时间最长?第二种指令的执行时间有
时会等于第三种指令的执行时间吗?
(3)下列情况下每个十六进制指令字分别代表什么操作?其中如果有编码不正确,如何改正才能
成为合法指令?
①(F0F1)H(3CD2)H ②(2856)H
③(6FD6)H ④(1C2)H
解:第一种指令为单字长,二地址指令,属RR型
第二种指令为双字长,二地址指令,属RS型;S为基址寄存器或变址寄存器
第三种指令为双字长,二地址指令,属RR型;S为20位地址
CPU完成第一种指令所花费的时间最少,不需要读写存储器。
CPU完成第二种指令所花费的时间最长,因为需要计算有效地址并对存储器进行访问,
第二种指令所花费的时间不等于第三种,第三种无需进行有效地址的计算。
根据条件,MOV(OP)=(A)H=001010;
STA(OP)=(1B)H=01,1011;
LDA(OP)=(3C)H=11,1100;
①(F0F1)H(3CD2)H=(1111,0000,1111,0001 0011,1100,1101,0010)b(双字)
721
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
正确,表明把主存(13cd2)H地址单元的内容取至15号寄存器。
②(2856)H=(0010,1000,0101,0110)b单字长指令,表明把寄存器6的内容传送到寄存器5号。
③(6FD6)H=0110,1111,1101,0110b,操作码不对,应修改为(28D6)h
④(1C2)H=0000,0001,1100,0010b,操作码不对,应修改为(28C2)h
例:一条指令存储在存储器中地址为300的地方,其操作数地址字段为301,地址字段的值为
400,处理器中寄存器R1中包含数据200,在以下指令寻址方式下,求操作数的有效地址。
(1)直接寻址
(2)立即数寻址
(3)相对寻址
(4)寄存器(R1)间接寻址
(5)以R1为变址寄存器的变址寻址
解:R1=200
(1)直接寻址;操作数的有效地址=400
(2)立即数寻址;操作数的有效地址=301
(3)相对寻址;操作数的有效地址=PC+400
(4)寄存器(R1)间接寻址;操作数的有效地址=200
(5)以R1为变址寄存器的变址寻址;操作数的有效地址=200+400
例:一台处理器具有如下指令格式:
6位 2位 3位 3位
OP X 源寄存器 目的寄存器 地址
格式表明有8个通用寄存器(长度为16位),X指定寻址方式,主存实际容量为256K字。
(1)假设不用通用寄存器也能直接访问主存中的每一个单元,并假设操作码域OP=6位,请问地
址码域应分配多少位?指令字长度应有多少位?
(2)假设X=11时,指定的某个通用寄存器用作基址寄存器,请提出一个硬件设计规则,使得被指
定的通用寄存器能访问1M主存空间中的每一个单元。
解:(1)主存容量为256k,地址码域=18位,
指令的长度为6+2+3+3+18=32位
(2)此时指定的通用寄存器用作基址寄存器,长度为16位,不能覆盖1M字空间,可采用通用寄
821
存器左移4位,低位补0,形成20位的基地址,然后与指令字形式地址相加得到有效地址,可以范围
1M字空间的任意一个单元。
例:假设寄存器R中的数值为1000,地址为1000的存储器中存储的数据为2000,地址2000的存
储器中存储的数据为3000,pc的值为4000,问在以下寻址方式下访问的指令操作数的值是什么?
1.寄存器寻址R
2.寄存器间接寻址(R)
3.直接寻址1000
4.存储器间接寻址(1000)
5.相对寻址 -2000(pc)
6.立即数寻址 #2000
解:1.操作数的值为:1000
2.操作数的值为:2000
3.操作数的值为:2000
4.操作数的值为:3000
5.操作数的值为:3000
6.操作数的值为:2000
例:某机的16位单字长访内存指令格式如下:
其中,A为形式地址,补码表示(其中一位为符号位):
I为直接/间接寻址方式:I=1为间接寻址,I=0为直接寻址方式;
M为寻址模式:0为绝对地址,1为基地址寻址,2为相对寻址,3为立即寻址;
X为变址寻址。
设PC,Rx,Rb分别为指令计数器,变址寄存器,基地址寄存器,E为有效地址,请回答以下问题:
(1)该指令格式能定义多少种不同的操作?立即寻址操作数的范围是多少?
(2)在非间接寻址情况下,写出各计算有效地址的表达式
(3)设基址寄存器为14位,在非变址直接基地址寻址时,确定存储器可寻址的地址范围
(4)间接寻址时,寻址范围是多少?
解:(1)该指令格式可定义16种不同的操作 (OP为4位,24=16)立即寻址操作数的范围是
"
128~+127(8位补码,1位符号位,其范围为-128~+127)
(2)绝对寻址(直接寻址) E=A
基值寻址 E=(Rb)+A
相对寻址 E=(PC)+A
立即寻址 D=A
921
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
变址寻址 E=(RX)+A
(3)由于E=(Rb)+A,Rb=14位,故存储器可寻址的地址范围为(-128~16383+127)
(4)间接寻址时,寻址范围为64K,因为此时从主存读出的数 作为有效地址(16位)。
例.设有一台简单计算机的指令系统共有10条指令,各指令的使用频率如下:
I1 20%,I2 12%,I3 11%,I4 15%,I5 8%
I6 3%,I7 2%,I8 18%,I9 10%,I10 1%
(1)用霍哈夫曼编码设计这10条指令的操作码,并计算操作码的平均长度;
(2)设计只有两种长度,且平均长度不大于3.20位的等长扩展操作码,并计算操作码平均长度。
答:(1)霍夫曼树为:
霍哈夫曼编码结果如:
11 011 010 001 101 100 0001 00001 000001 000000
平均代码长度=3.03
(2)一种设计方案是取3位和4位两种长度,如
000 001 010 011 100 101 1100 1101 1110 1111
平均长度=3(0.20+0.18+0.15+0.12+0.11+0.10)+4(0.08+0.03+0.02+0.01)
=30.86+40.14=3.14
另一种方案是取3和5两种长度,如
000 001 010 011 100 101 110 11100 11101 11110
平均长度=3(0.20+0.18+0.15+0.12+0.11+0.10+0.08)+5(0.03+0.02+0.01)
=30.94+50.06=3.12
2010-43:某计算机字长为16位,主存地址空间大小为128KB,按字编址。采用单字长指令格
式,指令各字段定义如下
转移指令采用相对寻址,相对偏移是用补码表示,寻址方式定义如下:
031
请求。
为了不致造成混乱,在CPU的中断管理部件中必须有一个中断屏蔽触发器,它可以在程序的控制
下置“1”(设置屏蔽),或置“0”(取掉屏蔽)。
只有在中断屏蔽标志为“0”时,CPU才可以受理中断。当一条指令执行完毕 CPU接受中断请求
并作出响应时,它一方面发出中断响应信号INTA,另一方面把中断屏蔽标志置“1”,即关闭中断。
这样,CPU不能再受理另外的新的中断源发来的中断请求。只有在CPU把中断服务程序执行完
毕以后,它才重新使中断屏蔽标志置“0”,即开放中断,并返回主程序。
因此,中断服务程序的最后必须有两条指令,即开中断指令和返主指令,同时在硬件上要保证返
主指令执行以后才受理新的中断请求。
(4)中断处理过程是由硬件和软件结合来完成的。
中断周期由硬件实现,而中断服务程序由机器指令序列实现。
后者除执行保存现场、恢复现场、开放中断并返回主程序任务外,对要求中断的设备进行服务,使
其同CPU交换一个字的数据,或作其他服务。
程序中断由外设接口的状态和CPU两方面来控制:
在接口方面,有决定是否向CPU发出中断请求的机构,主要是接口中的“准备就绪”标志(RD)和
“允许中断”标志(EI)两个触发器;
在CPU方面,有决定是否受理中断请求的机构,主要是“中断请求”标志(IR)和“中断屏蔽”标志
(IM)两个触发器。
上述四个标志触发器的具体功能如下:
准备就绪的标志(RD)一旦设备做好一次数据的接收或发送,便发出一个设备动作完毕信号 ,使
RD标志置“1”。在中断方式中,该标志用作为中断源触发器,简称中断触发器。
允许中断触发器(EI)可以用程序指令来置位。EI为“1”时,某设备可以向 CPU发出中断请求;
EI为“0”时,不能向CPU发出中断请求,这意味着某中断源的中断请求被禁止。设置EI标志的目的,
就是通过软件来控制是否允许某设备发出中断请求。
中断请求触发器(IR)它暂存中断请求线上由设备发出的中断请求信号。当IR标志为“1”时,表
示设备发出了中断请求。
中断屏蔽触发器(IM)是CPU是否受理中断或批准中断的标志。IM标志为“0”时,CPU可以受
理外界的中断请求,反之,IM标志为“1”时,CPU不受理外界的中断。
二、本讲小结
本讲介绍了输入输出系统的概念,输入输出的几种方式,查询方式和中断方式的原理。
502
唐朔飞版和白中英版《计算机组成原理》 点精讲及复习思路
第2讲 中断方式
一、考点精讲
1.中断服务程序的流程
(1)保护现场
程序断点的保护 中断隐指令完成
寄存器内容的保护 { 进栈指令
(2)中断服务
对不同的 I/O设备具有不同内容的设备服务
(3)恢复现场 出栈指令
(4)中断返回 中断返回指令
2.单重中断和多重中断
单级中断
多级中断 允许级别更高的中断源
中断现行的中断服务程序
CPU响应中断后,经过某些硬件操作,转去执行中断服务程序,称为中断隐指令:这不是指令系统
中的一条真正的指令,没有操作码,所以中断隐指令是一种不允许、也不可能为用户使用的特殊指令。
功能为:
(1)保存断点
(2)暂不允许中断
暂不允许中断即关中断。并不是所有的计算机都在中断隐指令中由硬件自动地关中断,也有些
计算机的这一操作是由软件(中断服务程序)来实现的。
(3)引出中断服务程序
引出中断服务程序的实质就是取出中断服务程序的入口地址送程序计数器(PC)。对于向量中
断和非向量中断,因此中断服务程序的方法是不相同的。
8.2.3单级中断
1.单级中断的概念
根据计算机系统对中断处理的策略不同,可分为单级中断系统和多级中断系统。
单级中断系统是中断结构中最基本的形式。在单级中断系统中,所有的中断源都属于同一级,所
有中断源触发器排成一行,其优先次序是离CPU近的优先权高。当响应某一中断请求时,执行该中断
源的中断服务程序。在此过程中,不允许其他中断源再打断中断服务程序,即使优先权比它高的中断
源也不能再打断。
602
2.单级中断源的识别
如何确定中断源,并转入被响应的中断服务程序入口地址,是中断处理首先要解决的问题。
3.中断向量的产生
当CPU响应中断时,由硬件直接产生一个固定的地址(即向量地址),由向量地址指出每个中断
源设备的中断服务程序入口,这种方法通常称为向量中断。
显然,每个中断源分别有一个中断服务程序,而每个中断服务程序又有自己的向量地址。
当CPU识别出某中断源时,由硬件直接产生一个与该中断源对应的向量地址,很快便引入中断服务程序。
向量中断要求在硬件设计时考虑所有中断源的向量地址,而实际中断时只能产生一个向量地址。
有些计算机中由硬件产生的向量地址不是直接地址,而是一个“位移量”,这个位移量加上 CPU
某寄存器里存放的基地址,最后得到中断处理程序的入口地址。
8.2.4多级中断
1.多级中断的概念
多级中断系统是指计算机系统中有相当多的中断源,根据各中断事件的轻重缓急程度不同而分
成若干级别,每一中断级分配给一个优先权。优先权高的中断级可以打断优先权低的中断服务程序,
以程序嵌套方式进行工作。
702
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
根据系统的配置不同,多级中断可分为一维多级中断和二维多级中断,请见下图。
一维多级中断是指每一级中断里只有一个中断源,而二维多级中断是指每一级中断里又有多个
中断源。
对多级中断,我们着重说明如下几点:
(1)一个系统若有n级中断,在CPU中就有n个中断请求触发器,总称为中断请求寄存器 ;与之
对应的有n个中断屏蔽触发器,总称为中断屏蔽寄存器。
单级中断不同,在多级中断中,中断屏蔽寄存器的内容是一个很重要的程序现场,因此在响应中
断时,需要把中断屏蔽寄存器的内容保存起来,并设置新的中断屏蔽状态。一般在某一级中断被响应
后,要置“1”(关闭)本级和优先权低于本级的中断屏蔽触发器,置“0”(开放)更高级的中断屏蔽触发
器,以此来实现正常的中断嵌套。
(2)多级中断中的每一级可以只有一个中断源,也可以有多个中断源。
在多级中断之间可以实现中断嵌套,但是同一级内有不同中断源的中断是不能嵌套的,必须是处
理完一个中断后再响应和处理同一级内其他中断源。
(3)设置多级中断的系统一般都希望有较快的中断响应时间,因此首先响应哪一级中断和哪一个
中断源,都是由硬件逻辑实现,而不是用程序实现。
另外,在二维中断结构中,除了有中断优先级排队电路确定优先响应中断级外,还要确定优先响
应的中断源,一般通过链式查询的硬件逻辑来实现。
显然,这里采用了独立请求方式与链式查询方式相结合的方法决定首先响应哪个中断源。
(4)和单级中断情况类似,在多级中断中也使用中断堆栈保存现场信息。使用堆栈保存现场的好
处是:
a.控制逻辑简单,保存和恢复现场的过程按先进后出顺序进行。
b.每一级中断不必单独设置现场保护区,各级中断现场可按其顺序放在同一个栈里。
例1:见下图所示的二维中断系统。
802
请问:
(1)在中断情况下,CPU和设备的优先级如何考虑?请按降序排列各设备的中断优先级。
(2)若CPU现执行设备B的中断服务程序,IM2,IM1,IM0的状态是什么?如果CPU执行设 备D
的中断服务程序,IM2,IM1,IM0的状态又是什么?
(3)每一级的IM能否对某个优先级的个别设备单独进行屏蔽?如果不能,采取什么办法可达到
目的?
(4)假如设备C一提出中断请求,CPU立即进行响应,如何调整才能满足此要求?
解:(1)在中断情况下,CPU的优先级最低。各设备的优先次序是:A→B→C→ D→E→F→G→H
→I→CPU。
(2)执行设备B的中断服务程序时IM2IM1IM0=111;执行设备D的中断服务程序时,IM2IM1IM0
=011。
(3)每一级的IM标志不能对某个优先级的个别设备进行单独屏蔽。可将接口中的 EI(中断允
许)标志清“0”,它禁止设备发出中断请求。
(4)要使设备C的中断请求及时得到响应,可将设备C从第2级取出来,单独放在第3级上,使第
3级的优先级最高,即令IM3=0即可。
二、真题举例
1.【2009】下列选项中,能引起外部中断的事件是( )
A.键盘输入 B.除数为0 C.浮点运算下溢 D.访存缺页
2.【2010】单级中断系统中,中断服务程序执行顺序是( )
Ⅰ保护现场 Ⅱ开中断 Ⅲ关中断 Ⅳ保存断点
Ⅴ中断事件处理 Ⅵ恢复现场 Ⅶ中断返回
A.Ⅰ→Ⅴ→Ⅵ→Ⅱ→Ⅶ B.Ⅲ→Ⅰ→Ⅴ→Ⅶ
C.Ⅲ→Ⅳ→Ⅴ→Ⅵ→Ⅶ D.Ⅳ→Ⅰ→Ⅴ→Ⅵ→Ⅶ
3.【2011】某计算机有五级中断L4~L0,中断屏蔽字为M4M3M2M1M0,Mi=1(0≤i≤4)表示对Li
级中断进行屏蔽。若中断响应优先级从高到低的顺序是L0→L1→L2→L3→L4,且要求中断处理优先级
从高到低的顺序为L4→L0→L2→L1→L3,则L1的中断处理程序中设置的中断屏蔽字是( )
902
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
A.11110 B.01101 C.00011 D.01010
4.【2011】某计算机处理器主频为50MHz,采用定时查询方式控制设备 A的 I/O,查询程序运行
一次所用的时钟周期数至少为500。在设备 A工作期间,为保证数据不丢失,每秒需对其查询 少
200次,则CPU用于设备A的I/O的时间占整个CPU时间的百分比至少是( )
A.0.02% B.0.05% C.0.20% D.0.50%
5.【2012】响应外部中断过程中,中断隐指令完成的操作,除保护断点外,还包括( )
Ⅰ.关中断
Ⅱ.保存通用寄存器内容
Ⅲ.形成中断服务程序入口地址并送PC
A.仅Ⅰ、Ⅱ B.仅Ⅰ、Ⅲ C.仅Ⅱ、Ⅲ D.Ⅰ、Ⅱ、Ⅲ
三、本讲小结
本讲介绍中断处理流程,单级中断,多级中断的概念已经执行机制。
第3讲 DMA方式
一、考点精讲
8.3DMA方式
8.3.1DMA的基本概念
直接内存访问(DMA)完全由硬件执行I/O交换。
DMA控制器从CPU完全接管对总线的控制,数据交换不经过 CPU,直接在内存和 I/O设备之间
进行。
DMA方式一般用于高速传送成组数据。
DMA控制器将向内存发出地址和控制信号,修改地址,对传送的字的个数计数,并且以中断方式
向CPU报告传送操作的结束。
DMA方式的主要优点是速度快:
CPU不参加传送操作,省去了CPU取指令、取数、送数等操作。
在数据传送过程中,没有保存现场、恢复现场之类的工作。
内存地址修改、传送字个数的计数等等,也不是由软件实现,而是用硬件线路直接实现的。
DMA方式能满足高速I/O设备的要求,也有利于CPU效率的发挥。
多种DMA至少能执行以下一些基本操作:
(1)从外围设备发出DMA请求;
(2)CPU响应请求,把CPU工作改成DMA操作方式,DMA控制器从CPU接管总线的控制;
(3)由DMA控制器对内存寻址,即决定数据传送的内存单元地址及数据传送个数的计数,并执行
012
数据传送的操作;
(4)向CPU报告DMA操作的结束。
注意 在DMA方式中,一批数据传送前的准备工作,以及传送结束后的处理工作,均由管理程序
承担,而DMA控制器仅负责数据传送的工作。
8.3.2DMA传送方式
DMA技术的出现,使得外围设备可以通过 DMA控制器直接访问内存,与此同时,CPU可以继续
执行程序。DMA控制器与CPU分时使用内存通常采用以下三种方法:
1.停止CPU访问内存
当外围设备要求传送一批数据时,由DMA控制器发一个停止信号给 CPU,要求 CPU放弃对地址
总线、数据总线和有关控制总线的使用权。
DMA控制器获得总线控制权以后,开始进行数据传送。
在一批数据传送完毕后,DMA控制器通知CPU可以使用内存,并把总线控制权交还给CPU。
在这种DMA传送过程中,CPU基本处于不工作状态或者说保持状态。
优点:控制简单,它适用于数据传输率很高的设备进行成组传送。
缺点:在DMA控制器访内阶段,内存的效能没有充分发挥,相当一部分内存工作周期是空闲的。
这是因为,外围设备传送两个数据之间的间隔一般总是大于内存存储周期,即使高速I/O设备也
是如此。
2.周期挪用
当I/O设备没有DMA请求时,CPU按程序要求访问内存;一旦 I/O设备有 DMA请求,则由 I/O
设备挪用一个或几个内存周期。
I/O设备要求DMA传送时可能遇到两种情况:
(1)此时CPU不需要访内,如CPU正在执行乘法指令。由于乘法指令执行时间较长,此时I/O访
内与CPU访内没有冲突,即I/O设备挪用一二个内存周期对CPU执行程序没有任何影响。
(2)I/O设备要求访内时CPU也要求访内,这就产生了访内冲突,在这种情况下 I/O设备访内优
先,因为I/O访内有时间要求,前一个I/O数据必须在下一个访内请求到来之前存取完毕。
显然,在这种情况下I/O设备挪用一二个内存周期,意味着CPU延缓了对指令的执行,或者更明
确地说,在CPU执行访内指令的过程中插入DMA请求,挪用了一二个内存周期。
112
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
与停止CPU访内的DMA方法比较,周期挪用的方法既实现了I/O传送,又较好地发挥了内存和
CPU的效率,是一种广泛采用的方法。
但是I/O设备每一次周期挪用都有申请总线控制权、建立总线控制权和归还总线控制权的过程,
所以传送一个字对内存来说要占用一个周期,但对DMA控制器来说一般要2—5个内存周期(视逻辑
线路的延迟而定)。
因此,周期挪用的方法适用于I/O设备读写周期大于内存存储周期的情况。
3.DMA与CPU交替访内
如果CPU的工作周期比内存存取周期长很多,此时采用交替访内的方法可以使 DMA传送和
CPU同时发挥最高的效率。
假设CPU工作周期为1.2μs,内存存取周期小于0.6μs,那么一个CPU周期可分为C1和C2两个
分周期,其中C1供DMA控制器访内,C2专供CPU访内。
这种方式不需要总线使用权的申请、建立和归还过程,总线使用权是通过C1和C2分时进行的。
CPU和DMA控制器各自有自己的访内地址寄存器、数据寄存器和读/写信号等控制寄存器。
在C1周期中,如果DMA控制器有访内请求,可将地址、数据等信号送到总线上。在 C2周期中,
如CPU有访内请求,同样传送地址、数据等信号。
事实上,对于总线,这是用C1,C2控制的一个多路转换器,这种总线控制权的转移几乎不需要什
么时间,所以对DMA传送来讲效率是很高的。
这种传送方式又称为“透明的DMA”方式,其来由是这种DMA传送对CPU来说,如同透明的玻璃
一般,没有任何感觉或影响。
在透明的DMA方式下工作,CPU既不停止主程序的运行,也不进入等待状态,是一种高效率的工作方式。
当然,相应的硬件逻辑也就更加复杂。
8.3.3基本的DMA控制器
212
1.DMA控制器的基本组成
一个DMA控制器,实际上是采用DMA方式的外围设备与系统总线之间的接口电路。这个接口
电路是在中断接口的基础上再加DMA机构组成。
一个最简单的DMA控制器由以下逻辑部件组成:
(1)内存地址计数器 用于存放内存中要交换的数据的地址。在DMA传送前,须通过程序将数据
在内存中的起始位置(首地址)送到内存地址计数器。
而当DMA传送时,每交换一次数据,将地址计数器加“1”,从而以增量方式给出内存中要交换的
一批数据的地址。
(2)字计数器 用于记录传送数据块的长度(多少字数)。其内容也是在数据传送之前由程序预
置,交换的字数通常以补码形式表示。
在DMA传送时,每传送一个字,字计数器就加“1”,当计数器溢出即最高位产生进位时,表示这批
数据传送完毕,于是引起DMA控制器向CPU发中断信号。
(3)数据缓冲寄存器 用于暂存每次传送的数据(一个字)。
当输入时,由设备(如磁盘)送往数据缓冲寄存器,再由缓冲寄存器通过数据总线送到内存。
反之,输出时,由内存通过数据总线送到数据缓冲寄存器,然后再送到设备。
(4)“DMA请求”标志 每当设备准备好一个数据字后给出一个控制信号,使“DMA请求”标志置“1”。
该标志置位后向“控制/状态”逻辑发出 DMA请求,后者又向 CPU发出总线使用权的请求
(HOLD),CPU响应此请求后发回响应信号HLDA,“控制/状态”逻辑接收此信号后发出 DMA响应信
号,使“DMA请求”标志复位,为交换下一个字做好准备。
(5)“控制/状态”逻辑 由控制和时序电路以及状态标志等组成,用于修改内存地址计数器和字计
数器,指定传送类型(输入或输出),并对“DMA请求”信号和CPU响应信号进行协调和同步。
(6)中断机构 当字计数器溢出时(全0),意味着一组数据交换完毕,由溢出信号触发中断机构,
向CPU提出中断报告。
这里的中断与上一节介绍的I/O中断所采用的技术相同,但中断的目的不同,前面是为了数据的
输入或输出,而这里是为了报告一组数据传送结束。
因此它们是I/O系统中不同的中断事件。
2.DMA数据传送过程
DMA的数据块传送过程可分为三个阶段:传送前预处理;正式传送;传送后处理。
预处理 由CPU执行几条输入输出指令,测试设备状态,向DMA控制器的设备地址寄存器中送入
设备号并启动设备,向内存地址计数器中送入起始地址,向字计数器中送入交换的数据字个数。在这
些工作完成后,CPU继续执行原来的主程序。
正式传送 当外设准备好发送数据(输入)或接受数据(输出)时,它发出 DMA请求,由 DMA控制
器向CPU发出总线使用权的请求(HOLD)。
312
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
下图示出了停止CPU访内方式的DMA传送数据的流程图。
DMA的数据传送是以数据块为基本单位进行的,因此,每次 DMA控制器占用总线后,无论是数
据输入操作,还是输出操作,都是通过循环来实现的。
当进行输入操作时,外围设备的数据(一次一个字或一个字节)传向内存;当进行输出操作时,内
存的数据传向外围设备。
后处理 一旦DMA的中断请求得到响应,CPU停止主程序的执行,转去执行中断服务程序做一些
DMA的结束处理工作。
这些工作包括校验送入内存的数据是否正确;
决定继续用DMA方式传送下去,还是结束传送;
测试在传送过程中是否发生了错误等等。
8.3.4选择型和多路型DMA控制器
1.选择型DMA控制器
选择型DMA控制器在物理上可以连接多个设备,而在逻辑上只允许连接一个设备。换句话说,
在某一段时间内只能为一个设备服务。
选择型DMA控制器的逻辑框图请见下图。
412
显然,选择型DMA控制器相当于一个逻辑开关,根据I/O指令来控制此开关与某个设备连接。
选择型DMA控制器只增加少量硬件达到了为多个外围设备服务的目的,它特别适合数据传输率
很高以至接近内存存取速度的设备。
在很快地传送完一个数据块后,控制器又可为其他设备服务。
2.多路型DMA控制器
选择型DMA控制器不适用于慢速设备。但多路型DMA控制器适合于同时为多个慢速外围设备
服务。
多路型DMA控制器分为链式多路型DMA控制器和独立请求方式多路型DMA控制器
多路型DMA不仅在物理上可以连接多个外围设备,而且在逻辑上也允许这些外围设备同时工
作,各设备以字节交叉方式通过DMA控制器进行数据传送。
当某个外围设备请求DMA服务时,操作过程如下:
(1)DMA控制器接到设备发出的DMA请求时,将请求转送到CPU。
(2)CPU在适当的时刻响应DMA请求。若 CPU不需要占用总线则继续执行指令;若 CPU需要
占用 总线,则CPU进入等待状态。
(3)DMA控制器接到CPU的响应信号后,进行以下工作:
①对现有DMA请求中优先权最高的请求 给予DMA响应;
②选择相应的地址寄存器的内容驱动地址总线;
③根据所选设备操作寄存器 的内容,向总线发读、写信号;
④外围设备向数据总线传送数据,或从数据总线接收数据;
⑤每个字节传送完毕后,DMA控制器使相应的地址寄存器和长度寄存器加“1”或减“1”。
以上是一个DMA请求的过程,在一批数据传送过程中,要多次重复上述过程,直到外围设备表示
一个数据块已传送完毕,或该设备的长度控制器判定传送长度已满。
例:某计算机的CPU主频为500MHz,CPI为5(即执行每条指令平均需5个时钟周期)。假定某
外设的数据传输率为0.5MB/s,采用中断方式与主机进行数据传送,以32位为传输单位,对应的中断
服务程序包含18条指令,中断服务的其他开销相当于2条指令的执行时间。请回答下列问题,要求
给出计算过程。
512
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
(1)在中断方式下,CPU用于该外设I/O的时间占整个CPU时间的百分比是多少?
(2)当该外设的数据传输率达到5MB/s时,改用 DMA方式传送数据。假设每次 DMA传送大小
为5000B,且DMA预处理和后处理的总开销为500个时钟周期,则 CPU用于该外设 I/O的时间占整
个CPU时间的百分比是多少?(假设DMA与CPU之间没有访存冲突)
解:(1)在中断方式下,每32位(4B)被中断一次,故每秒中断次数为
0.5MB/4B=0.5×106/4=12.5×104次
(注意:这里是数据传输率,所以1MB=106B。)
因为中断服务程序包含18条指令,中断服务的其他开销相当于2条指令的执行时间,且执行每
条指令平均需5个时钟周期,所以,1秒内用于中断的时钟周期数为
(18+2)×5×12.5×104=12.5×106
CPU主频为500MHz,每秒 CPU的时钟周期数为500×106所以 CPU用于该外设 I/O的时间占
整个CPU时间的百分比为12.5×106/500×106=0.025=2.5%
(2)在DMA方式下,每秒进行DMA操作
5MB/5000B=5×106/5000=1×103次
因为DMA总开销(包括预处理和后处理)为500个时钟周期,所以1秒钟之内用于 DMA操作的
时钟周期数为500×1×103=5×105
故在DMA方式下,占整个CPU时间的百分比是((5×105)/(500×106))×100%=0.1%
例:一个DMA接口采用周期挪用方式把字符(大小1B)传送到存储器,它支持的最大批量为400
字节。若存取周期为100ns,每处理一次中断需5μs,现有字符设备的传输率为9600bps。假设字符之
间的传输是无间隙的,若忽略预处理所占时间,试问采用 DMA方式每秒因数据需占用 CPU多少时
间?如果完全采用中断方式,又需占用CPU多少时间?
解:字符设备传输率为9600bps,则每秒能传输
9600/8=1200B(1200个字符)
若采用DMA方式,传送1200个字符需1200个存取周期,DMA支持的最大批量为400字节,因此
每传400字符中断一次,因此DAM方式每秒因字符串送占用CPU的时间为:
0.1μs×1200+5μs×(1200/400)=135μs
若采用中断方式,每传送一个字符中断一次,每秒因数据传送占用处理器的时间是
5μs×1200=6000μs
例:在DMA方式下,数据从内存传到外设经过的路径是( )
A.内存→数据总线→外设 B.内存→DMA→外设
C.内存→CPU→总线→外设 D.外设→内存
8.4通道方式
8.4.1通道的功能
612
1.通道的功能
通道进一步提高了CPU的效率。
通道是一个特殊功能的处理器,它有自己的指令和程序专门负责数据输入输出的传输控制,而
CPU将“传输控制”的功能下放给通道后只负责“数据处理”功能。这样,通道与 CPU分时使用内存,
实现了CPU内部运算与I/O设 备的平行工作。
通道的基本功能 是执行通道指令,组织外围设备和内存进行数据传输,按I/O指令要求启动外围
设备,向CPU报告中断等。
(1)接受CPU的I/O指令,按指令要求与指定的外围设备进行通信。
(2)从内存选取属于该通道程序的通道指令,经译码后向设备控制器和设备发送各种命令。
(3)组织外围设备和内存之间进行数据传送,并根据需要提供数据缓存的空间,以及提供数据存
入内存的地址和传送的数据量。
(4)从外围设备得到设备的状态信息,形成并保存通道本身的状态信息,根据要求将这些状态信
息送到内存的指定单元,供CPU使用。
(5)将外围设备的中断请求和通道本身的中断请求,按次序及时报告CPU。
2.CPU对通道的管理
CPU是通过执行I/O指令以及处理来自通道的中断,实现对通道的管理。来自通道的中断有两
种,一种是数据传送结束中断,另一种是故障中断。
3.通道对设备控制器的管理
通道通过使用通道指令控制设备控制器进行数据传送操作,并以通道状态字接收设备控制器反
映的外围设备的状态。因此,设备控制器是通道对I/O设备实现传输控制的执行机构。
设备控制器的具体任务如下:
(1)从通道接受通道指令,控制外围设备完成所要求的操作;
(2)向通道反映外围设备的状态;
(3)将各种外围设备的不同信号转换成通道能够识别的标准信号。
二、本讲小结
本讲主要介绍了DMA方式的相关概念,传输原理。最后对通道方式做了简单介绍。
712
唐朔飞版和白中英版《计算机组成原理》考点精讲及复习思路
当前页面二维码