当前位置: 首页 > news >正文

【计算机组成原理】输入/输出系统(四)—— I/O方式

【计算机组成原理】输入/输出系统(四)—— I/O方式

  • 一、程序查询方式
  • 二、程序中断方式
    • (一)、中断系统
      • 中断的基本概念
      • 中断请求的分类
      • 中断请求标记
      • 中断判优-实现
      • 中断判优-优先级设置
    • (二)、中断处理过程
      • 中断处理过程-中断隐指令
      • 中断处理过程-硬件向量法
      • 中断处理过程-中断服务程序
      • 总结:中断处理过程
    • (三)、多重中断
    • (四)、中断屏蔽技术
    • (五)、程序中断过程
  • 三、DMA 方式
      • 1. DMA控制器
      • 2. DMA传送过程
      • 3. DMA方式的特点
      • 4. DMA方式与中断方式

一、程序查询方式

在这里插入图片描述

在这里插入图片描述

程序查询方式的工作流程如下:

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

在这种控制方式下,CPU一旦启动 I/O,就必须停止现行程序的运行,并在现行程序中插入一段程序。程序查询方式的主要特点是 CPU有“踏步”等待现象,CPU 与I/O串行工作。这种方式的接口设计简单、设备量少,但CPU在信息传送过程中要花费很多时间来查询和等待,而且在一段时间内只能和一台外设交换信息,效率大大降低。

在程序查询方式的输入/输出系统中,假设不考虑处理时间,每一个查询操作需要100个时钟周期,CPU的时钟频率为50MHz。现有鼠标和硬盘两个设备,而且CPU必须每秒对鼠标进行30次查询,硬盘以32位字长为单位传输数据,即每32位被CPU查询一次,传输率为2×22B/s。求CPU对这两个设备查询所花费的时间比率,由此可得出什么结论?

在这里插入图片描述

CPU一旦启动I/O,必须停止现行程序的运行,并在现行程序中插入一段程序。

主要特点:CPU有“踏步”等待现象,CPU与I/O串行工作。

优点:接口设计简单、设备量少。

缺点:CPU在信息传送过程中要花费很多时间用于查询和等待,而且如果采用独占查询,则在一段时间内只能和一台外设交换信息,效率大大降低。

独占查询:CPU 100%的时间都在查询I/O状态,完全串行
定时查询:在保证数据不丢失的情况下,每隔一段时间CPU就查询一次 I/O状态。查询的间隔内CPU可以执行其他程序。

二、程序中断方式

在这里插入图片描述

(一)、中断系统

中断的基本概念

程序中断是指在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序。

工作流程:

  1. 中断请求
    中断源向CPU发送中断请求信号。
  2. 中断响应
    响应中断的条件。
    中断判优:多个中断源同时提出请求
    时通过中断判优逻辑响应一个中断源。
  3. 中断处理
    中断隐指令。
    中断服务程序。

中断请求的分类

在这里插入图片描述

IF:Interrupt Flag,存在PSW中,
IF=1表示开中断(允许中断)
IF=0表示关中断(不允许中断)

中断请求标记

如何判断是哪个设备发来的中断信号?

每个中断源向CPU发出中断请求的时间是随机的。
为了记录中断事件并区分不同的中断源,中断系统需对每个中断源设置中断请求标记触发器INTR,
当其状态为“1”时,表示中断源有请求。
这些触发器可组成中断请求标记寄存器,该寄存器可集中在CPU中,也可分散在各个中断源中。

在这里插入图片描述

在这里插入图片描述

对于外中断,CPU是在统一的时刻即每条指令执行阶段结束前向接口发出中断查询信号,以获取I/O的中断请求,也就是说,CPU响应中断的时间是在每条指令执行阶段的结束时刻
CPU响应中断必须满足以下3个条件:
① 中断源有中断请求。
② CPU允许中断即开中断。
③ 一条指令执行完毕,且没有更紧迫的任务。

中断判优-实现

中断判优用于判断有多个中断信号同时到来,先处理哪个?

中断判优既可以用硬件实现,也可用软件实现:

  • 硬件实现是通过硬件排队器实现的,它既可以设置在CPU中,也可以分散在各个中断源中;
  • 软件实现是通过查询程序实现的。

中断判优-优先级设置

  1. 硬件故障中断属于最高级,其次是软件中断;
  2. 非屏蔽中断优于可屏蔽中断;
  3. DMA请求优于I/O设备传送的中断请求
  4. 高速设备优于低速设备;
  5. 输入设备优于输出设备;
  6. 实时设备优于普通设备。

(二)、中断处理过程

中断处理过程-中断隐指令

并不是一条具体的指令,而是CPU在检测到中断请求时自动完成的一系列动作。

中断隐指令的主要任务:

关中断。在中断服务程序中,为了保护中断现场(即CPU主要寄存器中的内容)期间不被新的中断所打断,必须关中断,从而保证被中断的程序在中断服务程序执行完毕之后能接着正确地执行下去。
保存断点。为了保证在中断服务程序执行完毕后能正确地返回到原来的程序,必须将原来程序的断点(即程序计数器(PC)的内容)保存起来。可以存入堆栈,也可以存入指定单元。
引出中断服务程序。引出中断服务程序的实质就是取出中断服务程序的入口地址并传送给程序计数器(PC)。

