DMA接口使用,常用停止CPU访存、周期窃取及DMA与CPU交替访存三种方式有效的分时使用主存;
这种情况仅仅存在于DMA与中断程序之间吗?答非所问。
30. DMA的工作方式中,CPU暂停方式和周期挪用方式的数据传送流程有何不同?画图说明。
解:两种DMA方式的工作流程见下页,其主要区别在于传送阶段,现行程序是否完全停止访存。
停止CPU访存方式的DMA工作流程如下:
现行程序 CPU DMAC I/O CPU DMAC I/O
B C D 周期窃取方式的DMA工作流程如下:
现行程序 CPU DMAC I/O CPU DMAC I/O
B C D
31. s,试问该外设是否可用程序中断方式与主机交换信息,为什么??假设某设备向CPU传送信息的最高频率是40K次/秒,而相应的中断处理程序其执行时间为40
s? 解:该设备向CPU传送信息的时间间隔 =1/40K=0.025×103=25 < s?40
则:该外设不能用程序中断方式与主机交换信息,因为其中断处理程序的执行速度比该外设的交换速度慢。 讨论:
s)比较接近,传送过程会频繁的打断CPU执行主程序,而执行中断服务程序,因此不能用程序中断方式……。?s)与中断处理时间(40?×I/O传送(25 错:此时CPU还有可能执行主程序吗? 举例说明: (输入)
假设初始CPU空闲,则当I/O将第一个数据放在接口的数据缓冲寄存器中后,向CPU发第一个中断请求,CPU立即响应;
I/O设备匀速运行, s时响应;?s后,第二个中断请求到来,CPU正在执行中断程序接收第一个数据, 40?25
s时响应;?s后,第三个中断请求到来,CPU正在执行中断程序接收第二个数据,要到80?50 s后,第四个中断请求到来,但此时第三个中断请求还没有响应,则放在数据缓冲寄存器中的第三个数据来不及接收,被第四个数据冲掉;?75 讨论:
s,CPU大部分时间处于“踏步等待”状态;? 交换一次用时25+40=65?
s? 错1:25 I/O传送间隔主要指设备准备数据的时间(输入),这段时间设备与CPU并行工作。
错2:程序中断不存在踏步等待。
? 10-6=1?40?40K.6秒,时间过长,用程序中断不划算; 中断处理程序执行时间=?? 错1:设备传送频率 错2:越慢速的设备越适合用中断。
若外设与CPU之间有足够大的缓冲区,则可以用程序中断方式;? 如果安排足够大的缓冲区,为何不用DMA方式? 讨论(续):
两者速度相差较小没有必要用中断。?
32. 是否可采用一条指令执行结束时响应DMA请求的方案,为什么?若不行,应采取什么方案??设磁盘存储器转速为3000转/分,分8个扇区,每
扇区存储1K字节,主存与磁盘存储器数据传送的宽度为16位(即每次传送16位)。假设一条指令最长执行时间是25
解:先算出磁盘传送速度,然后和指令执行速度进行比较得出结论。 16?16 =1K ×8 ×8 ?道容量=1KB×8 =1K ×4=4K字 数传率=4K字×3000转/分
=4K字×50转/秒 =200K字/秒 s?5?一个字的传送时间=1/200K字/秒 注:在此1K=1024,来自数据块单位缩写。
5 s?<<25 s,所以不能采用一条指令执行结束响应DMA请求的方案,应采取每个CPU机器周期末查询及响应DMA请求的方案(通常安排CPU机器周期=MM存取周期)。? 讨论:
扇面、扇段和扇区:扇面指磁盘分区后形成的扇形区域;扇段指扇面上一个磁道所对应的弧形区域;扇区通常用来泛指扇面或扇段。由于磁盘是沿柱面存取而不是沿扇面存取,因此习惯上扇区即指扇段,不用特别说明也不会引起误会。 问题:是否磁盘转一圈读完所有扇区上的磁道?
答:应为:磁盘转一圈读完一个磁道上的所有扇区,然后转到下一盘面的同一位置磁道接着读(如果文件未读完的话)。
? s,CPU工作周期大于主存周期,应采用DMA与CPU交替访存;?s,CPU执行指令20?s内主存占用5?不行,在25
s;?错1:题意为CPU执行指令25
指令周期;? 错2:CPU工作周期=内存周期(同步控制)而
? 不行,传送间隔=20ms,远大于指令执行周期,应在DMA接口设一小容量存储器,可减少DMA传送占用总线时间;
对于想采用DMA的慢速设备(像打印机等),可采用此法,对于磁盘不需要。另外,占用总线时间较长的DMA传送为停止CPU访存DMA,如采用周期窃取方式的DMA,每次传送只占一个主存周期时间。
33. 试从下面七个方面比较程序查询、程序中断和DMA三种方式的综合性能。
(1)数据传送依赖软件还是硬件; (2)传送数据的基本单位; (3)并行性;
(4)主动性; (5)传输速度; (6)经济性; (7)应用对象。 解:比较如下:
(1)程序查询、程序中断方式的数据传送主要依赖软件,DMA主要依赖硬件。 (注意:这里指主要的趋势)
(2)程序查询、程序中断传送数据的基本单位为字或字节,DMA为数据块。 (3)程序查询方式传送时,CPU与I/O设备串行工作;
程序中断方式时,CPU与I/O设备并行工作,现行程序与I/O传送串行进行; DMA方式时,CPU与I/O设备并行工作,现行程序与I/O传送并行进行。 (4)程序查询方式时,CPU主动查询I/O设备状态;
程序中断及DMA方式时,CPU被动接受I/O中断请求或DMA请求。 (5)程序中断方式由于软件额外开销时间比较大,因此传输速度最慢; 程序查询方式软件额外开销时间基本没有,因此传输速度比中断快; DMA方式基本由硬件实现传送,因此速度最快;
注意:程序中断方式虽然CPU运行效率比程序查询高,但传输速度却比程序查询慢。 (6)程序查询接口硬件结构最简单,因此最经济; 程序中断接口硬件结构稍微复杂一些,因此较经济; DMA控制器硬件结构最复杂,因此成本最高; (7)程序中断方式适用于中、低速设备的I/O交换; 程序查询方式适用于中、低速实时处理过程; DMA方式适用于高速设备的I/O交换; 讨论:
问题1:这里的传送速度指I/O设备与主存间,还是I/O与CPU之间?
答:视具体传送方式而定,程序查询、程序中断为I/O与CPU之间交换,DMA为I/O与主存间交换。
问题2:主动性应以CPU的操作方式看,而不是以I/O的操作方式看。 程序查询方式:以缓冲器容量(块、二进制数字)为单位传送;? ? 程序中断方式:以向量地址中的数据(二进制编码)为单位传送; DMA:传送单位根据数据线的根数而定;?
26. 什么是多重中断?实现多重中断的必要条件是什么?
解:多重中断是指:当CPU执行某个中断服务程序的过程中,发生了更高级、更紧迫的事件,CPU暂停现行中断服务程序的执行,转去处理该事件的中断,处理完返回现行中断服务程序继续执行的过程。
实现多重中断的必要条件是:在现行中断服务期间,中断允许触
发器为1,即开中断。
第 六 章
2. 已知X=0.a1a2a3a4a5a6(ai为0或1),讨论下列几种情况时ai各取何值。 (1)X > 1/8; ?1/2; (2)X X?
(3)1/4 > 1/16
解: (1)若要X > 1/2,只要a1=1,a2~a6不全为0即可(a2 or a3 or a4 1/8,只要a1~a3不全为0即可(a1 or a2 or a3 =1),?or a5 or a6 = 1); (2)若要X a4~a6可任取0或1; X?(3)若要
1/4 > 1/16,只要a1=0,a2可任取0或1; 当
a2=0时,若a3=0,则必须a4=1,且a5、a6不全为0(a5 or a6=1;若a3=1,则a4~a6可任取0或1; 当a2=1时, a3~a6可任取0或1。
3. 设x为整数,[x]补=1,x1x2x3x4x5,若要求 x < -16,试问 x1~x5 应取何值? 解:若要x < -16,需 x1=0,x2~x5 任意。(注:负数绝对值大的补码码值反而小。)
6.4 设机器数字长为8位(含1位符号位在内),写出对应下列各真值的原码、补码和反码。 -13/64,29/128,100,-87 解:真值与不同机器码对应关系如下: 真 值
十进制 二进制 原 码 反 码 补 码 -13/64 -0.00 1101 1.001 1010 1.110 0101 1.110 0110 29/128 0.001 1101 0.001 1101 0.001 1101 0.001 1101 100 110 0100 0,110 0100 0,110 0100 0,110 0100 -87 -101 0111 1,101 0111 1,010 1000 1,010 1001
5. 已知[x]补,求[x]原和x。 [x1]补=1. 1100; [x2]补=1. 1001; [x3]补=0. 1110; [x4]补=1. 0000; [x5]补=1,0101; [x6]补=1,1100; [x7]补=0,0111; [x8]补=1,0000; 解:[x]补与[x]原、x的对应关系如下:
6. 设机器数字长为8位(含1位符号位在内),分整数和小数两种情况讨论真值x为何值时,
[x]补=[x]原成立。
解: 当x为小数时,若x [x]补=[x]原成立; 若x < 0,则当x= -1/2时, [x]补=[x]原成立。 0,则 [x]补=[x]原成立; 若x?当x为整数时,若x < 0,则当x= -64时, [x]补=[x]原成立。
7. 设x为真值,x*为绝对值,说明[-x*]补=[-x]补能否成立。
解:当x为真值,x*为绝对值时,[-x*]补=[-x]补不能成立。 [-x*]补=[-x]补的结论只在x>0时成立。当x<0时,由于[-x*]补是一个负值,而[-x]补是一个正值,因此此时[-x*]补不等于[-x]补。
8. 讨论若[x]补>[y]补,是否有x>y?
解:若[x]补>[y]补,不一定有x>y。 [x]补 > [y]补时 x > y的结论只在 x > 0、y > 0,及 x<0、y<0时成立。当x>0、 y<0时,有x>y,但由于负数补码的符号位为1,则[x]补<[y]补。同样,当x<0、 y >0时,有x < y,但[x]补>[y]补。
注意: 1)绝对值小的负数其值反而大,且负数的绝对值越小,其补码值越大。因此, 当x<0、y<0时,若[x]补>[y]补,必有x>y。 2)补码的符号位和数值位为一体,不可分开分析。 3)完整的答案应分四种情况分析,但也可通过充分分析一种不成立的情况获得正确答案。 4)由于补码0的符号位为0,因此x、y=0可归纳到>0的一类情况讨论。 5)不考虑不同数字系统间的比较。(如有人分析x、y字长不等时的情况,无意义。)
12. 设浮点数格式为:阶码5位(含1位阶符),尾数11位(含1位数符)。写出51/128、-27/1024所对应的机器数。要求如下: (1)阶码和尾数均为原码。 (2)阶码和尾数均为补码。
(3)阶码为移码,尾数为补码。
解:据题意画出该浮点数的格式: 阶符1位 阶码4位 数符1位 尾数10位 将十进制数转换为二进制:x1= 51/128= 0.0110011B= 2-1 * 0.110 011B x2= -27/1024= -0.0000011011B =
2-5*(-0.11011B)
则以上各数的浮点规格化数为:
(1)[x1]浮=1,0001;0.110 011 000 0
[x2]浮=1,0101;1.110 110 000 0 (2)[x1]浮=1,1111;0.110 011 000 0
[x2]浮=1,1011;1.001 010 000 0 (3)[x1]浮=0,1111;0.110 011 000 0
[x2]浮=0,1011;1.001 010 000 0
13. 浮点数格式同上题,当阶码基值分别取2和16时, (1)说明2和16在浮点数中如何表示。 (2)基值不同对浮点数什么有影响? (3)当阶码和尾数均用补码表示,且尾数采用规格化形式,给出两种情况下所能表示的最大正数和非零最小正数真值。 解:(1)阶码基值不论取何值,在浮点数中均为隐含表示,即:2和16不出现在浮点格式中,仅为人为的约定。
(2)当基值不同时,对数的表示范围和精度都有影响。即:在浮点格式不变的情况下,基