# 外设

  • 外设种类很多
  • 速度比 CPU 和 RAM 慢
  • 外设不直接与系统总线连接
  • 需要 IO 模块

# IO 模块

  • 与 CPU 和内存的接口
  • 与一个或多个外设的接口
  • I/O 模块化架构旨在提供控制与外部世界交互的系统方法,并为操作系统提供信息以有效管理 I/O 活动

# 外设模块图

1

# IO 模块

# IO 模块的功能

  • Control & Timing
  • CPU ~ I/O Communication
  • Device ~I/O Communication
  • Memory ~ I/O communication
  • Data Buffering
  • Error Detection

# IO 步骤

  • cpu 检查 io 模块的和设备状态
  • IO 模块返回状态
  • 如果 ready,cpu 请求数据传输
  • IO 模块从设备获取数据
  • IO 模块将信息传递给 CPU
    • 可编程 IO
    • 中断驱动 IO
    • DMA/Channel

# I/O Communication

  • 命令译码
  • 数据交换
    • 外部数据通过 local bus 传递给 IO buffer
    • IO buffer 通过系统总线传递给 CPU/memory
  • 状态报告
  • 地址识别

# data buffer

  • IO 模块重要功能
  • 使外设适应 CPU 或主存储器的速度
    • CPU/DRAM <–> I/O buffer
    • I/O buffer <–> peripherals

# 检错

包括硬件故障和软件故障

# IO 模块结构

2

# IO 模块决策

支持多个或单个设别

将设备属性隐藏或揭示给 CPU

控制设备功能 / 离开 CPU

# 编程式 IO

  • With programmed I/O, data are exchanged between the CPU and I/O modular
  • CPU has direct control over I/O in a program
    Sensing status
    Read/write commands
    Transferring data
  • CPU waits for I/O module to complete operation when it issues an I/O command Wastes CPU time

# 执行过程

  1. CPU 遇到一条 I/O 指令

  2. 它通过向 I/O 模块发送一个命令来执行它,并等待 I/O 模块就绪

  3. I/O 模块执行命令,然后在 I/O 状态寄存器中设置适当的位

  4. CPU 定期检查状态位,直到它发现操作完成

