课后习题答案
第1章 习题答案
1.解释以下术语
(1)集成电路
集成电路是指采用一定的工艺,把一个电路中所需的晶体管、电阻、电容和电感等元件及布线互连一起,制作在一小块或几小块半导体晶片或介质基片上,然后封装在一个管壳内,成为具有所需电路功能的微型结构。
(2)摩尔定律
集成电路问世六年后,戈登·摩尔预言:集成电路芯片上所集成的晶体管的数目,每隔18个月就翻一倍。摩尔的这个预言在后来的发展中得以证实,并在较长时期保持着有效性,被人誉为“摩尔定律”。
(3)中央处理器
中央处理器是计算机中最重要的部件之一,主要由运算器和控制器组成。其内部结构归纳起来可以分为控制部件、运算部件和存储部件三大部分,它们相互协调,共同完成对指令的执行。
(4)算术逻辑部件(ALU)
ALU 是运算器的核心部件,能进行基本的算术运算,即按照算术规则进行的运算,如加、减、乘、除,以及逻辑运算即比较、移位、逻辑加、逻辑减、逻辑乘、逻辑非及异或运算等。ALU 中最基本的部件是加法器,所有的运算都可以基于加法运算和逻辑运算来实现。
(5)内存
内存也被称为内存储器,有时也称为主存。其作用是用于暂时存放CPU 中的运算数据,以及与硬盘等外部存储器交换的数据。
(6)系统软件
系统软件是指计算机厂家为实现计算机系统的管理、调度、监视和服务等功能而提供给用户使用的软件。系统软件包括各类操作系统,如Windows、Linux、UNIX 等,还包括操作系统的补丁程序及硬件驱动程序、语言处理系统、数据库系统、分布式软件系统、网络软件系统、人机交互系统等。
(7)应用软件
应用软件是指专门为数据处理、科学计算、事务管理、多媒体处理、工程设计等应用编写的各类程序,可以细分的种类就更多了,如工具软件、游戏软件、管理软件等都属于应用软件类。
(8)高级语言
高级语言也称为高级编程语言或算法语言,是面向问题和算法的描述语言。用这种语言编写程序时,程序员不必了解实际机器的结构和指令系统等细节,而是通过一种比较自然的、直接的方式来描述问题和算法。
(9)汇编语言
汇编语言是一种面向实际机器结构的低级语言,是机器语言的符号表示,与机器语言一一对应。因此,汇编语言程序员必须对机器的结构和指令系统等细节非常清楚。
(10)机器语言
机器语言是指直接用二进制代码(指令)表示的语言。用户必须用二进制代码来编写机器语言程序。因此,机器语言程序员必须对机器的结构和指令系统等细节非常清楚。
(11)指令集体系结构
ISA(指令集体系结构)是连接硬件和软件之间的桥梁,它是软件与硬件之间接口的一个完整定义。其核心部分是指令系统,同时还包含数据类型和数据格式定义、寄存器组织、I/O 空间的编址和数据传输方式、中断结构、计算机状态的定义和切换、存储保护等。ISA设计得好坏直接决定了计算机的性能和成本。
(12)源程序
编译程序、解释程序和汇编程序统称为语言处理程序。各种语言处理程序处理的对象称为源程序,用高级(算法)语言或汇编语言编写,如C 语言源程序、Java语言源程序、汇编语言源程序等。
(13)目标程序
编译程序和汇编程序对源程序进行翻译得到的结果程序称为目标程序或目标代码。
(14)编译程序
编译程序(Compiler,Compiling Program)也称为编译器,是指把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。
(15)解释程序
解释程序是高级语言翻译程序的一种,它将源语言书写的源程序作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。就像外语翻译中的“口译”一样,说一句翻一句,不产生全文的翻译文本。
(16)汇编程序
把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序。汇编程序输入的是用汇编语言书写的源程序,输出的是用机器语言表示的目标程序。
(17)主频
CPU 的主频,即CPU 主脉冲信号的时钟频率(CPU Clock Speed)。CPU 的工作节拍是由时钟所控制的,时钟不断产生固定频率的时钟脉冲,这个时钟的频率就是CPU 的主频。因此主频越高,CPU 的工作节拍就越快。
(18)MIPS
运算速度是指每秒所能执行的指令条数,单位为MIPS(百万条指令每秒),这是衡量CPU 速度的一个指标。
(19)基准程序
基准程序是进行计算机性能评测的一种重要工具,基准程序是专门用来进行性能评价的一组程序,能够很好地反映机器在运行实际负载时的性能,可以通地在不同的机器上运行相同的基准程序来比较不同机器上的运行时间,从而评测其性能。
(20)SPEC基准程序集
SPEC测试程序集是应用最广泛,也是最全面的性能评测基准程序集。1988 年,由SUN、MIPS、HP、Apollo、DEC五家公司联合提出了SPEC 标准。它包括一组标准的测试程序、标准输入和测试报告。
2.简单回答以下问题
(1)什么是存储程序原理,各部分的功能是什么,采用什么工作方式?
答:“存储程序”式计算机的特点可归纳如下:
计算机由运算器、控制器、存储器、输入设备和输出设备五大部件组成。
指令和数据均用二进制形式表示。
指令和数据以同等地位存放于存储器内,并可按地址访问。
指令在存储器内按顺序存放。但也可以根据运算结果或某种设定条件改变指令执行顺序。
运算器:
运算器通常由算术逻辑单元ALU 和一系列的寄存器构成。ALU 是运算器的核心部件,能进行基本的算术运算,即按照算术规则进行的运算,如加、减、乘、除,以及逻辑运算即比较、移位、逻辑加、逻辑减、逻辑乘、逻辑非及异或运算等。ALU 中最基本的部件是加法器,所有的运算都可以基于加法运算和逻辑运算来实现。
控制器:
控制器是计算机的管理机构和指挥中心,按照预先确定的操作步骤,协调控制计算机各部件有条不紊地自动工作,它每次从存储器中读取一条指令,经过分析译码,产生一系列的控制信号,发向各个部件以控制它们的操作,保证数据通路的正确。中央处理器(CPU)包含运算器和控制器。
存储器:
存储器用于存储程序和数据,分为内存储器和外存储器。
输入设备:
输入设备是指将人们熟悉的信息形式,变换成计算机能接收并识别的二进制信息形式。
输出设备:
输出设备是指将计算机输出的处理结果信息,转换成人类或其他设备能够接受和识别的信息形式理想的设备。
(2)CPU 的时钟频率越高,机器的速度就越快,对吗?
答:在其他因素不变的情况下,CPU 的时钟频率越高,机器的速度肯定越快。但是,程序执行的速度除了与CPU 的速度有关外,还与存储器、I/O 等模块的存取速度、总线的传输速度、Cache的设计策略等有很大关系。因此,机器的速度不只是由CPU 的时钟决定。
(3)为什么说MIPS不能很好反映计算机的性能?
答:MIPS虽然反映了计算机的运算速度,但用MIPS对不同机器进行性能评价是不准确的。因为不同机器的指令集不同,而且指令的功能也不同,即在机器M1上某一条指令的功能,在机器M2上要用多条指令来完成。
(4)计算机系统只是硬件系统吗?
答:不对。计算机系统是由计算机软件系统与计算机硬件系统共同构成。计算机硬件系统主要由以下五大部件组成,五大部件协调工作从而完成上述的输入数据、输出数据、处理数据和存储数据几大功能。软件是用户与硬件之间的接口界面。用户主要是通过软件与计算机进行交流。计算机软件总体分为系统软件和应用软件两大类。系统软件是指计算机厂家为实现计算机系统的管理、调度、监视和服务等功能而提供给用户使用的软件。应用软件是指专门为数据处理、科学计算、事务管理、多媒体处理、工程设计等应用编写的各类程序。计算机系统中的硬件与软件是相辅相成,缺一不可的。
(5)简述计算机的层次结构
答:计算机系统由不同的抽象层构成。从上往下看,包括具体的应用问题、算法、各种程序设计语言、操作系统、ISA 指令集架构、处理器微体系结构、数字逻辑电路、电子器件。程序员将应用问题转变成算法,接着用各种程序设计语言来实现,高级语言不能被计算机识别,需要通过转换才能被执行,因此程序员编写的程序都需要通过翻译程序变成计算机所能识别的机器语言,操作系统是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。接着便是连接硬件和软件之间桥梁的层次—ISA(指令集体系结构),或称体系结构,它是软件与硬件之间接口的一个完整定义。再下一层是微体系架构层。这一层就是将上层的ISA翻译为具体的实现。再下一层就是数字逻辑电路层,该层就是使用微体系架构的实现,即微架构中的不同功能部件就是用不同的逻辑电路来实现的。最后一层就是电子器件层,即每一种逻辑门电路都是由特定的器件来实现的。
(6)简述以下HELLO.C的C语言源程序代码的编译过程?
答:当用户在键盘上敲击字母序列“HELLO”后,字符串“HELLO”中的每一个字符都通过键盘设备翻译成对应的二进制代码,每一个编码被I/O 总线传递到I/O 桥,并经过I/O桥转换传递到内部系统总线上,每个字符编码便逐一暂存在CPU 的寄存器中,当用户按Enter键时,操作系统Shell命令解释器就会调出内核中相应的服务例程来加载磁盘上的可执行文件HELLO 到主存中。于是,HELLO 的二进制代码便放入了主存中,同时将可执行文件HELLO 的第一条指令的地址送到程序计数器(Program Counter,PC),这就是CPU下一条即将执行的指令的地址。因此,处理器随后开始根据PC 存储的地址,逐条地从主存中取出可执行文件Hello指令序列,然后通过存储器总线,经IO 桥转换,并经过系统总线送入CPU 中分析、解释、执行。最后由运算器运算得到运算结果,然后存放在CPU 的内部寄存器中,最后将结果通过系统总线、IO 桥、IO 总线送入图形适配器的显存中,显示器从显存中读取显示数据并把结果显示给用户。
3.假定你的朋友不太懂计算机,请用简单通俗的语言给你的朋友介绍计算机系统是如何工作的?
答:略。
4.谈谈你对未来计算机发展的认识。
答:略。
第2章 习题答案
1.(1)A+B
(2)+B+C
(3)B+BC
(4)A
2.
所以L=+ABC
3.
(1)卡诺表示真值表:
(2)画包围圈:
(3)合并最小项,得逻辑表达式:
L=ABCD+A+
B
+C
4.(1)逻辑表达式:L=A⊕B⊕C⊕D
真值表:
逻辑功能:判奇电路。
(2)
逻辑表达式:
L 1=A⊕B⊕C
L 2=AB+C(A⊕B)
真值表:
逻辑功能:全加器。
(3)Y 1=ABC+(A+B+C)
Y 2=AB+AC+BC
真值表:
由真值表可知:电路构成全加器,输入A、B、C 为加数、被加数和低位的进位,Y 1 为“和”,Y 2为“进位”。
5.(1)组合,时序
(2)输入,历史状态
6.DDDABB
7.简答题:
(1)
答:①真值表,将变量的各种聚会与相应的函数值,以形式一一列举出来。
优点:直观明了,便于将实现逻辑问题抽象成数学表达式。
缺点:难以用公式和定理进行运算和变换;当变量较多时,列函数真值表较烦琐。
②逻辑函数表达式,就是由逻辑变量和“与”“或”“非”3种运算符所构成的表达式。
优点:这一表达方式便于研究逻辑电路,形式简单、写写方便,便于进行运算和转换。对于逻辑函数式的化简非常方便,便于简化逻辑电路。
缺点:表达式形式不唯一。逻辑函数式所表达的逻辑关系不直观。
③逻辑电路图,是由逻辑电路符号及其之间的连续而构成的图形。
优点:与实际使用的器件有着对应关系,比较接近于实际的电路。
缺点:不能反映电气参数和性能,不具备唯一性。
④卡诺图,是按一种相邻原则排列而成的最小项方格图,利用相邻可合并规则,使逻辑函数得到化简。
优点:在化简逻辑函数时比较直观且容易掌握。具有唯一性。
缺点:多个变量时,复杂度将大大提升。化简后的逻辑表达式不是唯一的。
⑤波形图,是以数字波形的形式表示逻辑电路输入与输出的逻辑关系。
优点:可以直观、清晰地看到输入变量和输出函数间随时间变化的对应的逻辑关系的全过程,波形图具有唯一性。
(2)
答:数字电路根据逻辑功能的不同可以分为两大类,一类称为组合逻辑电路,另一类称为时序逻辑电路。
组合逻辑电路在逻辑功能上的特点是任意输出仅仅该输入,与逻辑电路原来的状态无关。而时序逻辑电路是由最基本的逻辑门电路加上反馈逻辑电路(输出到输入)或器件组合而成的电路,与组合逻辑电路最本质的区别在于时序电路具有记忆功能。时序逻辑电路的特点是:不仅输出当时的输入值,而且还与逻辑电路过去的状态有关。它类似于含储能元件的电感或电容的电路和。触发器、锁存器、计数器、移位寄存器、储存器等逻辑电路都是时序逻辑电路的典型器件。
8.
解:(1)写出各逻辑方程式。
这仍是一个同步时序电路,时钟方程可以不写。
驱动方程:J 0=1, J 1=
K 0=1, K 1=
输出方程:Z=Q 1Q 0
将驱动方程代入JK 触发器特性方程中,求得状态方程:
(2)列状态表,画状态图和时序图。
由于本例中有输入信号X,所以列状态表时应加入X 的取值组合,列状态表如下:
由状态表容易画出状态转换图
状态转换图
时序图如下所示。
时序图
(3)功能说明。
X=0加法计数,X=1减法计数。
可逆计数器。
第3章 习题答案
1.真值:机器数真正的值,即原来带有正负号的数称为机器数的真值。机器数:通常将数值数据在计算机内部编码表示的数称为机器数。机器数中只有0和1两种符号。原码:原码由符号位直接跟数值位构成,也称“符号—数值”表示法。它的编码规则是:正号用0表示,负号用1表示,数值部分不变。补码:反码基础上加1。BCD 码:十进制数用二进制编码的形式表示称为BCD 码。ASCII码:目前计算机使用最广泛的西文字符集及其编码,即美国标准信息交换码,简称ASCII码。
2.(1)(25.81)10=(11001.1100)2=(31.63)8
(2)(1011.1101)2=(11.8125)10
3.+0.1001原码:0.1001000 -1.0 原码:溢出 +0 原码:0.0000000 -0 原码:1.0000000
4.11100111的补码为:10011001
5.(1)机器数为1…1 1000 0000 0000 0000=FFFF8000H。(2)机器数为000FFFAH。(3)机器数为020AH。
6.(1)mysring1指向的存储区存放内容为:2EH 2FH 6DH 79 H 66H 69H 6CH 65H 00H 。(2)mysring2 指向的存储区存放内容为:4FH 4BH 2CH 67H 6FH 6FH 64H 21H 00H。
7.(1)x的最高有效字节不变,其余各位全变为0。(2)x的最低有效字节不变,其余各位全变为0。
8.+1.75=3FE00000H。+19=41980000H。-1/8=BE000000H。258=43810000H。
9.(1)16位无符号整数范围为0~65535。(2)16位原码定点小数表示的范围为-(1-2-15)~+(1-2-15)。(3)16位补码定点整数表示范围为-32 768~+32 767。
10.2049=100000000001B=+1.00000000001B×211,用32 位补码整数表示为00000000000000000000100000000001,用十六进制形式表示为00000801H。用IEEE745单精度浮点数格式表示为45001000H。
11.d的ASCII码为1100100。
12.int ch_mu1_over f low(int x,int y)
13.根据表达式55∗x=(64-8-1)∗x=64∗x-8∗x-x可知,完成55∗x只要两次移动操作和两次减法操作,共4个时钟周期。若将55分解为32+16+4+2+1,则需要4次移位操作和4次加法操作,共8个时钟周期。上面的两种方式都比直接执行一次乘法操作所用时钟周期少。
14.对于结果为1x.xxx…的情况,需要进行右规。对于结果为0.00…01xxx的情况,需要进行左规。
(1)最终结果:E=10000101,M=1(1).00000010…0,即-64.5。(2)最终结果:E=10000101,M=0(1).00001000…0,即+66。
第4章 习题答案
1.操作码、操作数
2.运算器、控制器、寄存器
3.AX、BX、CX、DX
4.CD9DH、319DH、3123H、6246H、636BH、6246H、636BH、C6D6H、C663H、
6B63H、D663H
5.MOV AX,3
ADD AX,AX
ADD AX,AX
ADD AX,AX
6.ASSUME CS:CODE
CODE SEGMENT
MOV AX,0
MOV CX,236
L:ADD AX,123
LOOP L
MOV AX,4C00H
INT 21H
ENDS
END
7.MOV AX,X
MUL Y
MOV CX,AX
MOV BX,DX
MOV AX,Z
CWD
ADD CX,AX
ADC BX,DX
SUB CX,540
SBB BX,0
MOV AX,V
CWD
SUB AX,CX
SBB DX,BX
DIV X
8.设计思路:两个数分别存放在X 和Y 中,将X 和Y 相加后存入Z中。
9.程序的三种基本是:顺序结构、分支结构和循环结构,流程图分别如下:
10.0808H
11.标志寄存器设置了CF、PF、AF、ZF、SF、TF、IF、DF、OF 九种标志。各位的状态表示如下:
CF(Carry Flag):进位/借位标志,指令执行结果的最高位是否有向更高位进位或借位,若有则CF置1,否则置0。
PF(Parity Check Flag):奇偶校验标志,指令执行结果中1的个数是奇数个还是偶数个,若为奇数个则PF置0,否则置1。
AF(Auxiliary Carry Flag):辅助进位/借位标志,当进行字节运算有低4位向高4位进位或借位时置1,否则置0,其主要用于BCD 码修正运算。
ZF(Zero Flag):零标志,指令指行结果是不是为0,若为0则ZF置1,否则置0。
SF(Sign Flag):符号标志,指令执行结果的最高二进制位是0还是1,若为0,则SF=0,代表正数;若为1,则SF=1,代表负数。
TF(Trag Flag):陷阱标志(单步中断标志),TF=1,程序执行当前指令后暂停,TF=0程序执行当前指令后不会暂停。
IF(Interrupt Enable Flag):中断允许标志,用于控制CPU 能否响应可屏蔽中断请求,若IF=1,开中断,能够响应中断;若IF=0,关中断,不能响应中断。
DF(Direction Flag):方向标志,用于指示串操作时源串的源变址和目的串的目的变址的变化方向,DF=1引起串操作指令的变址寄存器自动减值,DF=0引起串操作指令的变址寄存器自动增值。
OF(Overflow Flag):有符号数的溢出标志,指令执行结果是否超出有符号数的表示范围,若超出则OF=1,否则OF=0。可以通过是否出现以下四种情况之一来判断:正加正得负,正减负得负,负加负得正,负减正得正。若出现则OF=1,否则OF=0。
12.
SF:由于运算结果最高位为0,所以SF=0。
ZF:由于运算结果不为0,所以ZF=0。
AF:由于第3位没有向第4位进位,所以AF=0。
PF:由于1的个数为奇数(9个1),所以PF=0。
CF:由于最高位没有产生进位,所以CF=0。
OF:由于正加正得正,所以OF=0。
13.显然这里的汇编指令是gcc默认的AT&T 格式,$2和$1分别表示立即数2和1,假设上述代码执行前(AX)=X,则执行(X<<2)+X)>>1后,即(AX)=(X∗2∗2+X)/2,算术移位时,AX中的内容在移位前、后符号未发生变化,故OF=0,没有溢出。最终AX的内容为FEC0H。
第5章 习题答案
1.解释以下术语
(1)时钟周期
答:将一个机器周期划分为若干个相等的时间段,每个时间段内完成一步操作,这是时序系统中最基本的时间分段。即时钟周期。
(2)机器周期
答:将指令周期划分为若干个工作阶段,如取指令、读取源操作数、读取目的操作数、执行等阶段。每个阶段称为一个机器周期,也称为CPU 周期。
(3)指令周期
答:指从内存取出一条指令并执行该指令所用的时间。
(4)同步时序
答:将操作时间划分为许多时钟周期,周期长度固定,每个时钟周期完成一步操作。CPU 则按照统一的时钟周期来安排严格的指令执行时间表。各项操作应在规定的时钟周期内完成,一个周期开始,一批操作就开始进行,该周期结束,这批操作也就结束。各项操作之间的衔接取决于时钟周期的切换。
(5)异步时序
答:操作按其需要选择不同的时间,不受统一的时钟周期的约束,各项操作之间衔接与各部件之间的信息交换采取应答方式。前一个操作完成后给出回答信号,启动下一个操作。
(6)微操作
答:微操作是指一个功能部件能够完成的最基本的硬件动作,是控制器需要处理的具有独立意义的最小操作。
(7)节拍
答:一个CPU 时钟周期也称为节拍。
(8)程序计数器
答:称指令计数器或指令指针IP,该寄存器的作用是保存下一条即将执行指令的地址,以保证CPU 在当前指令执行完成后,能自动确定下一条指令的地址。
(9)指令寄存器
答:指令寄存器存放的现行指令,CPU 从内存中取出指令送到指令寄存器中,然后进行指令的译码和执行工作。
(10)指令译码器
计算机执行一条指定的指令时,必须首先分析这条指令的操作码是什么,以决定操作的性质和方法,然后才能控制计算机其他各部件协同完成指令表达的功能。这个分析工作由指令译码器来完成。
(11)指令流水线
答:为了加快计算机的处理速度,将工厂中的生产流水线方式引入计算机内部,构成了计算机的流水线结构。即将多条指令的执行相互重叠起来,从而提高CPU 执行指令的效率。
2.简单回答以下问题
(1)CPU 的基本组成和基本功能是什么?
答:CPU 中主要包含运算器、控制器以及一系列寄存器。
运算器主要功能是对数据进行加工处理,包括算术逻辑单元(ALU Arithmetic Logic Unit)、多路选择器、通用寄存器组及移位器组成。
控制器就是计算机系统的指挥中心,这一部件控制着计算机系统的各个功能部件,保证其能协同工作,自动执行计算机程序。
寄存器组是指CPU 在运算或控制的过程中需要暂时存储信息的存储器集合。CPU 中的寄存器主要可分为三类:处理寄存器、控制寄存器及主存接口寄存器。
(2)简述计算机三级时序系统。
答:三级时序系统包括机器周期、时钟周期以及工作脉冲。
机器周期(CPU 周期)将指令周期划分为若干个工作阶段,如取指令、读取源操作数、读取目的操作数、执行等阶段。每个阶段称为一个机器周期,也称为CPU 周期。机器周期划分的目的是为了更好地安排CPU 的工作,如取指周期的工作就是取出指令,执行周期就是执行指令等。这是三级时序系统中的第一级时序。
时钟周期(节拍)一个机器周期的操作可能需要分成几步完成,例如按变址方式读取操作数,先要进行变址运算才能访存读取。因此又将一个机器周期划分为若干个相等的时间段,每个时间段内完成一步操作,这是时序系统中最基本的时间分段。各时钟周期长度相同,一个机器周期可根据其需要,由若干个时钟周期组成。不同机器周期,或不同指令中的同一种机器周期,其时钟周期数目可以不同。这是三级时序系统中的第二级时序。
工作脉冲在一个时钟周期(节拍)中设置若干个脉冲,用于寄存器的输出、输入等。这是三级时序系统中的第三级时序。
(3)如何控制一条指令执行结束后能够接着另一条指令的执行?
答:一条指令执行结束后能够接着执行另一条指令主要是通过PC(程序计数器)进行控制。CPU 中的指令译码器能过对指令译码,知道正在执行的是一种顺序执行的指令,就直接通过对PC加“1”(这里的“1”是指一条指令的长度)来使其指向下一条顺序执行的指令;当执行到转移指令时,指令译码器知道正在执行的是一种转移我指令,因而把转移目标地址送到PC中,使得执行的下一条指令为转移到的目标指令。
(4)通常一条指令的执行要经过哪些步骤?
答:一条指令的执行过程包括取指令、指令译码、计算源操作数地址、取源操作数、执行指令、存储目的操作数。
取出指令:在CPU 能够执行某条指令之前,它必须将这条指令从存储器中取出来,此时即将执行的指令地址就存放在程序计数器PC中,于是CPU 根据PC 地址找到主存中对应的单元,取出相应的指令。
指令译码:当CPU 把一条指令取出来后,放入IR(指令寄存器)中,然后对IR 中的指令操作码进行译码。
指令执行:
①取源操作数:控制器根据指令的地址码字段提供的寻址方式确定源操作数地址的计算方式,从而得到源操作数的地址(可能是存储器、寄存器,或指令本身),进而取出对应的源操作数;
②执行指令:按照指令操作码字段执行对应的操作,如加法、减法等;
③存储目的操作数:把执行的结果存储在目的操作数对应的地址中,在计算目的操作数的地址时,同样要根据该条指令的地址码字段提供的寻址方式确定目的操作数地址的计算方法,从而得到目的操作数的地址(可能会是存储器、寄存器中)存储对应的目的操作数的地址中。
(5)流水线下,一条指令的执行时间缩短了还是加长了? 程序的执行时间缩短了还是加长了? 为什么?
答:流水线下,一条指令的执行时间加长,程序的执行时间缩短了。因为采用流水线方式使得指令吞吐率提高了,即在给定的时间内完成指令执行的条数增加了,但每条指令的执行过程没有减少,因此不会缩短一条指令的执行时间,而且在确定流水段宽度时,是以最复杂流水估所需的宽度来设计,因此所有指令都需要花费最慢指令所需的执行时间才能完成,延长一条指令的执行时间。
3.已知CPU 结构如下图所示。各部分之间的连线表示数据通路,箭头表示信息传递方向。试完成以下工作:①写出图中四个寄存器A、B、C、D 的名称和作用;②简述指令LOAD Y 在执行阶段所需的微操作命令及节拍安排。(Y 为存储单元地址,本指令功能为(Y)→AC)。
答:①A:MDR B:MAR C:IR D:PC
②
第6章 习题答案
1.填空题
(1)主存、辅存、Cache和寄存器
(2)快 速度
(3)主存 Cache
(4)全相联映射 直接映射
(5)程序访问的局部性原理
2.选择题
1~5 BCBBD 6~10 BCACA 11~13 CBA
3.综合题
(1)解:cache的平均访问时间T e=H×T c+(1-H)×T m=0.98×200/4+(1-0.98)×200=53 ns。
(2)解:存储字:(word)一个二进制数由若干位组成,当一个数作为一个整体存入存储器或从存储器中取出时,这个数称为存储字。
存储单元:若干存储元件(或称为存储元)组成一个存储单元,一个存储单元可以放一个存储字或一至多个字节(Byte)。
存储地址:(Address)存储单元的编号称为存储地址简称为地址。存储地址是存储单元的唯一标志,它们是一一对应的。
(3)解:读操作是指从CPU 送来的地址所指定的存储单元中取出信息,再送给CPU,其操作过程如下:
①地址→MAR→AB:CPU 将地址信号送至地址总线。
②Read:CPU 发出读命令。
③Wait for MFC:等待存储器工作完成信号。
④M(MAR)→DB→MDR:读出信息经数据总线送至CPU。
写操作是指将要写入的信息存入CPU 所指定的存储单元中,其操作过程如下:
①地址→MAR→AB:CPU 将地址信号送至地址总线。
②数据→MDR→DB:CPU 将要写入的数据送至数据总线。
③Write:CPU 发出写命令。
④Wait for MFC:等待存储器工作完成信号。
(4)解:由于采用直接映射方式,所以主存的地址由区号E、区内块号B和块内地址W构成,而Cache的地址由块号b(b=B)和块内地址w(w=W)构成。
Cache容量为16KB=214 B,所以Cache地址用14 位表示,其中块内4×32/8 个B=24 B,w 用4位地址表示,Cache块号b用14-4=10位表示。
主存容量为1MB=220 B,所以主存地址用20位表示,其中块内地址W=w,即4位,区内块号B=b=10位,区号E用20-10-4=6位表示。
主存地址ABCDEH 用二进制表示为:1010 1011 1100 1101 1110,取后W(=w)位1110,再往前取B(=b)位1111001101,组合成Cache 地址,即在Cache 中的位置为:11110011011110。
(5)解:①存储器的层次结构主要体现在Cache—主存和主存—辅存这两个存储层次上。
②Cache—主存层次主要解决CPU 和主存速度不匹配的问题,在存储系统中主要对CPU 访存起加速作用。从CPU 的角度看,该层次的速度接近于Cache,而容量和每位价格却接近于主存。这就解决了存储器的高速度和低成本之间的矛盾。
主存—辅存层次主要解决存储系统的容量问题,在存储系统中主要起扩容作用。从程序员的角度看,其所使用的存储器的容量和每位价格接近于辅存,而速度接近于主存。该层次解决了大容量和低成本之间的矛盾。
③主存与Cache之间的数据调度是由硬件自动完成的,对程序员是透明的。而主存—辅存之间的数据调动,是由硬件和操作系统共同完成的。换言之,即采用虚拟存储技术实现。
存储器的层次结构主要体现在什么地方? 为什么要分这些层次?
(6)解:16K=214,有14根地址线,有32根数据线,所以地址线和数据线总和是14+32=46根。
规格:1K×4位128片,2K×8位=4K×4位=16K×1位=32片,4K×8位16片,8K×8位8片。
(7)什么叫刷新? 为什么要刷新? 说明刷新有几种方法。
为了保持数据,DRAM 使用MOS管的栅极电容存储数据,但是由于栅极漏电会造成数据丢失,因此隔一段时间就要对数据重写,对DRAM 定期重写称为刷新。
如果存储单元没有被刷新,存储的信息就会丢失,所以一定要对DRAM 刷新。
常用的刷新方式有四种:集中刷新方式、分散刷新方式、异步刷新方式、透明刷新方式。
①集中刷新方式:在整个刷新间隔内集中对每一行进行刷新,刷新时读/写操作停止。每行的刷新周期一般与一次的读/写周期相等。
②分散刷新方式:把每行存储元的刷新分散安排在各个读写周期内,即把读写周期分为两段,前段用来进行读/写,后段为刷新时间。
③异步刷新方式:将前两种刷新方式结合起来即可构成异步刷新方式。每行刷新的时间是行数对2ms的分割。
④透明刷新方式:CPU 在指令译码阶段,存储器是空闲的,可以利用这段空闲时间进行刷新操作,而不占用CPU 时间。
(8)解:主存地址:
Cache地址:
第7章 习题答案
1.I/O 系统的层次结构是怎样的?
I/O 子系统的层次结构如下图所示:
2.C标准库函数是在用户态还是内核态执行?
用户态。
3.I/O 接口的作用是什么? 具有哪些主要功能?
CPU 与外部设备的连接和数据交换都需要通过接口设备来实现,这种接口设备被称为I/O 接口,又称设备控制器、I/O 控制器或I/O 模块。
综合各种情况,I/O 接口的基本作用归纳如下。
(1)数据缓冲功能:实现高速CPU 与慢速外部设备的速度匹配。
(2)信号转换功能:实现数字量与模拟量的转换、串行与并行格式的转换和电平转换。
(3)中断控制功能:实现CPU 与外部设备并行工作和故障自动处理等。
(4)定时计数功能:实现系统定时和外部事件计数及控制。
(5)DAM 传送功能:实现存储器与I/O 设备之间直接交换信息。
4.CPU 与I/O 接口之间传送的信息有哪些? 各表示什么含义?
数据信息:主要是各类数据。控制信息:也就是控制命令。状态信息:设备状态。
5.CPU 与I/O 设备数据传送的控制方式有哪几种? 它们各有什么特点?
在微机系统中,I/O 接口可采用的输入/输出控制方式一般有4种:查询控制方式、中断控制方式、直接存储器存取方式(DMA 方式)和输入/输出协处理器方式。
(1)查询控制方式
查询控制方式分为无条件传送方式和条件传送方式。
①无条件传送方式:这种方式是查询控制方式的特例,在此种条件下不需要查询,或假设查询已经完成。当I/O 设备已准备就绪,而且不必查询它的状态就可以进行信息传输,这种情况就称为无条件传送。这种信息传送方式只适用于简单的I/O 设备,如开关和数码段显示器等。
②条件传送方式:CPU 主动查询,也称程序查询或轮询(Polling)方式。CPU 通过执行程序不断读取并测试I/O 设备状态,如果输入外部设备处于已准备好状态或输出外部设备为空闲状态时,则CPU 执行数据读/写指令。由于条件传送方式是CPU 通过程序在不断查询I/O 设备的当前状态后才进行信息传送,所以也称为“查询式传送”。条件传送方式的接口电路一般包括:传送数据接口及传送状态接口。当输入信息时,CPU 查询到I/O 设备准备好后,则将接口的“准备好”标志位置1。当输出信息时,I/O 设备取走一个数据后,CPU 将传送状态接口标志置为“空闲”状态,数据端口可以接收下一个数据。
(2)中断控制方式
中断控制方式是一种高效的、适用于频繁而随机发生的小数据量的输入/输出请求的控制方法。中断控制方式中,主机启动外设后不需要等待查询,而是继续执行程序。当外设工作完成后便向CPU 发中断请求。CPU 接到中断请求后在响应条件满足时可以响应,并由CPU 执行中断服务程序以完成外设和主机的一次信息传送,完成传送后主机又继续执行主程序。
(3)DMA 控制方式
DMA 控制方式是一种通过DMA 控制器大量、直接传送数据的方式。当某一I/O 设备需要输入/输出一批数据时,它首先向DMA 控制器发出请求,DMA 控制器接收到这一请求后,向CPU 发出总线请求;此时若CPU 响应DMA 的请求,就把总线使用权赋给DMA 控制器,则数据可以不通过CPU,直接在DMA 控制器操纵下进行。当这批数据传送完毕后,DMA 控制器就使得总线请求信号变得无效,CPU 检测到这一信号,即可收回总线使用权。
(4)输入/输出协处理器方式
对于有大量输入/输出任务的微机系统,DMA 控制方式已经不能满足输入/输出的需求。为了满足输入/输出的需要,Intel公司生产了与x86系列芯片配套的输入/输出协处理器(IOP)8089。系统中配置了IOP后,x86系列CPU 必须工作在最大模式。当CPU 需要进行I/O 操作时,只要在存储器中建立一个规定格式的信息块,设置好需要执行的操作和有关参数,然后把这些参数送入IOP,IOP即会执行输入/输出操作。如果在数据传送过程中出现错误,IOP就会进行重复传送或做必要的处理。整个数据块的传送过程由IOP 控制,在同时CPU 可去完成其他作业。
6.什么叫接口?I/O 接口的编址方式有哪两种? 它们各有什么特点?
通常将I/O 寄存器和它们的控制逻辑统称为I/O 接口(Port),CPU 可对I/O 接口中的信息直接进行读写。
CPU 对I/O 设备的访问也就是对I/O 接口电路中相应的接口进行访问,因此和访问存储器一样,也需要由译码电路来形成I/O 接口地址。I/O 接口的编址方式有两种,分别称为存储器映象编址方式和I/O 单独编址方式。
(1)存储器映象编址方式
若把微机系统中的每一个I/O 接口都看作一个存储单元,并与存储器单元一样统一编址,这样访问存储器的所有指令均可用来访问I/O 接口,不用设置专门的I/O 指令,这种编址方式称为存储器映像的I/O 编址方式(Memory Mapped I/O)。这种编址方式的优点是:微处理器的指令集中不必包含专门的I/O 操作指令,简化了指令系统的设计;可以使用类型多、功能强的存储器访问指令,对I/O 设备进行方便、灵活的操作。缺点主要是在统一编址中,I/O 接口占用了存储单元的地址空间。
(2)I/O 单独编址方式
若对微机系统中的输入输出接口地址单独编址,构成一个I/O 空间,它们不占用存储空间,系统用专门的IN 指令和OUT 指令来访问这种具有独立地址空间的接口,这种寻址方式称为I/O 单独编址方式。Intel 8086和Intel 8088等微处理器都采用这种寻址方式来访问I/O 设备。在Intel 8086中,使用地址总线的低16位(A 0~A 15)来寻址I/O 接口,最多可以访问216=65536个输入或输出接口。Intel 8086 CPU 中的M/控制信号用来区分是I/O 寻址还是存储器寻址,当它为高电平时,表示CPU 执行的是存储器操作,为低电平时则是访问I/O 接口。
I/O 单独编址方式的优点是:将I/O 指令和存储器访问指令区分开,使程序清晰,可读性好;I/O 指令长度短,执行的速度快。I/O 接口不占用存储内存空间;I/O 地址译码电路较简单。此种编址方式的不足之处是:CPU 指令系统中必须设有专门的IN 和OUT 指令,这些指令的功能没有存储器访问指令强;CPU 还需提供能够区分访问内存和访问I/O 接口的硬件引脚信号。
7.在中断响应过程中,8086往8259A 发的两个信号分别起什么作用?
某级中断被响应后,当8259A 收到第1个中断响应信号后,ISR 中对应位就被置“1”;当8259A 收到第2个中断响应信号
后,8259A 就自动将ISR 中对应位清“0”,并向8086发送中断类型码。
8.8086最多可有多少级中断? 按照产生中断的方法分为哪两大类?
8086最多可有256种中断。在计算机系统中,引起中断的原因或能发出中断请求的外设称为中断源。8086/8088系列微机系统有两种中断源,一种称为硬件中断源或外部中断源,它们从CPU 的不可屏蔽中断引脚NMI和可屏蔽中断引脚INTR 引入;另一种称为软件中断源或内部中断源,是为解决CPU 运行过程中出现的一些意外事件或便于程序调试而设置的。因此,根据不同的中断源,可以把8086/8088系列微机的中断分为硬件中断和软件中断两大类。
9.非屏蔽中断有什么特点? 可屏蔽中断有什么特点? 分别用在什么场合?
从NMI和INTR 引脚引入的中断属于硬件中断(外部中断)。其中,从NMI引脚引入的中断称为非可屏蔽中断。非可屏蔽中断用来应对比较紧急的情况,如断电、存储器或I/O校验错、协处理器异常中断请求等,它不受中断标志IF的影响,CPU 必须马上响应和处理。非可屏蔽中断通常采用边沿脉冲触发,当8086/8088处理器的NMI引脚上接收到由低到高的电平变化时,将自动产生中断类型码为2的非可屏蔽中断。
从8086/8088处理器的INTR 引脚引入的中断请求称为可屏蔽中断。只有当CPU 的标志寄存器FLAGS的中断标志位IF=1时,才允许响应此引脚引入的中断请求;若IF=0,即使外部有中断请求,也不能响应中断。在8086/8088系列微机中,这类中断是通过8259A可编程中断控制器的输出引脚INT,连到CPU 的INTR 引脚上去的。
10.什么叫中断向量? 它放在哪里? 对应于1CH 的中断向量存放在哪里? 如果1CH的中断处理子程序从3550H:1050H 开始,则中断向量应怎样存放?
通常,将中断服务程序的入口地址称为中断向量。中断入口地址位于内存00000~003FFH 的区域中,存储了这些地址的连续空间称为中断向量表。1CH∗4。从3550H:1050H 开始,IP填充为低2字节内容,CS填充为高2字节内容。
11.从8086/8088的中断向量表中可以看到,如果一个用户想定义某个中断,应该选择在什么范围?
0080H 到03FFH 之间。
12.非屏蔽中断处理程序的入口地址怎样寻找?
从类型0到类型4的5个中断被定义为专用中断,它们分别是:除法出错中断、单步中断、非可屏蔽(NMI)中断、断点中断和溢出中断。专用中断的中断服务程序的入口地址分别存放在00H、04H、08H、0CH、和10H 开始的4个连续单元中。例如,对类型号为2的非可屏蔽中断,它的中断服务程序的入口地址存放在00008 H~0000BH 单元之中,其中CS存放在0000AH 开始的字单元中,IP存放在00008H 开始的字单元中。
13.叙述可屏蔽中断的响应过程,一个可屏蔽中断或者非屏蔽中断响应后,堆栈顶部四个单元中是什么内容?
中断响应时,CPU 除了要向中断源发出中断响应信号()外,还要做下面4 项工作。
(1)保护硬件现场,即将标志寄存器FLAGS压栈保存。
(2)保护断点。将断点的段地址(CS值)和偏移量(IP值)压入堆栈,以保证中断结束后能正常返回到被中断的程序。
(3)获得中断服务程序入口地址。
(4)转移到中断服务程序。
堆栈顶部为:段地址2个字节,偏移量2个字节,标志寄存器2个字节。
14.一个可屏蔽中断请求来到时,通常只要中断允许标志为1,便可在执行完当前指令后响应,在哪些情况下有例外?
有更高级别可屏蔽中断发生,有非可屏蔽中断发生,IMR 对应位为1,即关屏蔽状态。
15.在编写中断处理子程序时,为什么要在子程序中保护许多寄存器?
CPU 响应中断时自动完成CS和IP寄存器以及标志寄存器FLAGS的压栈,但主程序中使用的寄存器的保护则由用户按照需要而定。由于中断服务程序中也使用某些寄存器,若对这些寄存器在中断前的值不加以保护,中断服务程序会将其修改,这样中断服务程序返回主程序后,主程序就不能正确执行。对现场的保护,实际上是通过执行PUSH 指令将需要保护的寄存器内容推入堆栈而完成的。
16.中断指令执行时,堆栈的内容有什么变化? 中断处理子程序的入口地址是怎样得到的?
(1)保护硬件现场,即将标志寄存器FLAGS压栈保存。
(2)保护断点。将断点的段地址(CS值)和偏移量(IP值)压入堆栈,以保证中断结束后能正常返回到被中断的程序。因为每个中断向量要占用4个字节的存储单元,所以必须将中断类型号n乘以4才能找到此类型的中断向量。
17.中断返回指令IRET 和普通子程序返回指令RET 在执行时,具体操作内容有什么不同?
中断返回通过执行中断返回指令IRET 实现,其操作正好是CPU 硬件在中断响应时自动保护硬件现场和断点的逆过程,CPU 自动从现行堆栈中弹出CS、IP 和标志寄存器FLAGS的内容,以便继续执行主程序。RET 为一般子程序返回指令,从堆栈中弹出主程序断点并返回。
18.若在一个系统中有五个中断源,它们的优先权排列为:1、2、3、4、5,它们的中断服务程序的入口地址分别为:2000 H、2010H、2030H、2060 H、20B0 H。编一个程序,使得当有中断请求CPU 响应时,能用查询方式转至申请中断的优先级最高的源的中断服务程序。
解:若5个中断源的中断请求放在一中断状态寄存器中,按优先权分别放在状态的7位(优先权最高)至位3中。查询方法的程序段为:
19.设置中断优先级的目的是什么?
CPU 暂停现行程序而转去响应中断请求的过程称为中断响应;为使系统能及时响应并处理发生的所有中断,系统根据引起中断事件的重要性和紧迫程序,硬件将中断源分为若干个级别,称作中断优先级。设定中断优先级的目标是解决多个中断源同时发出中断申请的问题。
由于中断的产生具有随机性,当系统中的中断源多于1个的时候,就有可能在某一时刻有两个或多个中断源同时发出中断请求。而CPU 只有一条中断申请线,并且任一时刻只能响应并处理一个中断。这就要求CPU 能够识别中断源,找出中断优先级最高的中断源并响应之,在这个中断响应完成后,再响应级别较低的中断源的请求。中断源的识别及其优先级的顺序判定就是中断源识别(中断判优)要解决的问题。
20.可编程中断控制器8259A 在中断处理时,协助CPU 完成哪些功能?
8259A 可协助CPU 完成如下中断管理任务:
(1)接受外部设备的可屏蔽中断请求,并经优先权电路判决找出优先级最高的中断源,然后向CPU 发出中断请求信号INT。一片8259A 可接受8级可屏蔽中断请求,通过9片8259A 级联可管理64级可屏蔽中断。
(2)8259A 具有允许或禁止(屏蔽)某个可屏蔽中断的功能。8259A 中断控制器可对提出中断请求的I/O 设备进行允许或屏蔽,采用8259A 可使系统无须添加其他电路,只需要对8259A 进行级联就可管理8级、15级或最多到64级的可屏蔽中断。
(3)为CPU 提供中断类型号(可编程的标识码),也就是中断服务程序入口地址指针,这是8259A 最突出的特点之一。CPU 在中断响应周期根据8259A 提供的中断类型号乘以4,找到中断服务程序的入口地址来实现中断服务程序的转移。
(4)8259A 具有多种中断优先权管理方式,可通过编程来进行选择。
21.什么是中断响应周期? 在中断响应中8086CPU 和8259A 一般完成哪些工作?
中断响应周期是指当CPU 采用中断方式实现主机与I/O 交换信息时,CPU 在每条指令执行阶段结束前,都要发中断查询信号,以检测是否有某个I/O 提出中断请求。如果有请求,CPU 则要进入中断响应阶段,又称中断周期。8259A 在8086/8088微机系统中的中断响应过程如下:
(1)若中断请求线(IR0~IR7)上有一条或几条变为高电平时,则将中断请求寄存器IRR 的相应位置位。
(2)若IRR 某一位被置1后,则检查IMR 中相应的屏蔽位,若该屏蔽位为1,则禁止该中断请求;若该屏蔽位为0,则将中断请求发送给优先权电路。
(3)优先权电路接收到中断请求后,比较它们的优先级,把当前优先级最高的中断请求信号由INT 引脚输出,发送到CPU 的INTR 端。
(4)如果CPU 处于开中断状态(IF=1),则在当前指令执行完毕后,向8259A 发出中断响应信号。
(5)若8259A 接收到CPU 的第1个信号,把ISR 中对应于允许中断的最高优先级请求位置1,并清除IRR 中的相应位。
(6)CPU 向8259A 发出第2个,在该脉冲期间,8259A 向CPU 发出中断类型号。
(7)如果8259A 设置为自动中断结束方式,则第2个结束时,相应的ISR 位被清“0”。在其他方式中,ISR 相应位由中断服务程序结束时发出的EOI命令来清“0”。
如果8259A 为级联方式的主从结构,且某从8259A 的中断请求优先级最高,则在第1个脉冲结束时,主8259A 将这个从设备标志ID 发送到级联线上。系统中的每个从8259A 把这个标志与自己级联缓冲器中保存的标志相比较,在第2个
期间,将被选中的从8259A 的中断类型号发送到数据总线上。
(8)CPU 收到从8259A 发来的中断类型号,将它乘以4得到中断向量,然后跳转至中断服务程序。
22.8086有哪几种中断? 哪些是硬件中断? 哪些是软件中断?
根据不同的中断源,可以把8086/8088系列微机的中断分为硬件中断和软件中断两大类。8086/8088系列微机系统有两种中断源,一种称为硬件中断源或外部中断源,它们从CPU 的不可屏蔽中断引脚NMI和可屏蔽中断引脚INTR 引入;另一种称为软件中断源或内部中断源,是为解决CPU 运行过程中出现的一些意外事件或便于程序调试而设置的。
23.什么是8086的中断向量? 中断向量表是什么? 8086的中断向量表放在何处?
通常,将中断服务程序的入口地址称为中断向量。8086/8088系列微机可处理256种中断,类型号为0~255(0~FFH)。每种中断对应一个入口地址,需要用4个字节存储CS和IP,这样256 种中断的入口地址要占用1K 字节。中断入口地址位于内存00000~003FFH 的区域中,存储了这些地址的连续空间称为中断向量表。
24.8259A 的中断屏蔽寄存器IMR 和8086/8088的中断允许标志IF有什么差别? 在中断响应过程中,它们怎样配合起来工作?
IMR 为8259A 中断控制器的一部分,通过它可对可屏蔽中断的申请进行屏蔽和允许操作。IF为CPU 中的中断允许标志,只有当IF=1时,才能允许可屏蔽中断。一个可屏蔽中断,只有当IMR 对应位为0且IF=1时,CPU 才能够响应其中断请求。
25.8259A 有几种结束中断处理的方式? 各自应用在什么场合? 除了中断自动结束方式以外,其他情况下如果没有在中断处理程序中发中断结束命令,会出现什么问题?
8259A 中断结束管理可分为如下3种方式。
(1)自动中断结束方式:在此方式下,某级中断被响应后,当8259A 收到第1个中断响应信号后,ISR 中对应位就被置“1”;当8259A 收到第2 个中断响应信号
后,8259A 就自动将ISR 中对应位清“0”。这时,该中断服务程序可能还在执行,但对8259A 来说,因为在ISR 中对应标志位为“0”,它对本次中断的控制已经结束。在此方式下,当中断服务程序结束时,不需要向8259A 发送EOI命令(中断结束命令),本方式是一种最简单的中断结束方式。
(2)普通中断结束方式:适用于一般全嵌套方式。在这种方式下,当中断服务结束时,由CPU 发送一个普通EOI命令,在8259A 收到该命令后,将当前ISR 中最高优先级对应的位清“0”。此方式只有在当前结束的中断总是尚未处理完的优先级最高的中断时才能使用。倘若在中断服务中修改过中断优先级,则不能采用这种方式。
(3)特殊中断结束方式:因为在自动循环、特殊循环等方式下,无法根据ISR 的内容来确定哪一级中断是最后响应和处理的,这时就要采用特殊的中断结束方式来指出应将ISR寄存器中哪一个置“1”位清0。
特殊中断结束方式与普通中断结束方式类似,当中断服务结束,CPU 给8259A 发出EOI命令的同时,将当前结束的中断级别也发送给8259A。即在命令字中明确指出对ISR寄存器中指定优先级相应位清“0”,所以这种方式也称为“指定EOI方式”。
特殊中断结束方式在任何情况下都可以使用,尤其适合8259A 级联方式。这时,当中断结束时,CPU 应发出两个EOI命令,一个发送给主8259A,用来将主8259A 的ISR 相应位清“0”;另一个发送给从8259A,用来将从8259A 中的ISR 相应位清“0”。
不发中断命令造成认为中断未能结束,挡住了低级别中断请求。
26.8259A 引入中断请求的方式有哪几种? 如果对8259A 用查询方式引入中断请求,那会有什么特点? 中断查询方式用在什么场合?
(1)引入中断请求方式有:边沿触发方式,电平触发方式,中断查询方式。
(2)中断查询方式特点:
①设备通过8259发中断信号,但不用INT 信号。
②CPU 内部IF=0,禁止了外部对CPU 的中断请求。
③CPU 用软件查询来确定中断源,从而实现对设备的中断服务。
(3)中断查询方式,一般用在多于64个中断的场合。也可以用在一个中断服务程序中的几个模块分别为几个中断设备服务的情况。
27.DMA 控制器8237A 有哪两种工作状态,其工作特点如何?
在DMA 控制器获得总线控制权之前,它受CPU 的控制,需要由CPU 对DMA 控制器进行编程,以确定通道的选择、数据传送的方式和类型、内存单元起始地址、地址是递增还是递减及传送的总字节数等。CPU 也可以读取DMA 控制总线的状态,此时,CPU 处于主工作状态,而DMA 控制器和其他芯片一样,是系统总线的从设备,它的工作方式被称为从工作状态方式。
当DMA 控制器得到总线控制权后,DMA 就处于主工作状态,在DMA 控制下,I/O 设备和存储器之间或存储器与存储器之间可进行直接的数据传送。
28.8237A 的当前地址寄存器、当前字节计数寄存器和基字节寄存器各保存什么值?
当前地址寄存器:保存DMA 传送期间的地址值。当前字节计数寄存器:保存当前字节数。基字节寄存器:保存数据传送的初始地址。
29.8237A 进行DMA 数据传送时有几种传送方式? 其特点是什么?
当8237A 从CPU 获得总线控制权后,作为主控设备执行DMA 传送时有单字节传送方式、块传送方式、请求传送方式、级联传送方式等4种数据传送方式。
(1)单字节传送方式
8237A 控制器每响应一次DMA 申请,只传送一个字节的数据,数据传送后当前字节计数器自动减l,当前地址寄存器作加1或减1修改;8237A 撤销HRQ 信号,释放系统总线控制权,并退还给CPU。如果传送使当前字节计数器减为0,或接收到外部信号时,终止DMA 过程。
(2)块传送方式
在这种传送方式下,8237A 每响应一次DMA 请求要连续地传送一个数据块,直到当前字节计数器减为0或接收到外部信号时,终止DMA 传送,8237A 释放总线。8237A 在进行块传送时,HRQ 信号一直保持有效。(3)请求传送方式
这种方式与块传送方式类似,按照字节计数器的设定值进行传送,只是在这种传送方式下,要求DREQ 在整个传送期间一直保持有效,8237A 每传送一个字节就要检测一次DREQ,若有效则继续传送下一个字节;若无效则停止传送,结束DMA 过程。此时,DMA的传送现场全部保留,待请求信号DREQ 再次有效时,8237A 按原来的计数和地址值继续进行传送,直到计数器减为0或接收到外部信号时才终止DMA 传送,释放总线。
(4)级联传送方式
这种传送方式实际上是扩充通道数,当一片8237A 通道不够用时,可通过多片级联的方式增加DMA 通道。级联由主、从两级构成,从片8237A 的HRQ 和HLDA 引脚分别与主片8237A 的DREQ 和DACK 引脚相连,一个主片至多可连接四个从片。在级联工作方式下,8237A 从片负责进行DMA 数据传送,主片在从片和CPU 之间传递联络信号,并负责对从片的优先级进行管理。
30.8237A 有几种对其DMA 通道屏蔽位操作的方法?两种,分别为单通道屏蔽字和四通道屏蔽字。
31.8237A 的清除命令有哪些? 都起什么作用?
8237A 的清除命令不需要写入命令寄存器,只需要对特定的DMA 端口执行一次写操
作即可完成清除任务,并且与写入的数据无关。8237A 的清除命令共有3条。
(1)主清除命令
主清除命令的功能与硬件RESET 信号作用类似,可以对8237A 进行软件复位。执行主清除命令,只要对A 3~A 0=1101 的端口进行一次写操作,便可以使8237A 处于复位状态。
(2)清除先/后触发器命令
在向8237A 通道内的16位寄存器进行读写时,因为数据线是8位,所以要分2次写入。可以用先/后触发器来控制读/写16位寄存器的高字节还是低字节。当先/后触发器为“0”时,对低字节操作;当先/后触发器为“1”时,对高字节操作。要注意先/后触发器有自动置位功能,在执行RESET 或清除命令之后,该触发器为“0”,CPU 可访问寄存器的低字节。当CPU 访问之后,先/后触发器自动置位为“1”,CPU 可访问寄存器的高字节。当CPU 再次访问之后,先/后触发器又自动置位为“0”。先/后触发器的端口地址为A 3~A 0=1100。
(3)清除屏蔽位命令
当8237A 的DMA 通道初始化时,需要清除屏蔽位以开放各通道的DMA 请求。执行清除屏蔽位命令只需对端口地址A3~A0=1110(屏蔽寄存器地址)进行一次写“0”操作,就可清除四个通道的屏蔽位,开放全部通道的DMA 请求。
32.设处理器按800MHz的速度执行,每次中断传输一个8字节的数据,磁盘传输速率为4MB/s,在磁盘传输数据过程中,要求没有任何数据被错过。
(1)若采用中断方式,每次传送的开销(包括用于中断响应和处理的时间)是800个时钟周期。那么处理器用在硬盘I/O 操作上所花的时间百分比(主机占用率)为多少?
为保证没有任何数据传输被错过,CPU每秒应该至少执行4MB/8B=0.5×106 次中断,每秒内硬盘数据传输的时钟周期数为0.5×106×800=400×106,故主机占用率是400×106/800×106=50%。
(2)若采用DMA 方式,处理器用500个时钟进行DMA 传送初始化,在DMA 完成后的中断处理需要500个时钟。如果每次DMA 传送8 000B的数据块,处理器用在硬盘I/O操作上的时间百分比(主机占用率)为多少?
从硬盘上读/写8 000B的数据所需时间为8 000/4 MB/s=2.048 ms≈2 ms,如果硬盘一直处于工作状态的话,为了不错过任何数据,CPU 必须每秒钟有1/2×103=500次DMA 传送,一秒内CPU 用于硬盘I/O操作的时间周期数为500×(500+500)=0.5×106。因此,CPU用于硬盘I/O的时间占整个CPU 时间的百分比大约0.5×106/800×106=0.062 5%。