第四单元 输入 /输出系统和设备
刘卫东
liuwd@tsinghua.edu.cn
教学内容安排
? 第一讲 输入 /输出系统概述和输入 /输出方

? 第二讲 总线
? 第三讲 接口电路
? 第四讲 输入设备和输出设备
? 第五讲 本单元小结及考试说明
第二讲 总线
2003年 12月
主要教学内容
? 总线概念
? 总线分类
? 总线组成
? 总线解决的问题
– 总线仲裁
– 通讯方式
? 总线举例
处理器和其他组成部分的接口
? 输入 /输出系统设计受到多方面因素的影响(可扩展性,可恢复性等)
? 性能,
—访问延迟
—吞吐量
—设备和系统的连接关系
—层次存储系统
—操作系统
? 用户和应用也各不相同
M a i n
m e m o r y
I / O
c o n t r o l l e r
I / O
c o n t r o l l e r
I / O
c o n t r o l l e r
D i s k
G r a p h i c s
o u t p u t
N e t w o r k
M e m o r y – I / O b u s
P r o c e s s o r
C a c h e
I n t e r r u p t s
D i s k
输入 /输出系统
? 设备用于人机交互
? 总线定义了交互的通
信协议 /标准,
– PCI
– EISA
– SCSI
– USB
– Bluetooth
– …
? 标准十分重要,
– 不同公司设计的外部设
备,应该能在同一计算
机上安装使用。
– 不同公司的计算机也应
该可以使用某一外部设
备。
– 外部设备的通讯速度差
异很大
– 标准是抽象的设计
– 标准可以影响性价比,
可靠性等
什么是 bus?
? 公共汽车:一种大众交通工具
? 一组导线
? 共同点, 多个使用者共享通道
计算机总线
? 共享的信息通道
? 用于连接计算机多个子系统(部件)
? 总线也是连接复杂巨系统的一种基本工具
– 功能抽象
Control
Datapath
Memory
Processor
Input
Output
例, Pentium 计算机的基本组成
Processor/Memory
Bus
PCI Bus
I/O Busses
使用总线的好处
? 解决外部设备, 杂, 的问题:
– 容易增添新的设备
– 使用相同总线标准的外设容易在不同计算机间
兼容
? 降低成本:
– 总线可供多个设备共享
? 简化设计
MemoryProcessor
I/O
Device
I/O
Device
I/O
Device
总线的劣势
? 容易成为信息通道的瓶颈
– 总线带宽限制了整条总线的吞吐量
? 总线的最高速度主要由下列因素决定:
– 总线长度
– 总线负载的设备数
– 负载设备的特性
? 延迟是否差异较大?
? 数据传输率差异较大?
MemoryProcessor
I/O
Device
I/O
Device
I/O
Device
总线的一般组成
? 控制线,
– 总线请求信号及数据接收信号
– 指明数据线上传输信息的类型
? 数据线 在源设备和目标设备间传送信息
– 数据和地址
– 复杂的命令
数据线
控制线
主设备和从设备
? 总线事务 包括两个部分:
– 发起命令 (和地址)
– 传输数据
? 主设备是总线事务的发起者:
– 发出命令(和地址)
? 从设备是总线事务的响应者:
– 若主设备发出的是读命令,则将数据发送到主设备
– 否则,接收主设备发来的写入数据
总线主设备 总线从设备
主设备发起传输动作
数据可双向传输
总线类型
? 处理器 -主存总线 (专用)
– 传输距离短、速度高
– 主存储器专用
? 保证主存储器 -处理器之间的高带宽
– 直接和处理器连接
– 优化处理使之适应 Cache块传送
? 输入 /输出总线(行业标准)
– 通常距离较长,速度较慢
– 需要适应多种输入 /输出设备
– 和处理器 -主存总线通过桥连接(或通过主板总线)
? 主板总线(行业标准或专门设计)
– 主板:连接各部件器件的底盘
– 应允许处理器、主存储器和输入 /输出设备互连
– 应有价格优势:所有组件连接在一条总线上
单总线计算机:主板总线
? 使用一条总线:
– 处理器和主存储器之间通信
– 主存储器和输入 /输出设备之间通信
? 优点:简单、成本低
? 缺点:速度慢,总线将成为系统瓶颈
? 应用,IBM PC – ISA EISA,PDP-1
处理器 主存储器
输入 /输出设备
主板总线
双总线系统
? 输入 /输出总线通过适配器和处理器 -主存总线相连:
– 处理器 -主存总线:主要用于处理器和主存储器之间的通信
– 输入 /输出总线:为输入 /输出设备提供信息
? 应用举例:
– Apple Macintosh II
? NuBus,处理器、主存和选定的少量 I/O设备
? SCSI总线:其余 I/O设备
处理器 主存
处理器 -主存总线
总线适配器
输入 /输出
总线
总线适配器 总线适配器
输入 /输出
总线 输入 /输出总线
三总线系统
? 主板总线连接到处理器 -主存总线
– 处理器 -主存总线主要用于处理器和主存之间数据交换
– I/O总线连接到主板总线
? 优点
– 大大减少处理器 -主存总线负载
? 例:现代 PC基本采用的结构
现代 PC总线
总线结构
一组导线
接口的物理 /机械特性
电气信号规范
时序和信号规范
事务协议
同步和异步总线
? 同步总线:
– 控制线中包含有一根时钟信号线
– 传输协议根据时钟信号制定:
? 例如:主设备提出总线请求后 5个时钟周期,可以获得能否使
用总线的信号。
– 优点:逻辑简单、高速
– 缺点:
? 总线上所有设备必须按时钟频率工作
? 为防止时钟信号扭曲,高速工作时,总线距离必须足够短
? 异步总线:
– 不使用统一的时钟
– 可适应设备的不同速度
– 不用担心时钟信号扭曲,距离可较长
– 使用握手协议
° ° °主设备 从设备
控制线
地址线
数据线
总线主设备:有能力控制总线,发起总线事务
总线从设备:响应主设备请求
总线通信协议:定义总线传输中的事件顺序和
时序要求
异步总线传输,控制信号(请求,应答)作为
总控信号
同步总线传输:使用共同的时钟信号
总线事务
? 仲裁
? 请求
? 传输
仲裁:获得总线使用权
? 总线设计中重要问题之一:
– 如何为需要使用总线的设备保留总线?
? 可通过主 —从设备的安排来避免冲突:
– 只允许总线主设备发起总线事务,控制所有总
线请求
– 从设备响应主设备的读写请求
? 最简单的设计:
– 处理器作为唯一的总线主设备
– 所有总线请求均由处理器控制
– 主要缺点:处理器被卷入到每一个总线事务中
总线主设备 总线从设备
控制信号:主设备发起总线事务
数据可双向传输
多个总线主设备
? 总线仲裁的基本要求:
– 某总线主设备使用总线前应发出总线请求
– 只有得到授权后,主设备才能使用总线
– 使用完毕后,主设备应通知仲裁器
? 总线仲裁器在以下两方面取得平衡:
– 优先权:优先级高的设备应该得到优先服务
– 公平性:最低优先级的设备也不能永远被排除在总线服
务之外
? 总线仲裁方式:
– 集中仲裁和分布仲裁
? 集中仲裁,例如,交通警察在路口指挥交通
? 分布仲裁,路口没有交通警察,所有车辆先停下,确认其他
方向没有来车后通行
– 按优先级仲裁或轮循仲裁
? 优先级仲裁:例如,救护车在道路上有高优先级
总线仲裁(续)
? 总线仲裁可以分为 4类,
– 菊链仲裁:所有设备共用一个总线请求信号
– 集中平行仲裁:通过集中的仲裁器进行
– 通过自我选择进行分布式仲裁:每个要使用总
线的设备将自己的标识放在总线上。
– 碰撞检测:以太网使用。
菊链仲裁
? 优点:简单
? 缺点:
– 无法保证公平性
低优先级设备可能得不到总线使用权
– 总线授权信号的逐级传递限制了总线的速度
Bus
Arbiter
Device 1
Highest
Priority
Device N
Lowest
Priority
Device 2
Grant Grant Grant
Release
Request
wired-OR
集中平行仲裁
? 用于几乎所有处理器 -主存总线和一些高
速输入 /输出总线
总线
仲裁器
设备 1 设备 N设备 2
授权 请求
最简单的总线模式
? 所有设备同步工作
? 所有设备以同样的速度工作
? => 简单的协议
– 只需管理源和目标
简单的同步协议
? 就是处理器 -主存储器总线也比它复杂
– 主存(从设备)需要响应时间
– 需要控制数据速度
BReq
BG
Cmd+AddrR/WAddress
Data1 Data2Data
典型的同步协议
? 从设备指示何时开始传送数据
? 实际传送开始后,按总线时钟传送数据
BReq
BG
Cmd+AddrR/WAddress
Data1 Data2Data Data1
Wait
典型的异步协议
1,主存储器收到外部设备发出的 ReadReq信号,从数据总线读
到地址,并发出 Ack信号。
2,外部设备发现 Ack信号为高 =>释放 ReadReq和数据
3,主存发现 ReadReq信号为低,将 Ack信号置低
4,主存读出数据后,将数据送总线,并将 DataRdy置高
5,外部设备发现 DataRdy为高,读数据,并发出 Ack信号
6,主存发现 Ack为高,将 DataRdy拉低,并释放数据线
7,外部设备发现 DataRdy为低,拉低 Ack信号,指示传送结束
D a t a R d y
A c k
D a t a
R e a d R e q 1
3
4
5
7
6
4
2 2
增加总线带宽
? 数据总线和地址总线分离
– 地址和数据可在一个总线周期内传输
– 代价,(a) 更多的数据线,(b)增加了复杂度
? 数据总线宽度
– 增加数据总线宽度,可用更少的总线周期传送相同的数

