【系统架构设计师】计算机组成与体系结构 ⑪ ( 数据传输控制方式 | 程序直接控制方式 | 中断控制方式 | 直接内存访问方式 )

文章目录

  • 一、数据传输控制方式
    • 1、IO 设备数据传输
    • 2、数据传输控制方式
  • 二、程序直接控制方式 ( 重点考点 )
    • 1、无条件传送 和 程序查询方式
    • 2、程序查询方式
    • 3、程序直接控制方式 的 优缺点
  • 三、程序中断方式
    • 1、程序中断方式 流程
    • 2、程序中断方式 优缺点
  • 四、DMA 方式
    • 1、DMA 简介
    • 2、DMA 无需 CPU 参与
    • 3、DMA 工作流程
  • 五、数据传输控制方式示例






一、数据传输控制方式




1、IO 设备数据传输


I / O 输入输出 设备计算机系统 进行交互 , 由以下要素组成 :

  • IO 设备
  • IO 接口
  • IO 控制软件

IO 设备 通过 IO 接口 接入到 计算机系统中 , 当 IO 设备 产生输入 , 输入的数据传输到内存中 , 然后 由 CPU 处理这些数据 , 再产生输出信息 , 再将 输出信息 对应的数据 输出到 IO 设备中 ;

  • 如 : 键盘 / 鼠标 操作产生输入数据 , 传输 键盘 / 鼠标 事件到内存中 , 然后 CPU 处理这些事件 , 产生结果输出到 屏幕中 ;

整个过程中 , IO 设备 需要 进行数据传输 , 在传输过程中需要进行 传输控制 ;


2、数据传输控制方式


IO 设备 的 数据传输控制方式 , 指的是在 数据 从一处 传输 到另一处 的过程中 , 所采用的 控制机制 和 控制方法 ;


常见的 数据传输控制方式 如下 : 效率从高到低进行排列 ;

  • 程序直接控制方式 , 重点考点
  • 中断控制方式 : 鼠标键盘 ;
  • DMA ( 直接内存访问 ) 控制方式 : 移动硬盘 ;
  • 通道控制方式
  • IO 处理机方式




二、程序直接控制方式 ( 重点考点 )




1、无条件传送 和 程序查询方式


程序直接控制方式 , 分为以下两种情况 :

  • 无条件传送 : 这是 最简单的数据传送方式 , 适用于那些总是处于准备好状态的外设 , 外设无条件地 随时接收 CPU 发来的输出数据 , 也能够 无条件地 随时向 CPU 提供需要输入的数据 ;
    • 这种传输方式的前提是 外设始终处于准备好状态 , 在实际应用中受到很大的限制 ;
  • 程序查询方式 : 又称为 轮询方式 , 在这种方式下 , CPU 需要不断查询外设的状态 , 判断外设是否准备好进行输入或输出操作 ;

2、程序查询方式


程序直接控制方式 中的 程序查询方式 , CPU 直接控制 内存 或 CPU 与 外围设备 之间的 数据传送 , CPU 会 不断地检测 设备控制器 的状态 , 确定 数据 是否 传输完毕 ,

  • 如果传输完毕 , 则开始进行下一次的数据传输 ;
  • 如果没有传输完毕 , 则继续等待 , CPU 继续进行重复检测 ;

3、程序直接控制方式 的 优缺点


程序直接控制方式 的 优缺点 :

  • 优点 : 实现比较简单 , 成本低廉 ;
  • 缺点 :
    • 效率低 : CPU 与 外围设备 串行工作 , 在同一时间只能与一台外设通信 , 无法与多态设备并行通信 , 工作效率低下 ;
    • 时效差 : 对于需要实时响应的外设 , CPU 需要等待大量时间 , 程序查询方式可能无法满足要求 ;




三、程序中断方式




1、程序中断方式 流程


程序中断方式 传输数据 , 当 外围设备 准备好数据 或 需要 CPU 处理时 , 向 CPU 发送中断信号 , CPU暂停当前任务 , 转而处理 中断服务程序 , 完成 数据传输 后再返回原任务 ;

数据传输 时 由于不需要 CPU 等待 , 提高了数据传输 的响应速度 ;


程序被中断后 , 断点位置的程序状态 , 会存放到 栈 中 , 这个过程称为 " 保护现场 " , 会增加额外的开销 ;


CPU 终止当前程序的执行 , 保护现场 后 , 需要 响应中断 , 查询 " 中断向量表 " , 通过对应的入口 , 找到中断程序 , 查询 是由什么原因导致的中断 , 然后处理对应的 IO 数据传输 ;

