Download - 第十章 输入输出结构
1
第十章 输入输出结构
10.1 异步数据传输10.2 可编程 I/O10.3 中断10.4 直接存储器访问10.5 I/O 处理器10.6 串行通信10.7 实例:串行通信标准
同济大学 软件学院
2
输入 /输出设备通过系统的地址总线、数据总线、控制总线和 CPU 相连(如图 10.1 )
图 10.1 CPU 与 I/O 设备的连接
10.1 异步数据传输
3
1. I/O 接口的基本功能
(1) 实现主机和外设之间的数据传送控制。
如同步控制、设备选择、中断控制和 DMA 控制
(2) 实现数据缓冲,以达到主机与外设之间的速
度匹配。
(3) 接受主机的命令,提供设备接口的状态,并
按照主机的命令控制设备。
4
2. I/O 接口类型
( 1)按照数据传送的宽度可分为
并行接口和串行接口
( 2)按照数据传送的控制方式可分为
直接程序控制、程序中断、 DMA
通道、外围处理机
( 3)按照时序控制方式可分为
同步接口和异步接口
5
3. 根据是源还是目的设备启动传送以及是否用
握手,异步数据传送可分为四种
◆ 不带握手的源启动数据传送
◆ 不带握手的目的启动数据传送
◆ 带握手的源启动数据传送
◆ 带握手的目的启动数据传送
6
10.1.1 不带握手的源启动数据传送
源设备输出数据
选通一个控制信号并维持一段时间
目的设备读入数据
源设备使控制信号和数据无效
图 10.2 不带握手的源启动数据传送 ( a )时序
7
实现源数据传送更新 LED 的电路如图 10.2 ( b)
图 10.2 不带握手的源启动数据传送 : ( b )实现
8
10.1.2 不带握手的目的启动的数据传送
目的设备传输选通信号给源设备
一段时间后源设备使数据有效,并将数据稳定一段时间
目的设备读入数据后置数据选通信号无效
源设备停止传输有效数据
图 10.3 不带握手的目的启动数据传送 ( a )时序
9
实现目的数据传送更新 LED 的电路如图 10.3 ( b)
图 10.3 不带握手的目的启动数据传送:( b )实现
10
10.1.3 握 手
不带握手的数据传送无需确认数据收到, 适合于在规定的时间内传送。 当每次传送所花费的时间不同时,设备可 采用握手方式来协调数据传送。
11
◆ 带握手的源启动数据传送
源设备置数据请求信号为高,然后使有效数据可用
数据稳定后,目的设备读取此数据
目的设备读完数据,就发送一个数据确认信号给源设备
源设备停止传输有效数据,目的设备复位数据确认信号
图 10.4 带握手的源启动数据传送 ( a )时序
12
图 10.4 带握手的源启动数据传送:( b)实现
13
◆ 带握手的目的启动数据传送
目的设备传输一个数据选通信号,源设备使有效数据可用
数据稳定后,目的设备读取此数据
目的设备读完数据,就发送一个数据准备就绪信号给源设备
源设备停止传输有效数据,目的设备复位数据准备就绪信号
图 10.5 带握手的目的启动数据传送 ( a )时序
14
图 10.5 带握手的目的启动数据传送:( a)时序和( b)实现
数据请求
数据准备就绪
15
◆ 可编程 I/O ( programmed I/O )用指令编程来控制 CPU 输入或输出数据。
◆ 可编程 I/O 的特点
10.2 可编程 I/O
• 何时何地进行输入 /输出完全受 CPU 控制;
• 数据的输入输出都要经过 CPU ;
• 用于连接低速外围设备。
16
独立编址 有专门的指令访问 I/O 端口。 存储器编址 把 I/O 端口视为存储器的一个单元,采用 存储器存取指令即可访问它们。
◆ 可编程 I/O 的编址方式
17
相对简单 CPU ,其结构不能采用独立的 I/O 方式,但可利用存储器编址 I/O 方式。 例:执行指令 LDAC FFFF 为了实现此 I/O 端口,设计硬件如图 10.6 。
图 10.6 地址为 FFFFH 的输入端口
当地址总线上的值为 FFFFH ,控制信号READ=1 时,三态缓冲器才选通
18
修改相对简单 CPU 以支持独立的 I/O 方式:
◆ 必须在 CPU 指令集中增加输入、输出指令; ◆ 产生必要的新控制信号; ◆ 在状态图中增加新状态; ◆ 开发 RTL 代码支持新状态; ◆ 修改寄存器、 ALU 和控制单元硬件来支持新的指令。
19
1. 增加两条新指令 一条输入数据 一条输出数据
指令 指令码 操作
INPT 0010 0000Γ AC←输入端口 Γ
OTPT 0010 0001Γ 输出端口 Γ←AC
表 10.1 相对简单 CPU 的独立 I/O 指令
20
2. 增加一个新控制信号 IO IO=1 时为 I/O 操作, IO=0 时为存储器操作 3. 新状态与 RTL 代码
图 10.8 实现 INPT 指令执行周期的状态
INPT1 : DR←M, PC←PC+1 ,
AR←AR+1INPT2 : TR←DR , DR←M, PC←PC+1INPT3 : AR←DR , TRINPT4 : DR←输入端口INPT5 : AC←DR
21
4 . 硬件的修改 ( 1)修改寄存器( 2)修改 ALU( 3)修改控制单元
图 10.9 产生 INPT 执行周期的状态信号的硬件
22
◆ 计数器控制信号修改 INC= ( INC 原有值)∨ INPT1∨ INPT2∨
INPT3∨ INPT4 CLR= ( CLR 原有值)∨ INPT5
◆ 组合 INPT1 状态所需进行的修改 DRLOAD= ( DRLOAD 原有值)∨ INPT1 MEMBUS= ( MEMBUS原有值)∨ INPT1 PCINC= ( PCINC 原有值)∨ INPT1 ARINC= ( ARINC 原有值)∨ INPT1◆ 设定为 IO=INPT4 存储器读 =READ ∧ IO
23
直接程序控制方式可分为两种传送方式:( 1)直接传送方式 CPU 在控制与外设之间的数据传送之前,不需了解
外设的工作状态,即可直接执行 I/0 指令,实现数据传送。
直接传送方式无需查询设备的任何状态,也无需考虑同步问题。也称为无条件传送方式。多用于 I/0 操作时间固定且已知的情况下。
24
( 2)程序查询方式
◆ CPU向 I/O 设备发传送数据的请求信号。
◆ I/O 设备处理该请求,当其准备传送数据时, 就置位设备准备就绪信号。
◆ CPU 通过另一个 I/O 地址读此信号并检查其值。 如果信号置位, CPU 执行数据传送。如果未置 位,则循环等待,继续读取并检查设备准备就
绪信号的值。
25
例:考察相对简单 CPU 的一个输入设备 ( 1) 输入 /输出指令 INPT ( AC←INPUT PORT Г) OTPT ( OUT PORT Г←AC)
( 2)设备有三个 I/O 端口:两个输入、一个输出。 输出端口: 1001H中输出 01H值,启动一个请求。 输入端口: 1002H(查询该端口直至其最低位置
1) 1000H(从中读取数据)
26
图 10.10 采用查询方式实现 I/O 端口的硬件
输出端口: 1001H中输出 01H值,启动一个请求。输入端口: 1002H(查询该端口直至其最低位置 1) 1000H(从中读取数据)
27
CLAC
INAC (AC←1)
MOVR (R←1)
OTPT 1001H ( 01H → address 1001H)
LOOP: INPT 1002H (Check whether the device is ready)
AND (AC=1 and Z=0 if device is ready)
JMPZ LOOP
(If device not ready , AC=0 and Z=1,loop back)
INPT 1000H (Device is ready , input data)
28
◆ 中断 中断是由 I/O 设备或其他非预期的急需
处 理的事件引起的,它使 CPU暂时中断现在正在 执行的程序,而转至另一服务程序去处理这 些事件。处理完后再返回原程序。
10.3 中 断10.3.1 CPU 和 I/O 设备之间的数据传送1. 解决 I/O 设备变化延迟 ◆ 查询
29
(5) 实现实时处理;(6) 实现应用程序和操作系统的联系;(7) 多处理机系统各处理机间的联系。
2. 中断输入输出方式的特点
(1) CPU 与 I/O 并行工作; (2) 硬件故障处理; (3) 实现人机对话; (4) 实现多道程序和分时操作;
30
10.3.2 中断类型 ◆ 外部中断 CPU 采用外部中断与输入 /输出设备进行交互。
◆ 内部中断 内部中断完全发生在 CPU 内部,没有任何 输入 /输出设备介入。 ◆ 软中断
由 CPU 指令集中的特定中断指令产生。
31
10.3.3 中断处理 1. 中断源 引起中断的事件或者发出中断请求的
来源。 2. 中断源如何提出请求? (1) 中断请求信号的建立 ◆ 中断触发器 每个中断源对应有一个中断触发器。 ◆ 多个中断触发器构成中断寄存器,其内容称 为中断字或中断码。
32
(2) 中断请求信号的传送
三种方案:
◆ 单独设置中断请求线
快速响应、中断请求线数目有限
◆ 一根公共中断请求线
◆ 兼有公共请求线与独立请求线
将中断源分级或分组
(3) 中断响应信号
33
3. 中断的优先级
设计中断系统时,应将全部中断源按中断
性质和处理的轻重缓急进行排队并给以优先级。
(1) 优先级
指多个中断发生时,对中断响应的次序。
(2)判优的实现
◆ 软件查询
◆ 中断排队逻辑
34
4. 中断的允许与禁止 ◆ 中断允许 中断源有中断请求信号就可使其对应的 中断触发器置“ 1”状态或参加排队判优。 ◆ 中断禁止 中断源即使有中断请求信号也不能使其 对应中断触发器置“ 1”状态或不允许参加排 队判优。5. 中断服务程序:处理中断工作的服务软件。
35
6. 中断处理过程(中断响应与中断处理) 从某一个中断源发出中断服务请求,到这个
请求全部处理完成所经过的主要过程。 (1) 中断查询 CPU 在一条指令周期内要查询一次是否有中 断产生。 (2) 中断响应
◆ 关中断 ◆ 保存断点 ◆ 转入中断服务程序
36
获取中断服务程序地址: ◆ 向量中断 中断向量:中断服务程序的入口地址以及 程序状态字的合称。
程序状态字 PSW:用来表征处理机运行程序的状态。
一般应包含如下内容:
程序屏蔽码 程序运行状态 条件码 中断码 指令计数器
37
编 码
38
◆ 非向量中断 CPU 在响应中断时只产生一个固定的地址,该 地址是中断查询程序的入口地址, CPU转去执行查 询程序,通过软件查询确定中断源,然后执行相应 的中断服务程序。 查询程序:又称中断总服务程序。
39
(3) 执行中断服务程序 ◆ 保存现场 ◆ 开 CPU 中断 ◆ 执行中断服务程序 ◆ 关 CPU 中断 ◆ 恢复现场 ◆ 恢复屏蔽码 ◆ 恢复 PSW、 PC ◆ 开 CPU 中断 ◆ 返回断点
40
10.3.4 中断硬件和优先级 1. 单个设备的简单系统 ◆ 非向量中断
图 10.11 单个设备的非向量中断( a)硬件
( b)时序
41
◆ 向量中断
图 10.12 单个设备的向量中断
( a)硬件 ( b)时序
42图 10.13 多个非向量中断的硬件
每个设备均有自己的 IRQ和 IACK信号
他们的优先级是预定的 , IRQn优先级最高
CPU首先响应和服务优先级最高的中断
2. 多个设备的系统 ◆ 非向量中断
43
◆ 向量中断 菊花链:用于多中断优先权排队的一种方法。
图 10.14 菊花链
简单易实现 便于扩充 延迟大
44
并行优先权排队 通过一个优先权编码器采用并行优先权排队( parallel priority)方式实现向量中断 ,减少延迟。 扩展困难。
菊花链将引起硬件延迟,特别是当链较长时,延迟就更大。
45
图 10.15 并行方式实现优先级中断
防止干扰信号
46
10.3.5 多重中断处理
多重中断是指在处理某一中断过程中又发生了新的中断,从而中断该服务程序的执行,又转去进行新的中断处理。这种重叠处理中断的现象又称中断嵌套。◆ 中断响应次序与中断处理次序 中断响应次序是由硬件排队判优线路决定的,不能改变,而中断处理次序可由屏蔽码决定,是可以改变的。 中断处理次序可以不同于中断响应次序。
47
k+1 l+1 m+1
k l m
目的程序三级中断处理程序
二级中断处理程序
一级中断处理程序
48
例如:某计算机的中断系统有 4级中断优先级,每级对应一个屏蔽码,下表为程序级别和屏蔽码的关系,中断响应次序和处理次序一致,均为: 1 → 2 → 3 → 4
49
程序级别
第 1 级
第 2 级第 3 级
第 4 级
1 级 2 级 3 级 4 级
屏蔽码
0
1
1
1
0
0
1
1
0
0
0
1
0
0
0
0
50
按照这一次序可以看到 CPU运动的轨迹,如下图。
正常程序
中断服务程序
1
2
3
1
2 14
4
3 2
51
程序级别
第 1 级第 2 级第 3 级第 4 级
1 级 2 级 3 级 4 级屏蔽码
0
1
1
1
0
0
0
0
0
1
0
0
0
1
1
0
中断处理次序改为: 1 → 4 → 3 → 2
52
正常程序
中断服务程序
1
1
2
3
4
23
421
53
10.3.6 CPU 内部实现中断
例:相对简单 CPU 处理中断的过程 ◆ 添加一个 IRQ输入引脚,其响应信号传至 IACK输出引脚 ◆ 添加新指令 ◆ 识别中断并访问此中断处理的状态 ◆ 访问中断服务程序
IE:中断允许触发器
IP:中断触发器
54
指令 指令码 操作LDSP 10000000Γ SP←Γ
CALL 10000010ΓSP←SP-1;M[SP]←PC[15..8],SP←SP-1;M[SP]←PC[7..0],PC←Γ
RET 10000011PC[7..0]←M[SP],SP←SP+1;PC[15..8]←M[SP],SP←SP+1
PUSHAC 10000100SP←SP-1;M[SP]←AC
POPAC 10000101 AC←M[SP],SP←SP+1
PUSHR 10000110SP←SP-1;M[SP]←R
POPR 10000111 R←M[SP],SP←SP+1
IESET 0100 0000 IE←1
IERST 0100 0001 IE←0
IPRST 0100 0010 IP←0
表 10.3 相对简单 CPU 的新指令
55
1. 识别中断并访问此中断处理的状态
方法一
方法二
图 10.16 两种访问中断服务程序的方法( b )修改 FETCH1 支持中断
( a )采用分离的 FETCH1 状态和 INT1 状态
(IE′ IP′) FETCH1 ∨ ∧IE IP FETCH1∧ ∧
56
2. 访问中断服务程序(部分)
INT1 : AR←SP
INT2 : DR←PC[15..8] , SP←SP-1
INT3 : M←DR , AR←AR-1 , SP←SP-1
INT4 : DR←PC[7..0]
INT5 : M←DR
INT6 : DR← (数据总线来的向量)INT7 : PC←1111,DR,0000 , IP←0
返回地址压入堆栈
57
DMA是高速 I/O 设备与主存之间由硬件组成的直接数据通路,能成组传送数据。 数据传送是在 DMAC 控制下进行的,在数据传送前和结束后要通过程序或中断方式进行预处理和后处理。
10.4.1 将直接存储器访问 DMA 纳入计算机系统
10.4 直接存储器访问
58
图 10.17 带有 DMA 的计算机系统
59
DMA 控制器 CPU
置 BR=1, 发送总线请求
置 BG=1, 发送总线允许
60
1. DMA 内部结构
图 10.18 DMA 控制器的内部结构
61
2. DMA 控制器内的寄存器组 ◆ DMA 地址寄存器
存贮数据传输过程中需用到的存储器地址
◆ DMA 计数寄存器 保存传输数据的字节数
◆ DMA 控制寄存器 从 CPU 中接受命令
◆ 状态寄存器 向 CPU 提供信息
62
3. DMA 控制逻辑 ◆ 完成 DMA 的初始化 ◆ 接收设备送来的 DMA 请求信号 ◆ 向设备控制器回答 DMA允许信号 ◆ 向系统申请总线 ◆ 控制总线实现 DMA 传输控制 ◆ 中断控制逻辑
63
10.4.2 DMA 传输方式
◆ 突发方式 在突发方式中,整个数据块连续传输。 控制简单,适合高速外设的成批数据传送 CPU较长时间不能访存
CPU 使用内存DMA 使用内存内存工作时间
CPU CPUDMA 操作
64
◆ 周期窃取方式连续地获取和放弃系统总线控制权来传输。 充分发挥 CPU 和 I/O 设备的利用率 判优操作和总线切换操作频繁, 花费的时间开销大。
CPU 使用内存DMA 使用内存内存工作时间
CPU
DMA
CPU CPU
DMA
CPU CPU
DMA
65
◆ 透明方式 DMA 利用空闲时间传输数据。
CPU 使用内存DMA 使用内存内存工作时间
CPU CPU
DMA
CPU CPU
DMA
CPU 不停止执行程序 系统总线的硬件复杂、昂贵
CPU
DMA
CPU 不需要访存
66
10.4.3 DMA 控制方式下的数据传送过程 三个阶段
◆ DMA 传送前预处理 ◆ 数据传送 ◆ 传送后处理 1. DMA 传送前预处理 在进行 DMA 数据传送之前要用程序做一些 必要的准备工作。
67
DMA 控制器初始化 I/O 设备控制器初始化 启动设备
2. 数据传送 DMA 控制器控制完成数据传送工作,传送 结束向 CPU 发中断请求信号。3. 传送后处理 CPU响应中断,转去执行中断服务程序, 进行结束处理工作。
68
10.4.4 修改 CPU 使其与 DMA 共处 1. 为了使 CPU 能与 DMA 控制器共同工作 ◆ 增加控制输入信号 BR和控制输出信号 BG ◆ 产生 BG的逻辑电路 2.CPU 允许在以下状态接受 DMA 的请求 取指令后、译码后、取操作数后、 指令执行完后、结果保存后
69
3. 修改相对简单 CPU
在取指令周期开始处理 DMA 请求 (1) 对 BG的操作
BR∧FETCH1 : BG←1 BR’∧FETCH1 : BG←0,( FETCH1 的微操
作) 两条合并: FETCH1 : BG←BR BR′∧FETCH1 : ( FETCH1 的微操作) (2) 实现 BG的硬件 (3) 状态图所需的修改
70
图 10.19 BG的硬件实现
图 10.20 修改状态图接纳 BR 和 BG
71
I/O 处理器 与 CPU 交互,处理由 I /O 设备读出后数据可连接多个 I/O 设备 I/O 设备连接至 I/O 总线上,而不是系统总线上
10.5 I/O 处理器
72
图 10.21 带 I/O 处理器的系统结构
73
CPU 向 I/O 处理器发送一系列 I/O 指令,而不象处理 DMA 那样将值存于寄存器中,指令分为三类:
1.块传送命令
2. 执行算术、逻辑、和分支操作的命令
3. 控制命令
传输数据块 ,类似于 DMA 数据块传输
有助于处理数据以便使数据能为 CPU 所用
通常是硬件相关并对计算机系统功能的正确发挥十分关键
74
一个 I/O 处理器的系列命令能执行许多连续的 I/O 传送,考虑以下任务:
1 、从端口地址 9000H 的磁盘驱动器处读取 247 字节的数据,写入起始地址为 1000H 的存储器中;
2 、从地址为 9001H 的输入端口读取 1 字节数据写入 CPU 的累加器中;
3 、将内存单元 2000H 至 207FH 的内容写至 I/O 地址为 9002H的打印机上。
带 DMA 控制器而没有 I/O 处理器的系统首先将数据写入 DMA 控制器的寄存器中,并启动传输,等待它完成。然后它从地址为 9001H 的 I/O 端口输入 1 字节数据。最后为打印数据块启动第二个 DMA 传送。而在带 I/O 处理器的系统中, CPU 将执行三个任务所需的命令写入存储器的一个连续块中,并将块的指针给 I/O 处理器,从而减少了建立传输的开销。
75
并行通信:同一时间内传输多位数据 DMA 控制器和 I/O 处理器都采用并行通信
串行通信:在给定的时间内不能传输多位数据,传输数据要通过并串转换
打印机、 MODEM 等通过串口与 CPU 通信
异步串行通信:连接的设备不共用同一时钟并且需同时传输数据
同步串行传输 :以帧( frame )的形式传输数据块,帧中包括传输信息头、数据和传输信息尾
10.6 串行通信
76
10.6.1 串行通信原理
两个设备采用异步串行传输通信时,他们不共用同一时钟。必须采用许多措施同步数据流因而事先就一些传输参数达成一致
速度:比特 /秒 -----每秒位数奇偶校验位 起始位 停止位
一些基本参数
77
图 10.22显示了传输两字节数据及其传输间隔中传输线的值,此系统采用许多调制解调器传输时的典型设置 N81 :即没有奇偶位、八位数据位和一位停止位
图 10.22 两字节数据的传输实例
1 2 3 4 5 6 7 8
开销达到整个传输的 20%
78
字符数据如需按位操 ,必须将每个字符编码
美国信息交换标准码( 128 字符)前 32 个字符为控制代码 剩下的字符为打印字母、数字和符号
扩展 ASCII
Unicode
79
同步传输 通过减少开销来改善传输性能。它不给每个数据送起始位和停止位,而是将几个数据合成一个数据块,并在此数据块前和尾添加适当信息以形成一帧数据
高级数据链路控制
图 10.23 高级数据链路控制的帧格式
检查传输中错误
80
10.6.2 通用异步收发器( UART )
通用异步收发器
10.24 带 UART 的计算机系统
81
图 10.25 UART 的内部结构
82
第十章 输入输出结构
10.1 异步数据传输10.2 可编程 I/O10.3 中断10.4 直接存储器访问10.5 I/O 处理器10.6 串行通信10.7 实例:串行通信标准
83
10.7.1 RS-232-C标准传输速度可达 115,200bps ,包括 9 个信号如下
请求发送清除发送发送数据数据终端准备就绪数据设备准备就绪接收数据载波检测振铃指示接地
84
10.7.2 通用串行总线标准 USB
四种类型包记号包:指明传输方(或帧产生者)的地址
和端点数据包:包括传输到设备或从设备来的数据握手包:传递用于协调数据传输的信息专用包:还有一些具有许多不同功能的
85
图 10.26 USB 包格式:( a )记号包,( b )数据包,( c )握手包
86
计算机可采用带握手或不带握手、源或目的启动的异步数据传输执行交互。计算机也可用存储器编址方式或独立编址方式的可编程 I/O 与 I/O 设备通信。这些方式中, CPU 必须有逻辑电路去访问 I/O 设备和处理指令集中的 I/O 指令。
中断是计算机用于与 I/O 设备交互的有效方法。系统可以有多个中断,多个中断可采用菊花链或并行优先权硬件进行优先级排队。
直接存储器访问可提高存储器与 I/O 设备之间的数据传输速度
串行通信用于在计算机与外部设备之间每次传输一位数据