少女祈祷中...

输入输出

外围设备:简称为外设,提供了在外部环境和计算机系统之间的数据交换

  • 人可读设备:显示器、打印机
  • 机器可读设备:磁盘、磁带
  • 通信设备

外设不可以直接连接到总线上:种类繁多、数据传送慢、数据格式和字长度不同

I/O模块

  • 通过系统总线或中央交换器和存储器连接
  • 通过专用数据线与一个或多个外设连接

I/O模块是计算机内部系统和外设之间的桥梁

外围设备的接口

输入/输出模块的接口以控制、状态和数据信号的形式出现

缓冲器用于缓存输入/输出模块和外设之间传送的数据

I/O模块的功能

1、处理器通信(与位于内部的组件通信)

  • 命令译码:输入/输出模块从控制总线接收来自处理器的命令
  • 状态报告:以知道输入/输出模块的状态
  • 数据:在处理器和输入/输出模块之间经由数据总线来交换
  • 地址识别:识别它所控制的每个外设的唯一地址

2、设备通信(与位于外部的设备通信)

  • 通信内容包含命令、状态信息和数据

3、数据缓冲

  • 外设的数据传输速度比一般存储器慢得多(有些快得多)

4、控制和定时

需要控制定时的原因:

  • 处理器会非预期的与外设进行通信
  • 一些内部资源,如主存和系统总线,是被共享的

控制从外设到处理器的数据传送的步骤:

  • 处理器查询输入/输出模块以检验所连接设备的状态
  • 输入输出模块返回设备状态
  • 设备准备就绪时,处理器向输入输出模块发出一条命令请求数据传送
  • 数据经输入/输出模块传送数据到处理器

5、检错

  • 检错并把差错信息报告给处理器(包括机械电路故障、数据位变化等)

I/O模块的结构

外部接口

  • 并行接口:多根线连接输入/输出模块和外设,同时传送多位数据
  • 串行接口:只有一根线用于传输数据,每次只传输一位数据

并行接口下,传输速度和总线长度增加时,总线的时钟频率会受到限制(需要每次都同时传送)

FireWire:IEEE标准1394串行总线

USB:通用串行总线

I/O操作技术

  • 编程式I/O:处理器发送命令到I/O模块时,它必须等待直到I/O操作完成
  • 中断驱动式I/O:处理器发送命令后继续执行其他指令,当I/O模块完成工作后才去中断处理器工作
  • 直接存储器读取:I/O模块不需要处理器的干涉,与主存直接交换数据

编程式I/O

处理器发送指令到适当的I/O模块,处理器周期性检查I/O状态寄存器中的状态,直到发现该操作完成

CPU全程100%投入

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模块读取数据字并保存到主存中
  • 然后处理器恢复刚刚程序正在运行的现场,继续原来的程序

中断禁止和中断允许

在处理器保存状态时,处于中断禁止状态;保存完状态开始处理中断后,就中断允许了。处理完中断恢复状态时也是中断禁止。

响应优先级和处理优先级:

开始第一次处理或结束一个中断处理并开始第二个中断处理时,看的是响应优先级。当在中断过程中发生新的中断时,看的是当前存在的未被处理的所有中断的处理优先级(也许发生新的中断的和实际改变而前去处理的中断不是同一个中断)

例子:假设中断系统中有4个中断源,其响应优先级为L1>L2>L3>L4,处理优先级为L1>L4>L3>L2。如果在主程序执行时同时发生L1、L3和L4中断,并且在处理L3中断的过程中发生L2中断,写出掩码字和所有中断服务程序的过程。

设备识别

  • 多条中断线:处理器仅仅挑选具有最高优先级的中断线
  • 软件轮询:模块的轮询次序就决定了模块的优先级
  • 菊花链:链接模块次序就决定了模块的优先级
  • 独立请求:中断控制器决定

直接存储器存取(DMA)

前两种技术的不足

  • I/O传送速度受处理器测试和服务设备速度的限制
  • 每一次I/O传送,处理器必须执行很多指令

直接存储器存取:无需经过处理器即可直接访问内存的模块

  • 处理器向DMA发出命令后继续进行其他工作
  • DMA将全部数据块直接传输到存储器或从存储器读出,每次一个字,无需经过处理器
  • 传输完成时,DMA模块向处理器发出一个中断信号

DMA内存访问

CPU停止法

DMA需要数据传输时,暂停CPU的数据传输,其中DMA的数据传送连续不间断

  • 优点:控制简单
  • 缺点:影响CPU,没有充分利用内存
  • 适用:高速I/O设备的块传输

周期窃取

DMA需要传输数据时,每隔几个存储周期就暂停CPU的传输并自己传输一个周期

  • 优点:充分利用CPU和内存,及时响应I/O请求
  • 缺点:DMA每次都请求总线
  • 适用:I/O周期大于存储周期

交替分时访问

每个时钟周期的后半部分分给DMA进行传输

  • 优点:CPU未停止或等待,DMA不请求总线
  • 缺点:CPU周期大于存储周期

DMA配置机制

单总线分离DMA

所有模块共享相同的系统总线,DMA模块使用编程式I/O,

单总线集合的DMA-I/O

DMA逻辑可能是I/O模块的一部分,也可能是控制一个或多个I/O模
块的单独模块

I/O总线

使用I/O总线将I/O模块连接到DMA模块

I/O模块的演变

CPU直接控制外设->增加控制器或I/O模块,CPU使用编程式I/O->采用中断->I/O模块可通过DMA直接存取存储器->I/O通道(I/O channel):I/O模块有自己的处理器,带有专门为I/O操作定制的指令集->I/O处理器(I/O processor):I/O模块有一个局部存储器,I/O模块成为一个自治的计算机,常用于与交互式终端进行通信