1、内存与接口的编址方式
1.1 内存和接口地址独立编址方法
内存地址和接口地址是两个完全独立和相互隔离的地址空间。访问数据的指令也不同,接口只有读写指令,其余都是内存指令。
特点:接口和内存指令容易区分,但接口指令太少、功能太单一了。
1.2 内存和接口地址统一编址方法
内存地址和接口地址在一个公共的地址空间。其中一部分划给接口使用,其余地址给内存单元使用。分配的地址空间只能给自己使用,比如内存单元分配的地址空间,只允许给内存单元使用。
特点:内存的指令可以全部用于接口。不区分内存指令和接口指令;缺点:内存地址不连续,原因是整个地址空间被分为两部分。
2、程序的控制方式
在完成外设数据输入输出时,整个过程由CPU执行程序进行控制的。分为两种控制方式。
2.1 无条件传送
外设提前准备好,随时可以无条件接收CPU发来的数据、无条件向CPU提供要输入的数据。
2.2 程序查询方式
通过CPU查询程序判断外设是否准备好接收数据或向提供CPU要输入的数据。如果满足条件则执行相应的动作。
缺点:
1、降低了CPU的效率:因为CPU需要不停的对外设的状态进行查询。
2、对外部的突发事件无法做出实时响应:CPU必须等待I/O系统完成传输任务,在此期间需要定时查询I/O系统的状态,确认数据传输是否完成。
3、中断方式
3.1 工作流程
I/O系统和外设交换数据时,CPU无需等待和查询I/O的状态,可以处理其他任务。当I/O设备准备好后,发送中断通知给CPU,CPU接收到中断信号,保存当前执行的任务,转入I/O中断服务程序的执行,完成和I/O系统的数据传输任务,然后再返回中断之前的任务。因为省掉了CPU等待的问题,所以效率较高。
3.2 中断处理的方法
1、多中断信号法
每一个中断源都有属于自己的一条中断请求信号向CPU提出中断请求。
2、中断软件查询法
通过中断服务程序去轮询每个中断源确认是哪个发起了中断请求。然后根据优先级进行响应处理。
3、菊花链法
改进了软件查询方法。本质是硬件查询法。所以的I/O模块共享一根共同的请求线,中断信号以链式的方式在各个模块相连。
4、总线仲裁法
I/O发出中断请求之前,由总线获得控制权,然后由总线的仲裁机制决定谁可以发出中断信号请求。
5、中断向量法
中断向量表用来保存各个中断源服务的入口地址。
3.3 中断优先级控制
在具有多个中断源的计算机当中,需要根据中断源的紧迫程度不同,根据轻重缓急进行安排中断的执行顺序。
1、当多个中断请求同时发出中断请求,CPU根据优先级决定先响应哪一个。
2、当CPU正在执行某个中断请求时,来了一个比它优先级高的中断请求。CPU应暂停当前中断请求,去执行优先级高的请求。完成后再返回被暂停的中断请求。也被称为中断嵌套。
4、DMA 直接存取方式
DMA指的是内存与I/O设备之间直接块传送,不需要CPU干涉,只需要CPU传输之前(发送一条传数据指令)、传输结束(CPU根据轮询或中断判断过程是否结束和下次操作是否准备就绪)。DMA硬件直接执行传输任务。CPU可以处理别的任务。
5、 通道方式和外围处理机方式
5.1 通道方式
通道是一个具有特殊功能的处理器被称为输入输入处理器(IOP),它承担了CPU的一部分功能,实现了对 外围设备的统一管理,完成外围设备和主存直接的数据传送。
通道方式大大提高了CPU的工作效率,但需要增加硬件成本。
5.2 外围处理机
外围处理机(PPU) 它根据主机的I/O指令完成对外围设备的输入和输出。