I/O设备与主机信息传送的方式(程序查询方式,程序中断方式,DMA方式)

简介: I/O设备与主机信息传送的方式(程序查询方式,程序中断方式,DMA方式

一.程序查询方式


CPU和I/O设备串行工作,CPU连接I/O设备和内存,CPU需要等待,效率很低


(由CPU通过程序不断查询IO设备是否已经做好准备,从而控制IO设备与主机交换信息)



二.程序中断方式:

中断:CPU在执行程序的过程中,如果发生意外或特殊事件,cpu要中断当前程序的处理,转而去处理特殊事件,中断结束后要返回之前的断点,继续执行之前的程序。



CPU一定程度解放,在IO设备自身准备的时候,CPU可以先进行自己的工作(不需要主动查询外设的状态),当IO与主机进行信息交换的时候,CPU暂停自身程序,参与信息交换



程序中断的步骤:


•收到中断请求信号


•执行完第K条指令(执行周期结束)后保存(要执行现场保存)


•跳转到中断服务程序


•执行中断服务程序,执行完中断程序后再去执行K+1条指令



单重中断:中断服务过程中不允许响应其他中断

多重中断:中断服务过程中可以响应更高优先级的中断,当遇到更高优先级中断时,此中断也被当作是一个普通的程序,转而去执行更高优先级的中断


补充:中断判优


当某一个时刻有多个中断源提出中断请求时,中断系统必须按照其优先顺序予以响应。


1.硬件故障中断属于最高级,其次是软件中断

2.非屏蔽中断优于可屏蔽中断

3.DMA请求优于I/O设备传送的中断请求

4.高速设备优于低速设备

5.输入设备优于输出设备

6.实时设备优于普通设备


可以通过硬件来实现:


硬件实现是通过硬件排队器实现的,它既可以设置在CPU中,也可以分散在各个中断源中



设备1#,2#,3#,4#优先级按降序排列


INTR=1表示有请求。那么其他的中断不允许有请求,在同样的时间内,只有一个中断请求


可以通过软件实现:


利用程序查询的方式来控制中断源的优先级:



如果有A请求,就进入A请求的中断服务程序,如果没有就跳到B的,即将优先级从高到低进行一次遍历和查询


三.DMA(Direct Memory Access)方式:直接内存访问


使外部设备和主存之间直接建立联系,不经过CPU,外部设备直接从内存存取数据的数据交换模式


DMA的工作过程可以分为请求,响应,传输,结束


请求

CPU对DMA控制器初始化,并向I/O接口发出操作命令,I/O接口提出DMA请求。

响应

DMA控制器对DMA请求判别优先级及屏蔽,向总线裁决逻辑提出总线请求

传输

DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制RAM与I/O接口进行DMA传输。

结束

当完成规定的成批数据传送后,DMA控制器即释放总线控制权,并向I/O接口发出结束信号。



•外设通过DMA控制器向CPU发送DMA请求


•CPU响应DMA请求后,就会转变为DMA工作方式


•CPU将总线的控制权交给DMA控制器


•DMA控制器发送存储器地址并且决定传送数据块的长度,实行I/O设备与主存之间的传送


•操作完毕后,将总线控制权交还给CPU,CPU再执行现行程序


DMA与主存交换数据的三种方式:

1.停止CPU访问主存:


由图中可以看到,CPU对于主存的利用率没有充分发挥


2.周期挪用(或周期窃取)


DMA访问主存有三种可能

•CPU此时不访存:DMA可以访存,CPU继续执行不访存的指令


•CPU正在访存:DMA等待CPU访存

•CPU与DMA同时请求访存:此时CPU将总线控制权让给DMA



3.DMA与CPU交替访问:(效率最高)

不需要申请建立和归还总线的使用权




对比程序中断方式和DMA方式:


•中断方式是在数据缓冲寄存区满后,发中断请求,CPU进行中断处理。


• DMA方式则是以数据块为单位传输的,在所要求传送的数据块全部传送结束时要求CPU进行中断处理,这样大大减少CPU进行中断处理的次数,并且CPU除了在数据传输开始和结束时做一点处理外,在传输过程中CPU可以进行其他的工作。这样,在大部分时间里,CPU和输入输出都处于并行操作。因此,使整个计算机系统的效率大大提高。


•中断方式,可以进行异常处理,处理步骤1.保存被中断的现场2.执行中断处理函数3.恢复现场


DMA不能处理异常情况,所以两者是不能相互替代的


•中断方式是程序切换,每次操作需要保护和恢复现场,中断次数多,CPU需要花较多的时间处理中断,中断次数多也会导致数据丢失。但是DMA是必须利用中断的,DMA是通过硬件实现的,否则CPU无法得到数据已经传输结束的信号,当数据传输结束的时候,DMA控制器给CPU一个中断信号,CPU进行响应.这个就大大的节约了CPU的资源。


•中断方式的数据传送方向是由设备到CPU再到内存,或者相反。

DMA方式的数据传送则是将所传输的数据由设备直接送入内存,或是由内存直接送到设备。



•DMA的优先级比中断方式的优先级高


目录
相关文章
|
6月前
|
传感器 芯片
如何使用中断源
如何使用中断源
60 1
|
Android开发
GB28181设备控制和TeleBoot远程启动命令探究
源设备向目标设备发送设备控制命令,控制命令的类型包括球机/云台控制、远程启动、录像控制、 报警布防/撤防、报警复位、强制关键帧、拉框放大、拉框缩小、看守位控制、设备配置等。
160 0
|
2月前
|
网络协议 网络虚拟化
接收网络包的过程——从硬件网卡解析到IP
【9月更文挑战第18天】这段内容详细描述了网络包接收过程中机制。当网络包触发中断后,内核处理完这批网络包,会进入主动轮询模式,持续处理后续到来的包,直至处理间隙返回其他任务,从而减少中断次数,提高处理效率。此机制涉及网卡驱动初始化时注册轮询函数,通过软中断触发后续处理,并逐步深入内核网络协议栈,最终到达TCP层。整个接收流程分为多个层次,包括DMA技术存入Ring Buffer、中断通知CPU、软中断处理、以及进入内核网络协议栈等多个步骤。
|
4月前
|
监控 数据处理
在使用LabVIEW控制多个串口设备进行数据读取时,读取时间过长
在使用LabVIEW控制多个串口设备进行数据读取时,读取时间过长
92 0
I/O设备与主机信息传送的控制方式以及什么是中断
I/O设备与主机信息传送的控制方式以及什么是中断
251 0
|
C语言 Perl
西门子S7-1200的MODBUS通信如何组态,通信装载指令、主站设置指令、从站设置指令各参数的含义是什么
本篇我们来学习西门子S7-1200的MODBUS通信如何组态,通信装载指令、主站设置指令、从站设置指令各参数的含义是什么。
西门子S7-1200的MODBUS通信如何组态,通信装载指令、主站设置指令、从站设置指令各参数的含义是什么
|
C语言 Perl
西门子S7-1200的MODBUS通信装载指令、主站设置指令、从站设置指令各参数的含义是什么?
本篇我们来介绍西门子S7-1200的MODBUS通信装载指令、主站设置指令、从站设置指令各参数的含义是什么。
西门子S7-1200的MODBUS通信装载指令、主站设置指令、从站设置指令各参数的含义是什么?
|
存储 测试技术 C语言
西门子S7-200 SMART自由口通信参数如何设置?如何编写发送程序和接收程序?如何测试?
西门子S7-200 SMART除了支持以太网通信,还可以通过CPU上或信号板上的RS485接口实现串口通信。支持的串口协议,包括自由口协议、USS协议、MODBUS协议和PPI协议。STEP7 Micro/WIN SMART编程软件安装时自动集成串口通信所需要的功能块和子程序。
西门子S7-200 SMART自由口通信参数如何设置?如何编写发送程序和接收程序?如何测试?
|
Ubuntu Linux C语言
用C写蓝牙通讯程序:扫描、读取、发送
在Linux下,通过bluez 蓝牙库可以用C语言轻松实现蓝牙通信。在ubuntu下可以用 apt-get install libbluetooth-dev 安装该库。下面是几个简单示例。
2145 0