外设 IO 数据传输处理完毕后 , 需要 返回原来的 " 断点 " , 继续执行原来的程序 ;


程序中断方式 适用于 处理 情况紧急 必须 马上处理的特殊情况 ;


2、程序中断方式 优缺点


程序中断方式 优缺点 :

  • 优点 : 支持 多个程序进程 和 外围设备 的 并行数据传输操作 , 提高了 CPU 的利用率 ;
  • 缺点 :
    • 每次 数据传输 都需要 向 CPU 发送中断信号 , 如果 中断次数 较多 , 会占用大量 CPU 时间 ;
    • 外围设备 数量较大时 , 过多的 中断次数 导致 CPU 无法及时响应中断 , 出现 数据丢失 的情况 ;




四、DMA 方式




1、DMA 简介


DMA 全称为 " Direct Memory Access " , 直接内存访问 ;

DMA 由硬件执行 I/O 数据交换 , 核心在于 DMA 控制器 完全接管对总线的控制 , 数据交换直接在 内存 和 I/O 设备 之间进行 , 无需 CPU 参与 ;


2、DMA 无需 CPU 参与


DMA 直接内存访问控制方式 是 外设 与 内存 之间直接进行数据传输 , 无需 CPU 的干预 , DMA 可以实现 高速 批量 数据交换 , 数据传输 的基本单位是数据块 , 整个过程由 DMA 控制器控制 ;

DMA 方式中 , 不需要 CPU 参与 , CPU 的效率 比

  • 程序中断方式
  • 程序直接控制方式

都要高 ;


3、DMA 工作流程


DMA 工作流程 :

  • 首先 , DMA 控制器 向 总线裁决 逻辑 , 提出 总线请求 ;
  • 然后 , 等待 CPU 完成 当前的 总线周期 , 释放 总线控制权 ;
  • 最后 , 响应 DMA , 通过 DMA 控制器 通知 IO 设备开始进行 数据传输 ;




五、数据传输控制方式示例



嵌入式系统 中 采用 中断方式 实现 输入输出 , 主要原因是 可以 对 突发事件 进行快速响应 ;

程序被中断后 , 程序的 断点数据 保存在 栈 内存 中 ;


中断方式 不是速度最快的方式 , 下面的顺序是从慢到快 , IO 处理机方式速度最快 ;

  • 程序直接控制方式 , 重点考点
  • 中断控制方式 : 鼠标键盘 ;
  • DMA ( 直接内存访问 ) 控制方式 : 移动硬盘 ;
  • 通道控制方式
  • IO 处理机方式

除 程序直接控制方式 外 , CPU 均不参与 数据传输操作 ;

实现起来 最容易的是 程序直接控制方式 ;


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

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

相关文章

好用的声音分析的软件和网站

有许多软件和网站可以帮助进行声音分析,从专业级的音频处理软件到在线工具,以下是一些推荐: 专业音频分析软件 Audacity 开源且免费的音频编辑和分析工具。提供基本的音频录制、编辑和分析功能。支持多种插件,扩展其功能。 Adob…

项目实战--Spring Boot 3整合Flink实现大数据文件处理

一、应用背景 公司大数据项目中,需要构建和开发高效、可靠的数据处理子系统,实现大数据文件处理、整库迁移、延迟与乱序处理、数据清洗与过滤、实时数据聚合、增量同步(CDC)、状态管理与恢复、反压问题处理、数据分库分表、跨数据…

把 .py 文件编译成 .pyd 文件

