I/O方式

news2024/11/23 3:07:11

目录

一、程序查询方式

1.程序查询方式的特点

2.程序查询方式可分类

①独占查询

②定时查询

二、中断方式

1.中断I/O流程 

2.例题 

三、DMA方式

1.DMA控制器

2.特点

3. DMA的传送方式

①停止CPU

②周期挪用

③DMA和CPU交替访存

4.传送流程 

①预处理 

②数据传送

③后处理

四、DMA 方式和中断方式的区别 


 输入/输出系统实现主机与IO设备之间的数据传送,可以采用不同的控制方式,各种方式在代价、性能、解决问题的着重点等方面各不相同,常用的 IO 方式有程序查询、程序中断和 DMA
等,其中前两种方式更依赖于CPU 中程序指令的执行。

一、程序查询方式

        信息交换的控制直接由CPU执行程序实现。程序查询方式接口中设置一个数据缓冲寄存器(数据端口)和一个设备状态寄存器(状态端口)。主机进行 IO 操作时,先读取设备的状态并根据设备状态决定下一步操作究竟是进行数据传送还是等待。

1.程序查询方式的特点

CPU执行初始化程序,并预置传送参数
向10接口发出命令字,启动1/0设备。
从外设接口读取其状态信息。
CPU 周期或持续的查询设备状态,直到外设准备就绪。
传送一次数据。
修改地址和计数器参数。
判断传送是否结束,若未结束转第③步,直到计数器为 0。 

2.程序查询方式可分类
 

①独占查询

一旦设备被启动,CPU 就一直持续査询接口状态,CPU花费100%的时间用于 I/O 操作,此时外设和 CPU 完全串行工作。


②定时查询

CPU周期性地查询接口状态,每次总是等到条件满足才进行一个数据的传送,传送完成后返回到用户程序。定时查询的时间间隔与设备的数据传输速率有关。 

二、中断方式

1.中断I/O流程 

CPU干的活响应中断(中断隐指令)+中断服务程序
设备干的活独立在一边工作,完成后以中断请求的方式通知CPU

 中断服务程序的最后一句就是中断返回(IRET),无需设备通过中断控制器来向CPU发送中断结束信号!

2.例题 

假定CPU主频为50MHz,CPI为4。设备D采用异步串行通信方式向主机传送7位ASCII字符,通信规程中有1位奇校验位和1位停止位,从D接收启动命令到字符送入1/0端口需要0.5ms。请回答下列问题,要求说明理由。

1)每传送一个字符,在异步串行通信(计网知识)线上共需传输多少位?在设备D持续工作过程中,每秒钟最多可向1/0端口送入多少个字符?

 2)设备D采用中断方式进行输入/输出,示意图如下:

1/0端口每收到一个字符申请一次中断,中断响应需10个时钟周期,中断服务程序共有20条指令,其中第15条指令启动D工作。若CPU需从D读取1000个字符,则完成这一任务所需时间大约是多少个时钟周期?CPU用于完成这一任务的时间大约是多少个时钟周期?在中断响应阶段CPU进行了哪些操作? 

主频50MHz,时钟周期为1/50MHz=20ns
0.5ms对应时钟周期数为 0.5ms/20ns=25000传送1个字符需要的时钟周期数为 25000+10+15x4=25070传送1000个字符需要的时钟周期数为25070x1000=25070000

CPU用于该任务的时间大约为1000x(10+20x4)=9x10^4个时钟周期

中断隐指令:
1.关中断
2.保存断点(PC)
3.引出中断服务程序 

三、DMA方式

        DMA方式是一种完全由硬件进行成组信息传送的控制方式,它具有中断方式的优点,即在外设的数据准备阶段,CPU与外设并行的运行。DMA方式在内存和外设之间开辟了一条“直接数据通路”,信息传送不在经过CPU,因此不再需要保护,恢复CPU现场等繁琐操作。

        这种方式适用于磁盘,显卡,声卡,网卡等高速设备大批量的数据传送,它的硬件开销比较大。在DMA方式中,中断的作用仅限于故障和正常传送结束时的处理

CPU向DMA控制器:

1.指明要输入还是输出;

2.要传送多少个数据;

3.数据在磁盘中的地址;

4.数据要放在主存中的地址。 

1.DMA控制器

