查缺补漏----关于CPU响应DMA请求(总线周期,存取周期,指令周期,机器周期)

结论:

总线周期:存储器和I/O端口是挂接在总线上的,CPU对存储器和I/O接口的访问通过总线实现。把CPU通过总线对微处理器外部(存储器或I/O接口)进行一次访问所需时间称为一个总线周期。也就是完成一次数据传输的时间。
总线周期一般包含4个总线时钟周期:
(1)T1状态 ——输出存储器地址或I/O地址。
(2)T2状态 ——输出控制信号。
(3)T3和Tw状态 ——总线操作持续,并检测READY以决定是否 延长时序。
(4)T4状态 ——完成数据传送。

存取周期(存储周期):存取周期包含存取时间和恢复时间。指两次独立访问存储器操作之间的最小间隔。
存取时间指从启动一次存储器操作到完成该操作所经历的时间。
恢复时间指读写操作之后,用来恢复内部状态的时间。

总线周期与存取周期:

底位交叉编址采用轮流启动方式时,这里的一个T就是一个存取周期。到了后期,每隔1/4T的时间,CPU与主存之间就完成一次数据传输。这时,一个总线周期等价于1/4个存取周期(存储周期)

底位交叉编址采用同时启动方式时:

 会同时启动4个模块进行并行的读/写,也就是需要一个存取周期,才能完成一次数据传输,这时,存取周期等于总线周期

所以一般没有特别说明,总线周期=存取周期

除了存取周期外,机器周期,指令周期与总线周期没有联系

指令周期:取出并完成一条指令所需要的时间。

机器周期(CPU周期):一条指令的执行过程划分为若干个阶段(如取指、译码、执行等),每一阶段完成一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个时钟周期组成 。

讲完这个概念,看王道书上给的7.3.4的第5题与第26题,答案是有点矛盾的。

第5题:

CPU会在每个存储周期(总线周期)结束后检査是否有 DMA 请求。

第26题:

每个机器周期结束后,CPU 就可以响应 DMA 请求。注意区别:DMA 在与主存交互数据时
通过周期窃取方式,窃取的是存取周期。

其实还有第27题:

DMA 请求的是总线的使用权,因此 CPU 对 DMA 请求的响应时机是一个总线周期结束时。在流水线 CPU 中,流水段的长度以最复杂的操作所花的时间为准,总线周期(访存时间)通常是耗时最长的,因此通常可认为总线周期、存取周期、机器周期和流水段长度是等价的。

在网上看到的解答:

1.理解两个周期

机器周期:完成一个基本操作的周期,比如说取址,间址

总线周期:使用总线的周期,有的机器周期包含总线周期,比如说"取址周期",要利用总线来传送地址,但是有的机器周期与总线周期无关,比如加法指令的执行周期,只要在运算器中运算,不占用总线,此时这个机器周期执行的时候,总线是空闲的,DMA当然可以使用总线。

2.理解"总线周期后响应"

从传送方式的角度来理解,DMA的传送方式是“周期窃取”,书中有提到,采用周期窃取方式,CPU不使用总线的时候,DMA控制器可以直接使用,并不需要等到CPU机器周期结束。所以说周期窃取,窃取的是总线周期,也就是存取周期。

3.理解“机器周期后响应”:

从中断的角度来理解,在预处理时刻CPU响应DMA请求中断,这种中断的优先级比外中断高,要求CPU尽快响应,但是CPU总得把手里面最基本的事情做完才能响应这个很着急的特殊中断,也就是机器周期后响应DMA

4.总结:

考研范围内:

周期窃取:存取周期

DMA中断响应时刻:机器周期结束时刻

外中断响应时刻:一条指令执行结束时刻

DMA中断优先级>外中断优先级

没有机器周期就选总线周期。

我的理解,结合:
链接:https://www.zhihu.com/question/624019708/answer/3483878438

首先分清DMA请求与中断请求:

DMA请求

当I/O设备准备好一个字数据(DMA与主存的传送单位是字)之后,I/O设备向DMA控制器发送DMA请求(就是向DMA请求触发器发送高电平信号,使他变为“1”。当控制逻辑检测到一个字的传输已经完成后,会向CPU申请总线控制权),再由DMA控制器向CPU发送总线请求,这两个过程统称为DMA请求

DMA中断请求

传输完多个字后,传送长度计数器会发生溢出,溢出信号会发送给中断机构,中断机构检测到溢出后,向CPU发出中断请求,接着CPU会进行后处理。

发生DMA请求,表示要与主存传送一个字的数据,发生DMA中断请求,表示一整块的数据传输完成。

回到问题:

DMA请求:

从CPU角度分析:设备向数据缓冲寄存器传送完一个字的同时,会向DMA请求触发器发送高电平信号,使他变为“1”。当控制逻辑检测到一个字的传输已经完成后,会向CPU申请总线控制权。

CPU收到来自DMA发出的总线控制请求,并将总线控制权移交给DMA控制器,DMA请求属于外部中断,以五段流水线技术为例,外部中断的检测一般放在第一个流水段(IF),故不需要指令冲刷,即不需要将流水段中的控制信号清零,故可以让已经在流水段中的指令继续执行完。不过下一个时钟周期的IF流水段取的指令就是有关DMA请求的指令了。从上面可以看出,CPU响应DMA请求总是在接收到DMA请求的机器周期的下一个机器周期开始执行DMA请求的相关指令(因为在下一个机器周期才把DMA请求的指令取进来,这里一个流水段周期就是一个机器周期),综上,CPU响应DMA请求总是在当前机器周期的下一个机器周期开始。

从I/O系统的角度分析,DMA控制器向CPU申请总线的控制权,CPU对DMA控制器的响应肯定是在完成当前这个总线事务之后,也就是本次总线周期结束

DMA中断请求:此时一整块的数据传输已经完成了。DMA控制器传输完数据后,释放总线控制权并向CPU发出中断请求,这个动作是DMA控制器发出的,发生在DMA完成最后一个字的传输这一总线事务之后。

按这样的理解:从CPU的角度看,那么应该是机器周期执行完响应DMA请求。

对于2013年的这道真题:

B项是正确的,从I/O角度看,DMA 响应发生在一个总线事务完成后。

总结

对于DMA的响应优先选择总线周期(因为申请总线控制权,肯定要在当前总线周期结束才能申请),没有总线周期就选存取周期,因为不特别说明,总线周期等价于存取周期。没有以上两个就选机器周期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值