对设备的控制,早期是使用轮询的可编程 I/O 方式,后来发展为使用中断的可编程 I/O 方式。CPU和I/O设备进行通信、传输数据时,由于CPU的速度远远快于I/O设备,因此CPU需要不断地测试I/O设备。这种控制方式又称为轮询或忙等。
I/O控制方式通常有以下4 种:程序直接控制方式、中断控制方式、DMA控制方式和通道控制方式。
1.程序直接控制方式
计算机从外部设备读取数据到存储器,每次读一个字的数据。对读入的每个字,CPU需要对外设状态进行循环检查,直到确定该字已经在I/O控制器的数据寄存器中。在该方式中,CPU之所以要不断地测试I/O设备的状态,就是因为在CPU中没有釆用中断机构,使I/O设备无法向CPU报告它已完成了一个字符的输入操作。
程序直接控制方式的工作过程非常简单,但是其缺点也是显而易见的,由于CPU和I/O设备只能串行工作,导致CPU的利用率相当低。
三种I/O控制方式的流程
2.中断驱动方式
中断驱动方式的思想是,当用户进程需要数据时,由CPU向设备控制器发出 启动指令启动外设输入数据。在输入数据的同时,CPU可以做其他工作。当输入完成时,设备控制器向CPU发出一个中断信号,CPU接收到中断信号之后,转去执行设备中断处理程序。
优点:与程序直接控制方式相比,有了中断的硬件支持后,CPU和 I/O设备间可以并行工作了,CPU只需收到中断信号后处理即可,大大提高了 CPU利用率。缺点:由于数据中的每个字在存储器与I/O控制器之间的传输都必须经过CPU,这就导致了中断驱动方式仍然会消耗较多的CPU时间。
3. DMA方式(直接内存存取)
在中断驱动方式中,I/O设备与内存之间的数据交换必须要经过CPU中的寄存器,所以速度还是受限,而DMA(直接存储器存取)方式的基本思想是在I/O设备和内存之间开辟直接的数据交换通路,彻底“解放” CPU。这样既大大减轻了 CPU的负担,也使I/O数据传输速度大大提高。这种方式一般用于块设备的数据传输。
仍然以数据输入为例,当用户进程需要数据时,CPU将准备存放输入数 据的内存起始地址以及要传送的字节数分别送入DMA控制器中的内存地址寄存器和传送字节计数器中,并启动设备开始进行数据输入。在输入数据的同时,CPU可以去做其他事情。
DMA方式的特点是:基本单位是数据块。所传送的数据,是从设备直接送入内存的,或者相反。仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在DMA控制器的控制下完成的。
DMA控制方式与中断驱动方式的主要区别是中断驱动方式在每个数据需要传输时中断CPU,而DMA控制方式则是在所要求传送的一批数据全部传送结束时才中断CPU;此外,中断驱动方式数据传送是在中断处理时由CPU控制完成的,而DMA控制方式则是在DMA 控制器的控制下完成的。
DMA控制器的组成
在DMA控制器中设置如下四类寄存器:
无
登录后开始许愿
暂无评论,来抢沙发