【计算机组成原理】七、输入/输出系统:2.I/O接口、I/O控制方式

2024-09-01 19:20

本文主要是介绍【计算机组成原理】七、输入/输出系统:2.I/O接口、I/O控制方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

I/O接口、I/O控制方式

2. I/O接口

文章目录

  • I/O接口、I/O控制方式
    • 2. I/O接口
      • 2.1 I/O接口的作用
      • 2.2 结构
      • 2.3 工作原理
      • 2.4 I/O端口
      • 2.5 分类
    • 3. I/O控制方式
      • 3.1程序查询方式
      • 3.2程序中断方式
        • 3.2.1中断系统
        • 3.2.2工作流程
        • 3.2.3多重中断与==中断屏蔽技术==
        • 3.2.4程序中断方式
      • 3.3DMA控制方式
        • 3.3.1工作流程
        • 3.3.2传送方式
      • DMA方式vs中断方式
      • 3.4通道控制方式

详见:操作系统 - 5.输入输出(I/O)管理 - 2. I/O 控制器

I/O接口:又称I/O控制器(I/O Controller)、设备控制器,负责协调主机与外部设备之间的数据传输。

2.1 I/O接口的作用

数据缓冲:通过数据缓冲寄存器(DBR)达到主机和外设工作速度的匹配;

错误或状态监测:通过状态寄存器反馈设备的各种错误、状态信息,供CPU查用;

控制和定时:接收从控制总线发来的控制信号、时钟信号;

数据格式转换:串-并、并-串等格式转换;

与主机和设备通信:实现主机一I/o接口一I/o设备之间的通信。

2.2 结构

在这里插入图片描述

主机测:内部接口:内部接口与系统总线相连,实质上是与内存、CPU相连。

设备测:外部接口:外部接口通过接口电缆与外设相连,外部接口的数据传输可能是串行方式,因此I/O接口需具有串/并转换功能。

在这里插入图片描述

2.3 工作原理

在这里插入图片描述

  • 如何确定要操作的设备?

每个设备对应一组寄存器,操作不同的寄存器就是在操作不同的设备。

2.4 I/O端口

I/O端口是指接口电路中可以被CPU直接访问的寄存器

  • 接口interface

    • 端口port
      • 数据端口、数据寄存器:读写
      • 控制端口、控制寄存器:只能写
      • 状态端口、状态寄存器:只能读
    • 控制逻辑
  • 如何访问I/O端?

2种方式:统一编制、独立编址。

  1. 统一编制

把l/O端口当做存储器的单元进行地址分配,用统一的访存指令就可以访问I/O端口,又称存储器映射方式。靠不同的地址码区分内存和l/O设备,I/O地址要求相对固定在地址的某部分。

优点

  1. 不需要专门的输入/输出指令,所有访存指令都可直接访问端口,程序设计灵活性高;
  2. 端口有较大的编址空间;
  3. 读写控制逻辑电路简单。

缺点:端口占用了主存地址空间,使主存地址空间变小外设寻址时间长(地址位数多,地址译码速度慢)。

  1. 独立编址

I/O端口地址与存储器地址无关,独立编址CPU需要设置专门的输入/输出指令访问端口,又称I/O映射方式。靠不同的指令区分内存和I/O设备。

优点:使用专用I/O指令,程序编制清晰I/O端口地址位数少,地址译码速度快I/O端口的地址不占用主存地址空间。

缺点:

  1. I/O指令类型少,一般只能对端口进行传送操作,程序设计灵活性差;
  2. 需要CPU提供存储器读/写、I/O设备读/写两组控制信号,增加了控制逻辑电路的复杂性。

有个图找不到了

2.5 分类

按数据传送方式可分为

  1. 并行接口:一个字节或一个字所有位同时传送
  2. 串行接口:一位一位地传送。

注:这里所说的数据传送方式指的是外设和接口一侧的传送方式,而在主机和接口一侧,接口要完成数据格式转换。

按主机访问I/O设备的控制方式可分为

  1. 程序查询接口
  2. 中断接口
  3. DMA接口

按功能选择的灵活性可分为

  1. 可编程接口
  2. 不可编程接口

3. I/O控制方式

详见:操作系统 - 5.输入输出(I/O)管理 - 3. I/O 控制方式

在这里插入图片描述

CPU如何控制键盘I/O的完成?

3.1程序查询方式

程序查询方式:CPU不断轮询检查l/O控制器中的“状态寄存器”,检测到状态为“已完成”之后,再从“数据寄存器”取出输入数据。

这个阶段CPU需要一直检查,进行忙等,CPU与I/O串行工作,而无法去做其他的事情,效率很低。

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

分类:

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

在这里插入图片描述

程序查询流程图:

在这里插入图片描述

列题

在这里插入图片描述

3.2程序中断方式

3.2.1中断系统

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

中断分类:

在这里插入图片描述

3.2.2工作流程

