《计算机组织结构》期末复习-第17讲-输入输出


第17讲-输入输出

原文链接

外围设备

  1. 输入输出操作通过连接到输入输出模块的各种外部设备完成,这些外部设备提供了在外部环境和计算机系统之间的数据交换,通常被称为外围设备(peripheral device),简称为外设(peripheral)
  2. 类型
    • 人可读设备:适用于与计算机用户通信
      • 显示器,打印机
    • 机器可读设备:适用于与设备通信
      • 磁盘,磁带
    • 通信设备:适用于与远程设备通信
  3. 不能把外设直接连接到系统总线上
    • 外设种类繁多,操作方法多种多样
    • 外设的数据传送速度一般比存储器或处理器的慢得多
    • 某些外设的数据传送速度比存储器或处理器要快
    • 外设使用的数据格式和字长度通常与处理器不同

I/O模块

  1. 通过系统总线或中央交换器和存储器连接;通过专用数据线与一个或多个外设连接。
    I/O模块是计算机内部系统和外设之间的桥梁

    image-20231220222712734
  2. 外围设备的接口

  • 输入输出模块的接口以控制、状态和数据信号的形式出现
  • 与设备相关的控制逻辑控制外设的操作,以响应来自输入输出模块的命令
  • 缓冲器用于缓存输入输出模块和外设之间传送的数据
    • 缓冲器的大小一般为8 位或16 位
image-20231220223343684
  1. I/O模块的功能
  • 处理器通信
    • 命令译码:输入输出模块接收来自处理器的命令,这些命令一般作为信号发送到控制总线
    • 状态报告:由于外设速度很慢, 所以知道输入 输出模块的状态很重要
    • 数据:数据是在处理器和输入输出模块之间经由数据总线来交换的
    • 地址识别:输入输出模块必须能识别它所控制的每个外设的唯一地址
  • 设备通信
    • 通信内容包含命令、状态信息和数据
  • 数据缓冲
    • 外设的数据传送速度一般比存储器或处理器的慢得多
    • 某些外设的数据传送速度比存储器或处理器要快
  • 控制和定时
    • 处理器会非预期的与一个或几个外设进行通信
    • 一些内部资源,如主存和系统总线,是被共享的
    • 例如:控制从外设到处理器的数据传送包括以下几个步骤
      • 处理器查询输入 输出模块以检验所连接设备的状态
      • 输入输出模块返回设备状态
      • 如果设备运转并准备就绪,则处理器通过向输入 输出模块发出一条命令 请求数据传送
      • 经输入输出模块传送数据到处理器
  • 检错
    • 检错并把差错信息报告给处理器
    • 差错类型
      • 设备报告的机械和电路故障
      • 传输过程中数据位的变化
  1. I/O模块的结构
image-20231220224938555
  1. 外部接口
    • 接口类型
      • 并行接口:多根线连接输入 输出模块和外设,同时传送多位数据
      • 串行接口:只有一根线用于传输数据,每次只传输一位数据
    • 由于并行接口要求每次同时传送,当传输速度和总线长度增加时,总线的时钟频率会受到限制

I/O操作技术

  1. 分类
    • 编程式I/O:处理器通过执行程序来直接控制I/O 操作,当处理器发送一条命令到I/O 模块时,它必须等待,直到I/O 操作完成
    • 中断驱动式I/O:处理器发送一条I/O 命令后,继续执行其他指令;并且当I/O 模块完成其工作后,才去中断处理器工作
    • 直接存储器读取(Direct Memory Access,DMA):I/O 模块与主存直接交换数据,而不需要处理器的干涉