其功能如下:

1.接收外设发出的DMA请求,并向CPU发送总线请求。

2.CPU响应并发出总线响应信号,DMA接管总线控制权,进入DMA操作周期。

3.确定传送数据的主存起始地址及长度,并自动修改主存地址计数器和传送长度计数。

4.规定数据在主存和外设的传送方向,发出读/写等控制信号,执行数据传送操作。

5.向CPU报告DMA操作结束。 

控制/状态逻辑由控制和时序电路及状态标志组成,用于指定传输方向,修改传送参数,并对DMA请求信号和CPU响应信号进行协调和同步。
DMA请求触发器每当I/O设备准备好数据后给出一个控制信号,使DMA请求触发器置位。
数据缓冲寄存器用于暂时存储每次传送的数据。
传送长度计数器简称WC,用来记录传送数据的长度,计数器溢出时,数据即传送完毕,自动发送中断信号。
主存地址计数器简称AR,存放要交换数据的主存地址。
中断机构每当一个数据块传送完毕后触发中断机构,向CPU提出中断请求。

注:在DMA传送过程中,DMA控制器将接管CPU的地址总线、数据总线和控制总线,CPU的主存控制信号被禁止使用。而当DMA传送结束后,将恢复CPU的一切权利并开始执行其操作。 

2.特点

        主存和DMA接口之间有一条直接数据通路。由于DMA方式传送数据不需要经过CPU,因此不必中断现行程序,I/O与主机并行工作程序和传送并行工作
DMA方式具有下列特点:

它使主存与CPU的固定联系脱钩,主存既可被CPU访问,又可被外设访问。
在数据块传送时,主存地址的确定、传送数据的计数等都由硬件电路直接实现。
主存中要开辟专用缓冲区,及时供给和接收外设的数据。
DMA传送速度快,CPU和外设并行工作,提高了系统效率。
DMA在传送开始前要通过程序进行预处理,结束后要通过中断方式进行后处理。

3. DMA的传送方式

        主存和DMA控制器之间有一条数据通路,因此主存和I/O设备之间交换信息时,不通过CPU。但当I/O设备和CPU同时访问主存时,可能发生冲突,为了有效地使用主存,DMA控制器与CPU通常采用以下3种方法使用主存。 

①停止CPU

优点控制简单
缺点CPU 处于不工作状态或保持状态未充分发挥 CPU 对主存的利用率

 

②周期挪用

       由于 IO 访存的优先级高于 CPU访存(IO 不立即访存就可能丢失数据),因此由 IO 设备挪用一个存取周期,传送完一个数据字后立即释放总线,如图7.8所示。它是一种 单字传送 方式(在整块的数据传送时,CPU依旧可以访存)。当 IO 设备有 DMA 请求时,会遇到 3种情况:

① 此时 CPU 不在访存,因此 O 的访存请求与CPU 未发生冲突;

②CPU正在访存,此时必须待存取周期结束后,CPU再将总线占有权让出;

③ ⅣO 和 CPU 同时请求访存,出现访存冲突,此时 CPU要暂时放弃总线占有权。

优点即实现了I/O传送,又较好地发挥了主存与CPU的效率
缺点每挪用一个存取周期,DMA接口都要申请,建立和归还总线控制权

 

③DMA和CPU交替访存

优点不需要总线的使用权的申请,建立,归还过程
缺点硬件逻辑复杂

4.传送流程 

传送前接受外设发出的DMA请求(外设传送一个字的请求),并向CPU发出总线请求。
CPU响应此总线请求,发出总线响应信号,接管总线控制权,进入DMA操作周期。
传送时确定传送数据的主存单元地址及长度,并能自动修改主存地址计数和传送长度计数。
规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作。
传送后向CPU报告DMA操作的结束。 

 

①预处理 

        由 CPU 完成一些必要的准备工作。首先,由设备驱动程序初始化DMA 控制器中的有关寄存器、设置传送方向、测试并启动设备等。然后,CPU继续执行原程序,直到IO设备准备好发送的数据(输入情况)或接收的数据(输出情况)时,I/O设备向 DMA 控制器发送 DMA 请求,再由DMA 控制器向CPU发出总线请求(这两个过程也可统称DMA请求),用以传输数据。