# IO commands

  • CPU 发送地址
    • Identifies module & device ( if >1 per module
  • CPU 发送四种命令
    • control,test,read/write

# IO 设备的地址

  • 在编程的 I / O 下,数据传输非常像内存访问(CPU 视角)
  • 每个设备都有唯一标识符
  • CPU 命令包含标识符(地址)

# IO mapping

  • 存储器映射式 memory-mapped

设备和内存共享地址空间

I/O 看起来就像存储器 read/write

没有针对 I/O 的特别命令

  • 分离式 isolated

单独的地址空间

需要 I/O 或存储器选择线

有 I/O 特殊命令:指令集不会太多

# 总结

  • 优点
    简单、处理器完全在控制中
  • 缺点
    轮询开销可能会消耗大量 CPU 时间
  • 解决方案
    使用异常机制来帮助 I/O。 I/O 就绪时中断程序,数据传输完成后返回

# Interrupt Driven I/O Basic Operation

CPU 发出读取命令,然后执行其他操作
I/O 模块从外设获取数据,而 CPU 执行其他工作
I/O 模块中断中央处理器
中央处理器请求数据
I/O 模块通过总线传输数据
最后,CPU 恢复以前的工作

# CPU viewpoint

  • 发出读取命令
  • 做其他工作
  • 在每个指令周期结束时检查中断
  • 如果中断:
    保存上下文(寄存器)
    进程中断
    获取数据和存储
    还原上下文
  • 继续以前的工作

# I/O module viewpoint

从 CPU 接收读取命令
检测外设的状态
从外设读取数据,将其放入寄存器
向 CPU 发出中断信号
等到 CPU 请求其数据
将数据放在数据总线上

# 处理中断

  • 多条中断线
    每个模块的不同生产线,限制设备数量
  • 软件轮询
    • CPU 通过中断服务子例程依次询问每个模块命令 + I/O 模块地址
      读取每个 I/O 模块中包含的可寻址状态寄存器
      CPU 分支到设备服务例程
    • 慢(耗时)
  • 菊花链或硬件轮询总线
    所有 I/O 模块共享一个公共中断请求行
    一旦 CPU 检测到中断,中断确认就会沿着链向下发送
    模块负责在总线上放置矢量(地址,id)
    CPU 使用矢量指向适当的设备服务例程
    称为向量中断
  • 仲裁(矢量)
    模块必须先声明总线,然后才能引发中断
    CPU 检测到中断,通过中断确认线响应。
    I/O 模块在数据总线上放置矢量
    例如 PCI 和 SCSI

# 多中断处理

对于多条线路,每条中断线都有一个优先级
优先级较高的行可能会中断优先级较低的行
使用软件轮询时,模块轮询的顺序决定了其优先级
使用菊花,雏菊上模块的顺序决定了它们的优先级

# DMA

# 概念

中央处理器外部
总线上的附加模块(硬件)
DMA 控制器接管 CPU 进行 I/O
将数据块传入或传出内存,无需 CPU 干预
事实上,DMA 也是一个 I/O 模块
在公共汽车上充当激射器
内存系统就像从属系统
管理字节字转换
优先级:DMA > CPU

# CPU 和 DMA 之间的三种数据传输模式:

  • 块传输模式(垄断模式)
    整个数据块以一个连续的序列传输
    如果 DMA 传输数据,CPU 将禁用一段时间,直到 DMA 释放总线
    用于将程序或数据文件加载到内存中
  • 周期窃取模式
    DMA 仅在 CPU 不需要总线或强制 CPU 暂时挂起操作时使用总线
    DMA 传输一字数据,然后释放总线
    DMA 交错指令和数据传输
  • 透明模式(备用模式)
    DMA 和 CPU 按除数时间使用总线多路复用
    需要最多时间,但效率最高

# DMA 结构

3

# DMA 操作

  • 预处理:CPU 告诉 DMA 控制器
    读 / 写
    设备地址
    数据内存块起始地址
    要传输的数据量
    CPU 继续进行其他工作
  • 数据传输:DMA 控制器处理传输(逐字)
  • 后处理:DMA 控制器完成后发送中断
    4

# DMA 传输周期窃取

  • DMA 控制器接管总线一个周期
  • 传输一个字的数据
  • 不是中断
    CPU 不切换上下文
  • CPU 在访问总线之前挂起
    即在操作数或数据获取或数据写入之前
  • 降低 CPU 速度,但不如 CPU 进行传输

# DMA 三种结构

5
5
5

# I/O Channels

I/O 通道是一个 I/O 模块,具有自己的处理器,可以执行 I/O 程序
I/O 程序位于主内存中
I/O 通道能够通过执行 I/O 程序来控制整个 I/O 操作
CPU 和内存←→通道←→IO 模块←→外围设备
事实上,I/O 通道代表了 DMA 概念的扩展。

# IO 通道的功能

从中央处理器接收命令
从内存加载 I / O 程序,然后解码每个指令并将命令发送到设备
缓冲、控制和传输数据,提供传输路径
报告设备状态或中断

# 工作原理

主 CPU 发送 I/O 命令并等待通道和设备准备就绪
通道数
设备数量
频道节目录入
数据大小
主控 CPU 启动通道并返回主程序
通道执行 I/O 程序以在内存和设备之间传输数据
数据传输完成后,中断 CPU

# I/O 通道的类型

信道容量 / 数据传输速率
每单位通道时间传输的最大数据
选择器通道
在任何时候,只选择一个设备来传输数据
高速设备

# 多路复用器通道

  • 字节多路复用器通道
    设备之间的循环
    对于设备,仅传输一个字节的数据
    用于低速设备
  • 块多路复用器通道
    设备之间的循环
    对于设备,传输的 K 字节数据

# I/O 功能的演变

  • CPU 直接控制外设
  • 添加了控制或 I/O 模块
    编程 I/O
  • 中断驱动的 I/O
  • DMA
    设备–内存
  • I/O 通道
    I/O 处理器,无本地内存
  • I/O 处理器
    I/O 处理器 + 本地内存

# 连接设备

  • 点对点
    I/O 模块和外部设备之间的专用线路
    例如键盘、打印机、调制解调器等。
  • 点到多点
    外部总线
    外部大容量存储
    多媒体设备(光盘、视频、音频)
    FireWire & InfiniBand

# 串行或并行

打印机、鼠标、键盘等
磁盘、磁带等

# 从 I/O 模块到外设的写入操作

I/O 模块发送控制信号,请求发送数据的权限
外设确认请求
I/O 模块传输数据
外设确认收到数据

# 小型计算机系统接口 (SCSI)

用于 CD-ROM 驱动器、音频设备、外部大容量存储设备的标准接口
并行接口
8、16、32 位数据线
菊花链式本地总线,连接到 PCI
设备是独立的
设备可以相互通信以及主机

# firewire

高性能串行总线,带简单连接器,单端口上最多 63 个设备
菊花链或树结构
热插拔,自动配置

成本低,易于实施
也用于数码相机、录像机和电视

# firewire 3 层协议

  • 物理的
    传输介质、电气和信号特性
    数据速率从 25 到 400Mbps
    仲裁:优先权
  • 链接
    数据包中的数据传输
    两种传输类型:
    异步
    等时的
  • 交互
    请求 - 响应协议

# 词汇

  1. Cycle stealing: 周期窃取

  2. Interrupt: 中断

  3. Isolated I/O: 分离式 I/O

  4. Memory-mapped I/O: 存储映射式 I/O

  5. Multiplexor channel: 多路转换通道

  6. Parallel I/O: 并行器 I/O

  7. Peripheral device : 外围设备

  8. Selector channel: 选择通道

# keypoint

Functions of I/O Module?
I/O module structure
Input Output Modes
DMA &channel
SCSI
Firewire

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

小春日和 微信支付

微信支付

小春日和 支付宝

支付宝

小春日和 wechat

wechat