image-20231220225832049
  1. 编程式I/O
    • 当处理器在执行过程中遇到一条与I/O 操作有关的指令时,它通过发送指令到适当的I/O 模块来执行这条指令
    • I/O模块将执行所要求的动作,然后在I/O 状态寄存器中设置一些适当的位
    • I/O不会中断处理器,因此处理器需要周期性地检查I/O模块的状态,直到发现该操作完成
    • I/O 命令:为了执行I/O 操作,处理器发送一个指定具体I/O 模块和外设的地址,并发送一条I/O 命令
      • 类型
        • 控制命令:激活外设并告诉它要做什么
        • 测试命令:测试I/O 模块及其外设相关的各种状态条件
        • 读命令:使I/O 模块从外设获得一个数据,把它存入内部缓冲区
        • 写命令:使I/O 模块从数据总线获得一个数据,把它传入外设
    • I/O 指令
      • I/O指令很容易映射为I/O 命令, 并且两者之间通常是简单的一一对应关系
        • 指令的形式取决于外设寻址的方式
      • 编址方式
        • 存储器映射式I/O:存储单元和I/O 设备有统一的地址空间,即每一个地址对应一个内存地址或一个IO地址。能使用大的指令系统,可进行更有效的编程。但是I/O设备会占用地址空间。
        • 分离式I/O:让总线既有存储器的读线和写线,同时也有输入和输出命令线。命令线指定地址指向内存地址还是IO设备。IO和内存都可以使用全部地址空间。
  2. 中断驱动式I/O
    • 处理器发送一个I/O 命令到模块,然后去处理其它有用的工作

    • 当I/O 模块准备和处理器交换数据时,它中断处理器以请求服务

    • 处理器执行数据传送,最后恢复它原先的处理工作

      image-20231220231826050
    • 从I/O 模块的角度来看

      • I/O模块接收来自处理器的读命令
      • I/O模块从相关的外设中读入数据
      • 一旦数据进入I/O 模块的数据寄存器后,该模块通过控制总线给处理器发送中断信号
      • I/O模块等待直到处理器请求该数据时为止
      • 当处理器有数据请求时,I/O 模块把数据传送到数据总线上,并准备另一个I/O 操作
    • 从处理器的角度来看

      • 处理器发送一个读命令
      • 处理器离开去做其它的事情,并在每个指令周期结束时检查中断
      • 当来自I/O 模块的中断出现时,处理器保存当前程序的现场
      • 处理器从I/O 模块读取数据字并保存到主存中
      • 处理器恢复刚才正在运行的程序的现场,并继续运行原来的程序
    • 中断允许和中断禁止

      18187e1805ee18e290626e3093abf5f
    • 响应优先级和处理优先级

      • 例子:假设中断系统中有4 个中断源,其响应优先级为L 1 >L 2 >L 3 >L 44,处理优先级为L 1 >L 4 >L 3 >L 2 。如果在主程序执行时同时发生L 1 、L 3 和L 4 中断,并且在处理L 3 中断的过程中发生L 2 中断,写出掩码字和所有中断服务程序的过程。
      2e7130b7a0fa6de0477e56fcf4b3e74
    • 设备识别

      • 多条中断线:处理器仅仅挑选具有最高优先级的中断线
        • 即使有多条中断线可用,每条线上也需要采用其它三种技术中的一种
      • 软件轮询:模块的轮询次序就决定了模块的优先级
        • 轮询每一个I/O 模块来确定是哪个模块发生的中断
      • 菊花链:链接模块次序就决定了模块的优先级
        • 所有的I/O 模块共享一条中断请求线,中断应答线采用菊花链穿过这些中断模块
      • 独立请求:中断控制器决定
        • 特定的中断控制器用于解码和分析优先级
  3. 直接存储器存取(DMA)
    • 前两种技术的不足

      • I/O传送速度受处理器测试和服务设备速度的限制•
      • 处理器负责管理I/O 传送,对于每一次I/O 传送,处理器必须执行很多指令
    • 直接存储器存取

      • 无需经过处理器即可直接访问内存的模块
    • 工作流程

      • 处理器通过发送以下信息向DMA 模块发出命令:读写、I/O 设备地址、内存中的起始位置、字数
      • 处理器继续进行其他工作
      • DMA模块将全部数据块,每次一个字,直接将数据传输到存储器或从存储器读出,而无需经过处理器
      • 当传输完成时,DMA 模块向处理器发送一个中断信号
      image-20231221100741641
    • 三种DMA内存访问方式

      1. CPU 停止法。DMA传输时,由DMA控制器发一个停止信号给CPU,使CPU脱离总线,停止访问主存,直到DMA传送一块数据结束。

        • 优点:控制简单
        • 缺点:影响CPUCPU,没有充分利用内存
        • 适用:高速I/O 设备的块传输
          a84370ae45e6e88013ce7b4d8624272
      2. 周期窃取。DMA传输时,CPU让出一个总线事务周期,让DMA控制器挪用一个主存周期来访问主存,传送完一个数据后立即释放总线。

        • I/O设备要求DMA传送时可能遇到两种情况:
          (1)此时CPU不需要访内,如CPU正在执行乘法指令。由于乘法指令执行时间较长,此时I/O访内与CPU访内没有冲突,即I/O设备挪用一二个内存周期对CPU执行程序没有任何影响。
          (2)I/O设备要求访内时CPU也要求访内,这就产生了访内冲突,在这种情况下I/O设备访内优先,因为I/O访内有时间要求,前一个I/O数据必须在下一个访问请求到来之前存取完毕。显然,在这种情况下I/O 设备挪用一二个内存周期,意味着CPU延缓了对指令的执行,或者更明确地说,在CPU执行访内指令的过程中插入DMA请求,挪用了一二个内存周期。 与停止CPU访内的DMA方法比较,周期挪用的方法既实现了I/O传送,又较好地发挥了内存和CPU的效率,是一种广泛采用的方法。但是I/O设备每一次周期挪用都有申请总线控制权、建立线控制权和归还总线控制权的过程,所以传送一个字对内存来说要占用一个周期,但对DMA控制器来说一般要2—5个内存周期(视逻辑线路的延迟而定)。因此,周期挪用的方法适用于I/O设备读写周期大于内存存储周期的情况。
        • 优点:充分利用CPU 和内存,及时响应I/O 请求
        • 缺点:DMA 每次都请求总线
        • 适用:I/O 周期大于存储周期
        8fb767730efd92b2472c33b63b133c6
      3. 交替分时访问。每个存储周期分成两个时间片,一个给CPU,另一个给DMA控制器,止痒子啊每个存储周期内,CPU和DMA控制器都可以访问存储器。

        • 假设CPU工作周期为1.2us,内存存取周期小于0.6us,那么一个CPU周期可分为C1和C2两个分周期,其中C1专供DMA控制器访内,C2专供CPU访内。
          这种方式不需要总线使用权的申请、建立和归还过程,总线使用权是通过C1和C2分时制的。CPU和DMA控制器各自有自己的访内地址寄存器、数据寄存器和读/写信号等控制寄存器。在C1周期中,如果DMA控制器有访内请求,可将地址、数据等信号送到总线上。在C2周期中,如CPU有访内请求,同样传送地址、数据等信号。事实上,对于总线,这是用C1,C2控制的一个多路转换器,这种总线控制权的转移几乎不需要什么时间,所以对DMA传送来讲效率是很高的。
          这种传送方式又称为“透明的DMA”方式,其来由是这种DMA传送对CPU来说,如同透明的玻璃一般,没有任何感觉或影响。在透明的DMA方式下工作,CPU既不停止主程序的运行,也不进入等待状态,是一种高效率的工作方式。当然,相应的硬件逻辑也就更加复杂。
        • 优点:CPU 未停止或等待,DMA 不请求总线
        • 缺点:CPU 周期大于存储周期
        • 参考文章: DMA方式_百度百科 (baidu.com)
        298786ce446f461744b3f5093827592
    • DMA配置机制

      1. 单总线分离DMA

        • 所有模块共享相同的系统总线
        • DMA模块使用编程式I/O,通过DMA 模块在存储器和I/O 模块之间交换数据
        • 便宜但低效
          image-20231221104048369
      2. 单总线集合的DMA I/O

      • DMA逻辑实际上可能是I/O 模块的一部分,也可能是控制一个或多个I/O 模块的单独模块
      • 减少总线周期数
        image-20231221104155508
      1. I/O 总线
        • 使用I/O 总线将I/O 模块连接到DMA 模块
        • 多个I/O 模块共享DMADMA,且易于扩展
        image-20231221104241900

I/O模块的演变

  1. CPU直接控制外设
  2. 增加控制器或I/O 模块,CPU 使用编程式I/O O,将CPU 与外围设备的细节分离
  3. 采用中断,CPU 无需花费时间等待外围设备就绪
  4. I/O模块可通过DMA 直接存取存储器,无需CPU 负责存储器和I/O 模块之间的数据传递
  5. I/O通道(I/O channel):I/O 模块有自己的处理器,带有专门为I/O 操作定制的指令集
    • CPU指示I/O 通道执行存储器中的I/O 指令,只有在执行完成后才会中断CPU
  6. I/O处理器(I/O processor):I/O 模块有一个局部存储器,I/O 模块成为一个自治的计算机,常用于与交互式终端进行通信
    • 只需最少的CPU 参与即可控制大量I/O 设备
  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值