②数据传送

        DMA 以数据块为基本传送单位。DMA占用总线后的数据输入/输出操作都是通过循环来实现的,这一循环也是由DMA控制器实现的,即数据传送阶段完全由DMA(硬件)控制。

③后处理

        DMA 控制器向CPU发送中断请求,CPU执行中断服务程序做DMA结束处理,包括校验数据(出错则转诊断程序)等后处理工作。
        在DMA方式下,整个数据块的传送过程都不需要CPU参与,CPU只在最初的DMA 控制器初始化和最后的DMA结束处理时才介入,因此CPU用于IO的开销非常小。

四、DMA 方式和中断方式的区别 

DMA 方式和中断方式的重要区别如下:

中断方式DMA 方式
中断方式是程序的切换,需要保护和恢复现场;而 DMA 方式不中断现行程序,无需保护现场,除了预处理和后处理,其他时候不占用任何CPU 资源。
对中断请求的响应只能发生在每条指令执行结束时(执行周期后);而对DMA 请求的响应可以发生在任意一个机器周期结束时(取指、间址、执行周期后均可)。
中断传送过程需要 CPU 的千预;而 DMA 传送过程不需要 CPU 的干预,因此数据传输速率非常高,适合于高速外设的成组数据传送。 
DMA 请求的优先级高于中断请求。
中断方式具有处理异常事件的能力,而 DMA 方式仅局限于大批数据的传送。
从数据传送来看,中断方式靠程序传送,DMA方式靠硬件传送。
CPU和外设并行,传送和主程序串行CPU和外设并行,传送和主程序并行




 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2095173.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AIGC时代算法工程师的面试秘籍(第二十一式2024.8.19-9.1) |【三年面试五年模拟】

写在前面 【三年面试五年模拟】旨在整理&挖掘AI算法工程师在实习/校招/社招时所需的干货知识点与面试经验,力求让读者在获得心仪offer的同时,增强技术基本面。也欢迎大家提出宝贵的优化建议,一起交流学习💪 欢迎大家关注Rocky…

海外云服务器安装 JDK8 (Ubuntu 18.04 记录篇)

本文首发于 秋码记录 曾几何时,我可是国内云厂商的忠实用户啊。 而今,却不再为云服务器(尤指国内云厂商)续费了,作为我的个人网站 秋码记录 选择了托管在 gitlab.com Pages服务上。 国内云厂商对新老用户持有两种截…

Linux网络编程入门及OSI七层模型

目录 OSI七层模型 TCP/IP五层(或四层)模型 ​编辑 协议报头 局域网 以太网 令牌环网 无线LAN OSI七层模型 TCP/IP五层(或四层)模型 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆 (现在主要用于有线电视)、光纤, 现…

全能型AI与专业型AI:未来的选择与挑战

引言 随着人工智能技术的飞速发展,市场上出现了多种类型的AI产品,其中全能型AI与专业型AI是两大主要类别。近期,OpenAI预计推出的代号为“草莓”的新AI引起了广泛关注,这一全能型AI的推出引发了关于未来AI趋势的热烈讨论。在这个…

学会自定义LayoutManager

最开始我在学习自定义LayoutManager的时候,也是网上搜文章,看博客,以及一些公众号的推文。刚开始看的时候觉得还是那么回事,但是在慢慢的深入LayoutManager源码才发现很多的文章其实都是不合格,乃至可以说是很误导人的…

vue3+elementplus的表格展示和分页实战

文章目录 一、Element Plus的安装使用二、el-table 表格组件三、el-pagination 分页组件四、全部代码五、效果 Element Plus 是一个基于 Vue 3 的现代化 UI 组件库,旨在帮助开发者快速构建美观且功能丰富的 Web 应用程序。它提供了大量的 UI 组件,如按钮…

leetcode3 无重复字符的最长子串

思路 双指针 易错点 什么时候更新长度 除了每次有重复的要更新 ,如果abc这种,本身就不会重复,那maxLength就永远不会更新了。 思路不对 left不应该是1,对于abca,是1 对于 abcc,应该直接加3,所以需要记…

Python 从入门到实战4(序列的操作)

我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。 上篇文章我们通过举例学习了python 中列表的简单操作,…

Codeforces Round 107 (Div. 1) A. Win or Freeze (博弈论 + 数论*1400)

