1.程序查询方式
总结下来就是:
必须在外设传输完端口大小的数据时访问端口,以防止数据未被及时读出而丢失。
占CPU总时间:就是某段时间内设备用了多少时钟周期/PCU有多少个时钟周期
CPU的时钟周期数:就看主频,主频表示每秒有多少个时钟周期设备每秒用了多少时钟周期:5**10*4
例题:
同理,200*500/50M=0.2%
这里的衡量单位不再是秒了,而是每400s,中断响应所允许的延迟时间不是中断响应的时间,所以用100ns/400ns=25%
2.程序中断方式
例题:
1s内能传输50kB数据,而接口缓冲寄存器只有32位(4B),所以1s需要中断50kB/4B=12500次
每秒设备用了多少时钟周期/每秒CPU有多少时钟周期:
12500*1000/1G=1.25%
3.DMA方式
题目无非是想告诉我们,对于高速设备的成组数据传输,适合使用DMA方式。
回顾一下真题:
主要是下面两道其他比较简单
(1)
① MIPS表示每秒可以执行多少百万条 指令:80/4=20M条指令
MIPS=主频/CPI,也就是1s的时钟周期数/每条指令的的时钟周期数
② 每秒执行20M条指令,访存20Mx1.5=30M次。Cache命中率为99%,故平均每秒cache缺失次数为30Mx(1-99%)=0.3M次=300K次
③ Cache缺失时,CPU访问主存,将要访问的数据所在的整个主存块调入Cache,则每秒需要调入300K(不命中的次数)x16B(每个块的大小)=4800KB,即主存带宽至少4.8MB/s
为什么是至少呢?
因为这个带宽仅仅满足了CPU的访存要求,Cache缺失时,不仅要将对应主存块调入Cache,还需要将数据调入CPU。这部分的带宽并没有算上。
再加上,如果有DMA控制器的话,不仅CPU要访存,DMA控制器也要访存,所以比这个带宽更大。
(2)
平均每秒Cache缺失次数为300K次,平均每秒产生的缺页异常次数=300Kx0.0005%=1.5次
外设准备好或接受完数据缓冲寄存器中的32位数据时由I/O/接口发出DMA请求,页面大小4KB,所以每秒需要调入的数据量为1.5x4KB=6KB
每准备好32bit数据就有一次DMA请求,故请求次数=6KB÷32bit=6KB÷4B=1.5K(这里的大小1024是)=1536
(3)
CPU和DMA控制器同时要求使用存储器总线时,DMA请求优先级更高。因为DMA请求得不到及时响应,I/O传输数据可能会丢失。
(4)每个存储体有相同的存储周期,采用交叉编址的方式,则连续访问的时候,每次访问的存储体都不同,一个存储体访问结束后,可以立即开始访问下一个存储体。
也就是可以采用流水线的模式:
这里问的是主存能提供的最大带宽,所以只需要考虑流水线充分流动起来的情况即可:
所以,翻译一下题目,每隔1/4T的存储周期都能取出一个字 :
主存能提供的最大带宽:32bit/(50ns/4)
也可以这样想:当个存储体带宽的四倍,即:
4x(32bit÷50ns)=320MB/s
(1)
这里是异步通信的数据格式:每传送一个字符需要传送1位起始位、7位数据位、1位校验位、1位停止位,共需传送10位。图中停止位可能有多位,例如1.5位,2位
每0.5ms可送入1个字符每秒可送入 1s/0.5ms=2000 个字符
(2)
从图中可以看出,中断服务程序的第15条指令外设就开始新的工作了(数据准备),后5条主要用于CPU中断返回,CPU中断返回和外设是并行工作的。
所以传送数据在虚线标的时间就完成了,而CPU参与的时间则是绿色线标的部分。
完成一次传输大约需要多少时钟周期?
主频50MHz,时钟周期为1/50MHz=20ns
0.5ms对应时钟周期数为0.5ms/20ns=25000
传送1个字符需要的时钟周期数为 25000+10(CPU响应)+15x4(CPU中断服务)=25070
传送1000个字符需要的时钟周期数为25070x1000=25070000。
CPU参与的时钟周期?
CPU用于该任务的时间大约为 1000x(10+20x4)=9x104个时钟周期,即绿色线部分的时钟周期。
(3)
中断隐指令:1.关中断 2.保存断点(PC) 3.引出中断服务程序