工作流程:

  1. 中断请求

    • 中断源向CPU发送中断请求信号。

    • 中断请求标记触发器INTR

      对于外中断:CPU是在统一的时刻即每条指令执行阶段结束前向接口发出中断查询信号,以获取I/O的中断请求,也就是说,CPU响应中断的时间是在每条指令执行阶段的结束时刻。

  2. 中断响应

    • 响应中断的条件:
      1. 中断源有中断请求;
      2. CPU允许中断即开中断。(“关中断”则不响应中断);
      3. 一条指令执行完毕,且没有更紧迫的任务。
    • 中断判优:多个中断源同时提出请求时通过中断判优逻辑响应一个中断源
      • 中断判优既可以用硬件实现,也可用软件实现:
        • 硬件实现是通过硬件排队器实现的,它既可以设置在CPU中,也可以分散在各个中断源中;
        • 软件实现是通过查询程序实现的。
      • 中断判优-优先级:
        1. 硬件故障中断属于最高级,其次是软件中断;
        2. 非屏蔽中断优于可屏蔽中断;
        3. DMA请求优于I/O设备传送的中断请求;
        4. 高速设备优于低速设备;
        5. 输入设备优于输出设备;
        6. 实时设备优于普通设备。
  3. 中断处理

    • 中断隐指令
      1. 关中断:原子操作,需要关中断;
      2. 保存断点:保存原程序的PC值
      3. 引出中断服务程序:PC指向中断服务程序的第一条指令。
    • 中断服务程序
      1. 保护现场:保存通用寄存器状态寄存器的内容,以便返回原程序后可以恢复CPU环境;
      2. 中断服务(设备服务、中断要做的主体);
      3. 恢复现场:通过出栈指令或取数指令把之前保存的信息送回寄存器。

中断处理流程图:

在这里插入图片描述

在关中断、开中断这中间的一段原子操作不能再进入新的中断。所以只允许一个中断服务程序的就是单重中断

3.2.3多重中断与中断屏蔽技术

单重中断:执行中断服务程序时不响应新的中断请求。

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

在这里插入图片描述

中断屏蔽技术主要用于多重中断,CPU要具备多重中断的功能,须满足下列条件:

  1. 在中断服务程序中提前设置开中断指令;
  2. 优先级别高的中断源有权中断优先级别低的中断源。

每个中断源都有一个屏蔽触发器,1表示屏蔽该中断源的请求,0表示可以正常申请,所有屏蔽触发器组合在一起,便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字

中断屏蔽字设置的规律:

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

例题:

在这里插入图片描述

3.2.4程序中断方式

程序中断方式:等待键盘I/O时CPU可以先去执行其他程序,键盘I/O完成后I/O控制器向CPU发出中断请求,CPU响应中断请求,并取走输入数据。

在这里插入图片描述

详细:

在这里插入图片描述

  • PC值:中断隐指令自动保存(硬件完成);
  • 通用寄存器、中断屏蔽字:操作系统保存;
  • 块表(TLB)和Cache:硬件机构保存。

例题:

在这里插入图片描述

3.3DMA控制方式

而对于快速I/O设备,如“磁盘”,每准备好一个字就给CPU发送一次中断请求,会导致CPU需要花大量的时间来处理中断服务程序,CPU利用率严重下降。


DMA接口,即DMA控制器,也是一种特殊的I/O接(I/O控制器)。

DMA控制方式:主存与高速I/O设备之间有一条直接数据通路(DMA总线)。CPU同DMA接口发出“读/写”命令,并指明主存地址、磁盘地址、读写数据量等参数。

(三总线方式)

DMA控制器自动控制磁盘与主存的数据读写(每传送1个字);每完成一整块数据读写(如1KB为一整块),才向CPU发出一次中断请求

在这里插入图片描述

3.3.1工作流程

(单总线方式)

在这里插入图片描述

DMA详细传送过程:

在这里插入图片描述

3.3.2传送方式

用于解DMA和CPU的访存冲突

在这里插入图片描述

DMA方式vs中断方式

在这里插入图片描述

3.4通道控制方式

有的商用中型机、大型机可能会接上超多的I/O设备,如果都让CPU来管理,那么CPU就太累了…

通道:可以理解为是“弱鸡版的CPU”。通道是一种特殊的处理器,可以识别并执行一系列通道指令,通道指令种类、功能通常比较单一。

在这里插入图片描述

这篇关于【计算机组成原理】七、输入/输出系统:2.I/O接口、I/O控制方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1127827

相关文章

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

MySQL中的表连接原理分析

《MySQL中的表连接原理分析》:本文主要介绍MySQL中的表连接原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、表连接原理【1】驱动表和被驱动表【2】内连接【3】外连接【4编程】嵌套循环连接【5】join buffer4、总结1、背景

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

Java Stream的distinct去重原理分析

《JavaStream的distinct去重原理分析》Javastream中的distinct方法用于去除流中的重复元素,它返回一个包含过滤后唯一元素的新流,该方法会根据元素的hashcode和eq... 目录一、distinct 的基础用法与核心特性二、distinct 的底层实现原理1. 顺序流中的去重

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

SpringBoot+Redis防止接口重复提交问题

《SpringBoot+Redis防止接口重复提交问题》:本文主要介绍SpringBoot+Redis防止接口重复提交问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录前言实现思路代码示例测试总结前言在项目的使用使用过程中,经常会出现某些操作在短时间内频繁提交。例

Spring @Scheduled注解及工作原理

《Spring@Scheduled注解及工作原理》Spring的@Scheduled注解用于标记定时任务,无需额外库,需配置@EnableScheduling,设置fixedRate、fixedDe... 目录1.@Scheduled注解定义2.配置 @Scheduled2.1 开启定时任务支持2.2 创建