– 代价,更多的数据线
? 成组传送
– 允许总线在多个连续的周期传输多个字的信息
– 只需在传送开始时发送一次地址
– 仅在最后一个字传完毕后才释放总线
– 代价,(a)增加复杂度
(b) 降低了请求的响应时间
并行总线协议
CLK
data
addr
wait
Active
w_l
A d d r 1
R D A T A 1 W R D A T A 3X X X
A D D R 2
R D A T A 2
A D D R 3
在当前总线事务的数据传送阶段启动下一总线事务的地址传送
多主设备总线提高事务数量
? 仲裁重叠
– 在当前事务时,为下一总线事务进行仲裁
? 总线占用
– 在没有其他主设备请求总线的情况下,某主
设备一直占用总线,完成多个总线事务
? 地址、数据传送重叠
? 分时段 (或包交换 )总线
– 将地址时段和数据时段彻底分开
– 分别进行仲裁
– 地址段产生一个标记和数据段对应
? 在现代内存总线上,应用了上述全部技术
高速总线
? 例如
– 图形显示器
– 高速网络
? 限制设备数量
? 数据高速成组传送
? DMA方式
– 专用数据缓冲
PCI总线
? 外部组件互连总线
? 64位地址和数据线互用
? 主频 66MHz,带宽 528MB/s
PCI 总线的读 /写事务
? 所有信号在时钟正边沿采样
? 集中平行仲裁
– 和上一事务重叠
? 所有事务可无限制成组传送
? 地址段起始于 FRAME#信号有效
? 第一时钟周期主设备发出 cmd和 address
? 数据传送
– 当主设备准备好传输数据,主设备发出 IRDY# 信号
– 从设备准备好传输数据,发出 TRDY#信号
– 上述两个信号均有效时的时钟上升沿开始传送数据
? 主设备准备结束数据传送时,将 FRAME#信号
失效
PCI 总线读事务
PCI 写事务
PCI 优化
? 尽量使总线有效传输
– 可采用类似 RISC
? 总线占用
– 为上一主设备保留总线授权,直到有其他主设备申请
使用总线
– 得到授权的主设备可在不仲裁的情况下直接开始下一
传送过程
? 仲裁时长
– 主设备和从设备尽力延长传输流( 使用 xRDY)
– 从设备使用 STOP (abort or retry)信号终止连接
– 主设备通过 FRAME信号终止连接
– 仲裁器通过 GNT信号终止连接
? 延迟 (挂起,时段分离 )事务
– 对慢速设备,在请求后暂时释放总线
PCI 的其他问题
? 中断:
– 用于支持控制 I/O设备
? Cache一致性:
– 用于支持 I/O和多处理器
? 加锁:
– 支持分时操作,I/O和多处理器
? 可配置地址空间
总线参数选择
选择 提高性能 降低成本
总线宽度 将地址和数据线分开 互用地址和数据线
数据宽度 越宽越快( 32位) 越窄越廉价( 8位)
传送大小 多字可减少总线开销 单字传送简单
主设备 多主设备(仲裁) 单主设备
时钟 同步 异步
协议 并行 串行
Tec-2000的总线设计
? 内部总线 IB
– 发送往
? ALU,IR,ARH,ARL
– 接收到总线
? 指令寄存器低 8位,程序状态字,ALU输出,手拨开关,中断向量
? 外部总线 OB
– 主存储器、串口
? 地址总线:从 ALU接收地址
? 控制总线,MIO,REQ,W/R
? 仲裁方式
– 总控
? 输入 /输出方式