将 .py 文件编译成 .pyd 文件(在Windows上)或 .so 文件(在Linux或macOS上),实际上是将Python代码编译成一种可以被Python解释器直接加载的二进制模块。这种编译过程通常使用cython、pyinstaller的钩子(hook…

JRT打印药敏报告

最近没写jrt系列博客,不是中途而废了。而是在写微生物系统。今天终于把微生物大体完成了,伴随着业务的实现,框架趋于完善和稳定。构建一套完美而强大的打印体系一直是我的理想,从最开始C#的winform打印控件到刚接触bs时候用js打印…

day11:文件处理

一、文件与文件模式介绍 1、什么是文件 文件是操作系统提供给用户/应用程序操作硬盘的一种虚拟的概念/接口 用户/应用程序(open()) 操作系统(文件) 计算机硬件(硬盘)2、为何要用文件 ①用户/应用程序可以通过文件将数据永久保存…

【最强八股文 -- 计算机网络】【快速版】DNS 解析过程

步骤一:查询浏览器及计算机本地 HOST 文件中是否有对应的 缓存 步骤二:请求本地 DNS 服务器 (无则请求 根级 获取能提供信息的权威 DNS 服务器 ) 步骤三:逐级返回对应的 IP 至浏览器 步骤四:浏览器发起连接并缓存 参考资料&#x…

通过Arcgis从逐月平均气温数据中提取并计算年平均气温

通过Arcgis快速将逐月平均气温数据生成年平均气温数据。本次用2020年逐月平均气温数据操作说明。 一、准备工作 (1)准备Arcmap桌面软件; (2)准备2020年逐月平均气温数据(NC格式)、范围图层数据&…

JAVA分布式事务详情分布式事务的解决方案Java中的分布式事务实现

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

数一140+上岸|七月强化一定要避开这3个雷区!

当然可以,强化阶段的主要任务就是做题! 但是不用一刀切,强化阶段听课和做题可以二八原则,就是听课占20%,做题占80%。 因为自己去自学讲义的话,比如张宇18讲,会漏掉一些重点,有的技…

进程间的通信--管道

文章目录 一、进程通信的介绍1.1进程间为什么需要通信1.2进程如何通信 二、管道2.1匿名管道2.1.1文件描述符理解管道2.1.2接口使用2.1.3管道的4种情况2.1.4管道的五种特征 2.2管道的使用场景2.2.1命令行中的管道2.2.2进程池 2.命名管道2.1.1原理2.2.2接口2.2.3代码实例 一、进程…

scipy库中,不同应用滤波函数的区别,以及FIR滤波器和IIR滤波器的区别

一、在 Python 中,有多种函数可以用于应用 FIR/IIR 滤波器,每个函数的使用场景和特点各不相同。以下是一些常用的 FIR /IIR滤波器应用函数及其区别: from scipy.signal import lfiltery lfilter(fir_coeff, 1.0, x)from scipy.signal impo…

【Docker-compose】搭建php 环境

文章目录 Docker-compose容器编排1. 是什么2. 能干嘛3. 去哪下4. Compose 核心概念5. 实战 :linux 配置dns 服务器,搭建lemp环境(Nginx MySQL (MariaDB) PHP )要求6. 配置dns解析配置 lemp Docker-compose容器编排 1. 是什么 …

springer latex模板参考文献不显示

原因 his is BibTeX, Version 0.99d (TeX Live 2024) The top-level auxiliary file: sn-article.aux I couldn’t open style file sn-mathphys-num.bst —line 2 of file sn-article.aux : \bibstyle{sn-mathphys-num : } I’m skipping whatever remains of this command I…

【智能算法改进】一种混合多策略改进的麻雀搜索算法

目录 1.算法原理2.改进点3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】麻雀搜索算法(SSA)原理及实现 2.改进点 精英反向学习策略 将精英反向学习策略应用到初始化阶段, 通过反向解的生成与精英个体的选择, 不仅使算法搜索范围得到扩大, 提…

Gunicorn的预分叉架构:快速启动与高效资源利用

Gunicorn的预分叉架构:快速启动与高效资源利用 引言 Gunicorn(Green Unicorn)是一个Python WSGI HTTP服务器,设计用来为Python web应用提供高效、可靠的服务。Gunicorn支持同步和异步工作模式,并且兼容多种Web框架。…

从零开学C++:类和对象(上)

引言:在学习了C的入门级知识之后,现在就让我们一起进入类和对象的学习吧,该知识点我将分为上,中,下三个部分对其进行讲解。 更多有关C语言和数据结构的知识详解可前往个人主页:计信猫 目录 一,类…

通过实例说明.NET Autofac依赖注入的多种方式

Autofac提供了多种灵活的依赖注入方式,包括但不限于构造函数注入、属性注入、方法注入、字段注入、元数据注入和动态参数注入。根据具体的需求选择合适的注入方式,可以有效地管理对象的依赖关系和生命周期 构造函数注入 构造函数注入(Const…

CSS 【详解】自定义属性(又名 CSS 变量)

声明变量 - - 变量命名规则 支持数字命名支持使用短横线和空格命名支持中文等CJK文字不支持包含$、[、]、^、(、)、%、"等特殊字符的命名,要使用这些特殊字符,需要使用反斜杠转义。 变量值 可以是任意值或表达式 --direction: to top;--gradient…

Android liveData 监听异常,fragment可见时才收到回调记录

背景&#xff1a;在app的fragment不可见的情况下使用&#xff0c;发现注册了&#xff0c;但是没有回调导致数据一直未更新&#xff0c;只有在fragment可见的时候才收到回调 // 观察通用信息mLightNaviTopViewModel.getUpdateCommonInfo().observe(this, new Observer<Common…