I/O接口
I/O接口( I/O控制器)是主机和外设之间的交接界面,通过接口可以实现主机和外设之间的信息交换。主机和外设具有各自的工作特点,它们在信息形式和工作速度上具有很大的差异,接 口正是为了解决这些差异而设置的。
接口的分类
按数据传送格式划分
- 并行接口:接口与系统总线、接口与外设均按并行方式传送数据
- 串行接口:接口与系统总线并行传送,接口与外设串行传送
按时序控制方式划分
- 同步接口:接口与系统总线的信息传送由统一时序信号控制。
- 异步接口:接口与系统总线的信息传送采用异步应答方式。
按I/O传送控制方式划分
- 直接程序传送接口
- 中断接口
- DMA接口
主要功能
- 寻址:接收CPU送了的地址码,选择接口中的寄存器供CPU访问
- 数据缓冲:实现主机与外设的速度匹配
- 预处理:串-并格式转换、数据通路宽带转换、电平转换
- 控制功能:传送控制命令与状态信息,实现I/O传送控制方式
I/O方式
输入/输出系统实现主机与I/O设备之间的数据传送,可以采用不同的控制方式,各种方式在 代价、性能、解决问题的着重点等方面各不相同,常用的I/O方式有程序查询、程序中断、DMA 和通道等,其中前两种方式更依赖于CPU中程序指令的执行。
程序查询
在这种控制方式下,CPU 一旦启动就必须停止现行程序的运行,并在现行程序中插入一段程序。程序查询方式的主要特点是CPU有“踏步”等待现象,CPU与I/O串行工作。
- CPU 向外设接口的控制寄存器中写入控制信息。
- 外设设置状态寄存器。
- CPU 读取外设的状态寄存器,查询外设是否就绪。
- 外设如果就绪,则读 /写外设接口数据寄存器,否则,继续查询。
- 在完成一次数据传输后,继续查询外设状态寄存器。
程序中断
程序中断是指在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求, CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自 动返回到现行程序的断点处,继续执行原程序。
中断分类
- 硬中断与软中断(硬件还是软件)
- 内中断与外中断(主机内还是主机外)
- 可屏蔽中断(可通过屏蔽字屏蔽该类请求;关中断时不响应该类请求。)与非屏蔽中断(该类请求与屏蔽字无关;请求的响应与开/关中断无关。)
- 向量中断与非向量中断(由硬件还是软件提供服务程序入口地址)
工作流程
请求中断→响应中断→关闭中断→保护断点→中断源识别→保护现场→中断服务→恢复现场→中断返回(开中断)。
(1)请求中断。当某一中断源需要 CPU 为其进行中断服务时,就输出中断请求信号,使中断控制系统的中断请求触发器置位,向 CPU 请求中断。系统要求中断请求信号一直保持到 CPU 对其进行中断响应为止。
(2)响应中断。CPU 对系统内部中断源提出的中断请求必须响应,而且自动取得中断服务子程序的入口地址,执行中断服务子程序。对于外部中断,CPU 在执行当前指令的最后一个时钟周去查询 INTR 引脚,若查询到中断请求信号有效,同时在系统开中断(即 IF=1)的情 况下,CPU 向发出中断请求的外设回送一个低电平有效的中断应答信号,作为对中断请求 INTR 的应答,系统自动进入中断响应周期。
(3)关闭中断。CPU 响应中断后,输出中断响应信号,自动将状态标志寄存器 FR 或 EFR 的内容压入堆栈保护起来,然后将 FR 或 EFR 中的中断标志位 IF 与陷阱标志位 TF 清零,从而自动关闭外部硬件中断。因为 CPU 刚进入中断时要保护现场,主要涉及堆栈操作,此时不能再响应中断,否则将造成系统混乱。
(4)保护断点。保护断点就是将 CS 和 IP/EIP 的当前内容压入堆栈保存,以便中断处理完毕后能返回被中断的原程序继续执行,这一过程也是由 CPU 自动完成。
(5)中断源识别。当系统中有多个中断源时,一旦有中断请求,CPU 必须确定是哪一个中断源提出的中断请求,并由中断控制器给出中断服务子程序的入口地址,装入 CS 与 IP/EIP 两个寄存器。CPU 转入相应的中断服务子程序开始执行。
(6)保护现场。主程序和中断服务子程序都要使用 CPU 内部寄存器等资源,为使中断处理程序不破坏主程序中寄存器的内容,应先将断点处各寄存器的内容压入堆栈保护起来,再进入的中断处理。现场保护是由用户使用 PUSH 指令来实现的。
(7)中断服务。中断服务是执行中断的主体部分,不同的中断请求,有各自不同的中断服务内容,需要根据中断源所要完成的功能,事先编写相应的中断服务子程序存入内存,等待中断请求响应后调用执行。
(8)恢复现场。当中断处理完毕后,用户通过 POP 指令将保存在堆栈中的各个寄存器的内容弹出,即恢复主程序断点处寄存器的原值。
(9)中断返回。在中断服务子程序的最后要安排一条中断返回指令 IRET,执行该指令,系统自动将堆栈内保存的IP/EIP 和 CS 值弹出,从而恢复主程序断点处的地址值,同时还自动恢复标志 寄存器 FR 或 EFR 的内容,使 CPU转到被中断的程序中继续执行
中断寄存器
命令字寄存器:接收CPU发向外设的命令字,转换为相应操作命令送外设。
状态字寄存器:反映设备和接口的运行状态。
数据缓冲器:传送数据,实现缓冲。
控制逻辑寄存器:请求信号产生逻辑;电平转换逻辑;串-并转换逻辑;(串口)针对设备特性的逻辑。
公用中断控制器:接收外设请求,判优,送出公共请求;接收中断批准,送出中断号(中断类型码)。
DMA
DMA方式是一种完全由硬件进行信息传送的控制方式,DMA在外设与内存之间开辟一条“直接数据通道”,信息传送不再经过CPU,降低了 CPU在传送数据时的开销,因此称为直接存储器存取方式。用于高速、简单、批量数据传送。
三个阶段
程序准备:CPU用程序实现初始化信息
DMA传送:DMA控制器掌握总线权,控制传送
善后处理:CPU执行中断程序作结束处理
- 接受外设发出的DMA请求,并向CPU发出总线请求。
- CPU响应此总线请求,发出总线响应信号,接管总线控制权,进入DMA操作周期。
- 确定传送数据的主存单元地址及长度,并自动修改主存地址计数和传送长度计数。
- 规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作。
- 向CPU报告DMA操作的结束。
组成
DMA控制器
- 接收初始化信息
- 接收外设DMA请求,判优,向CPU申请总线
- 接管总线权,发地址、读写命令
接口功能
- 接收初始化信息
- 向DMA控制器发请求
- 传送数据
- 申请中断
DMA与中断方式的异同
相同点:
能响应随机请求;可并行操作。
不同点:
中断:用程序实现中、低速I/O传送;能处理复杂 事态;一条指令结束时响应请求。程序切换
DMA:用硬件实现高速、简单I/O传送;一个总线周期结束时响应请求。总线权切换
磁盘调用过程
- CPU向适配器送出驱动器号、圆柱面号、磁头号、起始扇区号、扇区数等外设寻址信息;向DMA控制器送出传送方向、主存首址、交换量等信息。
- 适配器启动寻道,并用中断方式判寻道是否正确。(不正确,重新寻道;正确,启动磁盘读/写。)
- 适配器准备好(读盘:主控RAM满一扇区;写盘:主控RAM空一扇区),提出DMA请求。
- CPU响应,由DMA控制器控制总线,实现传送。
- 批量传送完毕,适配器申请中断。
- CPU响应,作善后处理。
DMA 的优先级为什么比 CPU 的优先级高?
因为 DMA 请求得不到及时响应,I/O 传输数据可能会丢失
通道方式
有自己的指令系统和程序,执行通道程序时可与CPU的运行同时进行,通道指令功能简单,使用面窄,与CPU共用一个主存,还不是独立的I/O处理机