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的优先级比中断方式的优先级高


目录
相关文章
|
自然语言处理 编译器 C语言
软考:区分词法分析、语法分析、语义分析
本文解释了编译过程中的词法分析、语法分析和语义分析三个阶段的区别,并提供了相关练习题,帮助读者理解各阶段在编译过程中的作用和重要性。
1545 4
|
存储 机器学习/深度学习 人工智能
数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)
数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)
数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)
|
IDE Linux 程序员
技术经验解读:【转】IO空间,IO端口,MMIO
技术经验解读:【转】IO空间,IO端口,MMIO
1783 0
|
数据库 C++
【数据结构进阶】红黑树超详解 + 实现(附源码)
本文深入探讨了红黑树的实现原理与特性。红黑树是一种自平衡二叉搜索树,通过节点着色(红/黑)和特定规则,确保树的高度接近平衡,从而实现高效的插入、删除和查找操作。相比AVL树,红黑树允许一定程度的不平衡,减少了旋转调整次数,提升了动态操作性能。文章详细解析了红黑树的性质、插入时的平衡调整(变色与旋转)、查找逻辑以及合法性检查,并提供了完整的C++代码实现。红黑树在操作系统和数据库中广泛应用,其设计兼顾效率与复杂性的平衡。
4367 3
|
存储 设计模式 测试技术
了解三层架构:表示层、业务逻辑层、数据访问层
了解三层架构:表示层、业务逻辑层、数据访问层
8970 0
|
算法
海明码详解
本文详细介绍了海明码(Hamming Code)的概念、原理和应用,包括信息位与校验位的关系、校验位的计算方法、错误检测与纠正过程,并通过实例展示了如何使用海明码进行编码,突出了海明码在提高数据传输可靠性方面的重要性。
2834 0
海明码详解
|
缓存 网络协议 网络架构
网络抓包分析【IP,ICMP,ARP】以及 IP数据报,MAC帧,ICMP报和ARP报的数据报格式
本文详细介绍了如何使用网络抓包工具Wireshark进行网络抓包分析,包括以太网v2 MAC帧、IP数据报、ICMP报文和ARP报文的格式,以及不同网络通信的过程。文章通过抓包分析展示了IP数据报、ICMP数据报和ARP数据报的具体信息,包括MAC地址、IP地址、ICMP类型和代码、以及ARP的硬件类型、协议类型、操作类型等。通过这些分析,可以更好地理解网络协议的工作机制和数据传输过程。
网络抓包分析【IP,ICMP,ARP】以及 IP数据报,MAC帧,ICMP报和ARP报的数据报格式
|
人工智能 Java 程序员
一文彻底搞明白电路图和原理图
本文介绍电路图的基本构成、作用及类型,帮助理解电路原理和实际应用。元件符号、连线、节点和注释说明是电路图的核心要素,通过原理图、方框图、装配图和印板图,可以清晰展示电路结构和工作原理。君志所向,一往无前!
13358 0
|
存储 芯片
计算机组成原理,计算机系统总线,总线分类、特性、性能指标、结构以及总线控制,判优控制通信控制
计算机组成原理,计算机系统总线,总线分类、特性、性能指标、结构以及总线控制,判优控制通信控制
计算机组成原理,计算机系统总线,总线分类、特性、性能指标、结构以及总线控制,判优控制通信控制

热门文章

最新文章