总线与IO
总线¶

- 总线最大传输速率和总线平均传输速率是不一样的。最大是理想情况,是所有总线周期都在传输数据;而平均则需要考虑每个总线事务的具体情况。
IO¶
中断与异常¶

- NMI:Non-Maskable Interrupt
- INTR:Interrupt Request
- 异常一般是由指令引起的。
- 中断优先级:DMA请求对总线控制权优先级高于非屏蔽中断和可屏蔽中断;DMA中断对CPU中断响应优先级低于非屏蔽中断但高于可屏蔽中断。
识别异常/中断源的方式¶

- 通常异常通过软件识别方式实现;外中断则这两种都可以
响应中断的条件¶

这里一般指的都是外中断,不会单独考异常
中断处理过程¶
响应¶

处理(中断服务程序)¶

- 保存现场指的是保存通用寄存器中的内容。
- 很明显,在多重中断中,由于中断服务程序在内核态下执行,因此中断是有可能在内核态下发生的,否则无法实现多重中断(嵌套中断)。
- 外设通过中断控制器向CPU发送中断请求信号,CPU响应中断请求后开始执行中断服务程序,中断服务程序执行结束后CPU自行返回(中断服务程序最后一条指令是返回指令),无须外设发中断结束信号。
优先级¶

响应决定开始顺序,处理决定结束顺序。
如果是AB同时到达,但是A的响应级要高于B,B的处理级要高于A。会先响应A,然后再被B抢占,执行完B后再执行A。
I/O接口与I/O端口¶
功能¶

- I/O端口就是I/O接口中CPU可访存的寄存器。
I/O接口的通用结构¶

涉及到字,他就是数据、信息,因此走数据线
I/O端口编址¶

I/O方式¶
用什么样的方法完成主机与外设之间的数据交换
程序查询方式¶
- 在程序查询方式中,由CPU负责数据的传送。每完成一次数据传送后,将主存地址加1,计数值减1。

程序中断方式¶
- 中断I/O方式不适合高速设备,处理中断速度慢于设备输入速度可能会导致数据丢失。

对于上图蓝色阶段还未结束外设就可以启动:蓝色这部分对应的是中断中的处理这一大过程,而真正进行数据传送的是它的一个子程序,即中断服务程序,处理完中断服务程序后就可以让外设继续工作了。
DMA¶
特点¶

- DMA请求有两步。第一步是外设向DMA控制器发出DMA请求信号,来拿走数据,第二步是DMA向CPU发出总线请求信号,申请总线,CPU发送"启动DMA传送“命令后,DMA才开始传送数据(见下图,在第一部分的2和3之间)。
- DAM中断指的是DMA取好了数据并放到了主存(内存)的指定缓冲区,发出中断信号,让CPU来主存里拿走数据。
- DMA方式不需要中断先行程序,CPU仅仅做一些辅助性工作,因为主存和DMA接口之间有一条数据通路,所以无需使用CPU内部寄存器,也就无需保护现场。
工作流程¶

传送方式¶

周期挪用当中提到的总线事务周期和主存周期实际上是一个东西,只不过编者是为了区分二者主语的不同。
-
一个存储周期读写一个机器字,因此,如果要采用DMA与CPU交替访存需要保证CPU工作周期 > 主存周期且最好是两倍,让CPU和DAM都能读写一个字。
-
响应DMA通常发生在一个总线事务周期/主存周期结束后。因为CPU和DMA在争抢的就是总线的使用权,因此必须要等到一方用完,也就是一次总线事务周期/主存周期后才可以。
- 只有在周期挪用中,DMA每次传送的是字,其他都是块。这里二者的区别并不在每次传送的数据量, 每次传送依旧是字,这是硬件决定的;区别在于每次何时能交出总线控制权。在周期挪用中,每传完一个字就交出总线;在其余方式中每传完一个块,才交出总线。
CPU用于I/O或DMA的时间占整个CPU时间的百分比¶

补充¶
- 通常情况下,外设在向主机传送数据时,要求必须有1bit起始位和停止位,停止位一般为1bit,但是主要还是看题目中给啥,校验位同理。