中断处理过程-硬件向量法

在这里插入图片描述

中断处理过程-中断服务程序

中断服务程序的主要任务:
① 保护现场
保存通用寄存器和状态寄存器的内容(eg:保存 ACC寄存器的值),以便返回原程序后可以恢复 CPU环境。可使用堆栈,也可以使用特定存储单元。

② 中断服务(设备服务)
主体部分,如通过程序控制需打印的字符代码送入打印机的缓冲存储器中(eg:中断服务的过程中有可能修改ACC寄存器的值)

③ 恢复现场
通过出栈指令或取数指令把之前保存的信息送回寄存器中(eg:把原程序算到一般的ACC值恢复原样)

④中断返回
通过中断返回指令回到原程序断点处。

总结:中断处理过程

在这里插入图片描述

(三)、多重中断

单重中断:执行中断服务程序时不响应新的中断请求。
多重中断:又称中断嵌套,执行中断服务程序时可响应新的中断请求。

在这里插入图片描述

(四)、中断屏蔽技术

中断屏蔽技术主要用于多重中断,CPU要具备多重中断的功能,须满足下列条件。
① 在中断服务程序中提前设置开中断指令。
② 优先级别高的中断源有权中断优先级别低的中断源。
每个中断源都有一个屏蔽触发器,1表示屏蔽该中断源的请求,0表示可以正常申请,所有屏蔽触发器组合在一起,便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字。

屏蔽字设置的规律:

  1. 一般用‘1’表示屏蔽,’0’表示正常申请。
  2. 每个中断源对应一个屏蔽字(在处理该中断源的中断服务程序时,屏蔽寄存器中的内容为该中断源对应的屏蔽字)。
  3. 屏蔽字中‘1’越多,优先级越高。每个屏蔽字中至少有一个’1’(至少要能屏蔽自身的中断)。

在这里插入图片描述

(五)、程序中断过程

在这里插入图片描述

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

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

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

在这里插入图片描述

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

在这里插入图片描述

至少包含1位起始位和1位停止位,停止位可能有多位。
每传送一个字符需要传送1位起始位、7位数据位、1位校验位、1位停止位,共需传送10位。每0.5ms可送入1个字符,每秒可送入 1s/0.5ms = 2000 个字符。

主频50MHz,时钟周期为 1/50MHz = 20ns
0.5ms对应时钟周期数为 0.5ms/20ns = 25000
传送1个字符需要的时钟周期数为 25000 + 10 + 15×4 = 25070
传送1000个字符需要的时钟周期数为 25070×1000 = 25070000
CPU用于该任务的时间大约为 1000×(10+20×4)= 9× 1 0 4 10^4 104 个时钟周期

中断隐指令:

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

在这里插入图片描述

三、DMA 方式

DMA控制器与主存每次传送1个字。当传送完一整块数据后才向CPU发出中断请求。

在这里插入图片描述

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

注:1、2属于传送前,3、4属于传送时,5属于传送后。

1. DMA控制器

在这里插入图片描述

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

2. DMA传送过程

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

3. DMA方式的特点

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

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

4. DMA方式与中断方式

在这里插入图片描述

在这里插入图片描述

相关文章:

  • 让GPU跑的更快
  • 给课题组师弟师妹们的开荒手册
  • Java操作Excel - Easy Excel
  • 交通状态预测 | Python实现基于LSTM的客流量预测方法
  • 一条sql语句在MySQL的执行流程
  • 当遇到听不了的歌,Python程序员都是这么做的...
  • leetcode-289:生命游戏
  • C语言中的结构体应用详解及注意事项
  • 【2022】Elasticsearch-7.17.6集群部署
  • 计算器——位运算(c语言)
  • Maven 基础 5 第一个Maven 项目(IDEA 生成)
  • TypeScript算法题实战——哈希表篇
  • 嵌入式分享合集71
  • 又一巅峰神作 14年工作经验大佬手写“微服务项目下高并发的流量治理”,太牛了
  • 谷歌翻译失败解决方案
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • C++类的相互关联
  • CentOS 7 防火墙操作
  • ECMAScript入门(七)--Module语法
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • mongo索引构建
  • Node 版本管理
  • Python3爬取英雄联盟英雄皮肤大图
  • webgl (原生)基础入门指南【一】
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 回顾2016
  • 基于遗传算法的优化问题求解
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 一天一个设计模式之JS实现——适配器模式
  • 以太坊客户端Geth命令参数详解
  • 运行时添加log4j2的appender
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • MyCAT水平分库
  • puppet连载22:define用法
  • ​configparser --- 配置文件解析器​
  • $.each()与$(selector).each()
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (11)MSP430F5529 定时器B
  • (30)数组元素和与数字和的绝对差
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (二)hibernate配置管理
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (强烈推荐)移动端音视频从零到上手(上)
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (未解决)macOS matplotlib 中文是方框
  • (原創) 物件導向與老子思想 (OO)
  • ***利用Ms05002溢出找“肉鸡
  • 、写入Shellcode到注册表上线
  • ./和../以及/和~之间的区别
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端