如果一个数是质数或者是1,那么一定是先手获胜,因为不能操作。 我们知道,一个数一定可以由 p 1 k 1 ∗ p 2 k 2 ∗ p 3 k 3 … p_{1}^{k_1}*p_{2}^{k_2}*p_3^{k_3}\dots p1k1​​∗p2k2​​∗p3k3​​…来唯一表示,那么我们就可以…

从入门到精通:掌握 CMD 与 PowerShell 之间的秘密

在日常使用 Windows 系统时,很多人都习惯于打开 CMD(命令提示符)来执行各种操作,从简单的文件管理到复杂的脚本编写,CMD 作为一个经典的工具确实陪伴我们走过了漫长的岁月。然而,随着系统管理需求的提升和自…

什么是EDR、NDR、MDR、XDR?他们之间什么区别?

《网安面试指南》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484339&idx1&sn356300f169de74e7a778b04bfbbbd0ab&chksmc0e47aeff793f3f9a5f7abcfa57695e8944e52bca2de2c7a3eb1aecb3c1e6b9cb6abe509d51f&scene21#wechat_redirect 概述 EDR是什…

opencv之图像平滑处理

文章目录 前言1.什么是平滑处理2.均值滤波2.1基本原理2.1 函数语法 3.方框滤波3.1基本原理3.2函数语法 4.高斯滤波4.1基本原理4.2函数语法 5.中值滤波5.1基本原理5.2 函数语法 6.双边滤波6.1基本原理 温馨提示 前言 **图像平滑处理是图像处理和计算机视觉领域中的一个核心技术…

yolov8改进策略,有可以直接用的代码,80余种改进策略,有讲解

YOLOv8改进策略介绍 YOLOv8是在YOLOv7的基础上进一步发展的目标检测模型,继承了YOLO系列模型的优点,如实时性、准确性和灵活性。然而,任何模型都有进一步改进的空间,以提高其性能、准确性和鲁棒性。下面是针对YOLOv8的一些改进策…

电容的分类

电容作为电子产品中不可或缺的元件,其种类繁多,各具特色。以下是电容的主要分类、作用及优缺点概述: 一、电容的分类 电容的分类方式多样,常见的分类方式包括按结构、用途、电解质类型及制造材料等。 按结构分类: 固…

搞懂奇偶校验

当我们有一串二进制的数据时,如何在这串二进制数据的最前面,或者最后面,添加一位的奇检验位或者偶校验位呢? (1)首先要明确使用什么校验:你使用奇校验,还是偶检验? &am…

使用 EasyExcel 高效读取大文件 Excel

使用 EasyExcel 高效读取大文件 Excel 的最佳实践 在现代应用中,数据处理经常涉及到大规模数据集的处理,Excel 作为一种常见的文件格式,经常用于数据导入和导出。然而,传统的 Excel 处理库如 Apache POI 在处理大文件时可能会面临…

基于Java+SpringBoot+Vue的植物健康系统

基于JavaSpringBootVue的植物健康系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅 某信 gzh 搜索【智能编程小助手】获取项…

(学习总结15)C++11小语法与拷贝问题

C11小语法与拷贝问题 auto关键字范围forinitializer_list深拷贝与浅拷贝写时拷贝 以下代码环境为 VS2022 C。 auto关键字 在早期 C/C 中 auto 的含义是:使用 auto 修饰的变量,是具有自动存储器的局部变量,不过一般都会隐藏,导致…

科研绘图 - Python - 柱状图代码及展示

1 import pandas as pd import matplotlib.pyplot as pltstudents pd.read_excel(./Students.xlsx)print(----原始数据----) print(students)students.sort_values(by2017,inplaceTrue,ascendingFalse) students.plot.bar(xField,y[2016,2017],color[orange,red])plt.title(I…

【Redis】Redis 客户端开发与 Java 集成:RESP协议解析与实战操作

目录 客⼾端Redis Java使⽤ 样例列表引⼊依赖配置端⼝转发连接 Redis Server基础操作字符串操作列表操作哈希表操作集合操作有序集合操作访问集群 Redis Java 集成到 Spring Boot使⽤ Spring Boot 连接 Redis 单机创建项⽬配置 redis 服务地址创建 Controller使⽤ String使⽤ L…