跳转至

总线与IO

总线

image-20260818192941441

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

IO

中断与异常

image-20260818194244812

  1. NMI:Non-Maskable Interrupt
  2. INTR:Interrupt Request
  3. 异常一般是由指令引起的。
  4. 中断优先级:DMA请求对总线控制权优先级高于非屏蔽中断和可屏蔽中断;DMA中断对CPU中断响应优先级低于非屏蔽中断但高于可屏蔽中断。

识别异常/中断源的方式

image-20260818194840869

  1. 通常异常通过软件识别方式实现;外中断则这两种都可以

响应中断的条件

image-20260818195052571

这里一般指的都是外中断,不会单独考异常

中断处理过程

响应

image-20260818195350716

处理(中断服务程序)

image-20260818195418198

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

优先级

image-20260818195914471

响应决定开始顺序,处理决定结束顺序。

如果是AB同时到达,但是A的响应级要高于B,B的处理级要高于A。会先响应A,然后再被B抢占,执行完B后再执行A。

I/O接口与I/O端口

功能

image-20260818201943422

  1. I/O端口就是I/O接口中CPU可访存的寄存器。

I/O接口的通用结构

image-20260818202049418

涉及到字,他就是数据、信息,因此走数据线

I/O端口编址

image-20260818202858984

I/O方式

用什么样的方法完成主机与外设之间的数据交换

程序查询方式

  1. 在程序查询方式中,由CPU负责数据的传送。每完成一次数据传送后,将主存地址加1,计数值减1。

image-20260818203916812

程序中断方式

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

image-20260818203934902

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

DMA

特点

image-20260818204332901

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

image-20260818204712046

传送方式

image-20260819150155529

周期挪用当中提到的总线事务周期和主存周期实际上是一个东西,只不过编者是为了区分二者主语的不同。

  1. 一个存储周期读写一个机器字,因此,如果要采用DMA与CPU交替访存需要保证CPU工作周期 > 主存周期且最好是两倍,让CPU和DAM都能读写一个字。

  2. 响应DMA通常发生在一个总线事务周期/主存周期结束后。因为CPU和DMA在争抢的就是总线的使用权,因此必须要等到一方用完,也就是一次总线事务周期/主存周期后才可以。

  3. 只有在周期挪用中,DMA每次传送的是字,其他都是块。这里二者的区别并不在每次传送的数据量, 每次传送依旧是字,这是硬件决定的;区别在于每次何时能交出总线控制权。在周期挪用中,每传完一个字就交出总线;在其余方式中每传完一个块,才交出总线。

CPU用于I/O或DMA的时间占整个CPU时间的百分比

image-20260819154547177

补充

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