860 likes | 1.02k Views
第十章 输入输出结构. 10.1 异步数据传输 10.2 可编程 I/O 10.3 中断 10.4 直接存储器访问 10.5 I/O 处理器 10.6 串行通信 10.7 实例:串行通信标准. 同济大学 软件学院. 10.1 异步数据传输. 输入 / 输出设备通过系统的地址总线、数据总线、控制总线和 CPU 相连(如图 10.1 ). 图 10.1 CPU 与 I/O 设备的连接. 1. I/O 接口的基本功能 实现主机和外设之间的数据传送控制。 如同步控制、设备选择、中断控制和 DMA 控制
E N D
第十章 输入输出结构 10.1 异步数据传输 10.2 可编程I/O 10.3 中断 10.4 直接存储器访问 10.5 I/O处理器 10.6 串行通信 10.7 实例:串行通信标准 同济大学 软件学院
10.1 异步数据传输 输入/输出设备通过系统的地址总线、数据总线、控制总线和CPU相连(如图10.1) 图10.1 CPU与I/O设备的连接
1. I/O接口的基本功能 • 实现主机和外设之间的数据传送控制。 如同步控制、设备选择、中断控制和DMA控制 (2) 实现数据缓冲,以达到主机与外设之间的速 度匹配。 (3) 接受主机的命令,提供设备接口的状态,并 按照主机的命令控制设备。
2. I/O接口类型 (1)按照数据传送的宽度可分为 并行接口和串行接口 (2)按照数据传送的控制方式可分为 直接程序控制、程序中断、DMA 通道、外围处理机 (3)按照时序控制方式可分为 同步接口和异步接口
3.根据是源还是目的设备启动传送以及是否用 握手,异步数据传送可分为四种 ◆ 不带握手的源启动数据传送 ◆ 不带握手的目的启动数据传送 ◆ 带握手的源启动数据传送 ◆ 带握手的目的启动数据传送
10.1.1 不带握手的源启动数据传送 源设备 输出数 据 选通一个控制信号并维持一段时间 目的设备读入数据 源设备使控 制信号和数 据无效 图10.2 不带握手的源启动数据传送 (a)时序
实现源数据传送更新LED的电路如图10.2(b) 图10.2 不带握手的源启动数据传送:(b)实现
10.1.2 不带握手的目的启动的数据传送 目的设备读入数据后置数据选通信号无效 目的设备传输选通信号给源设备 一段时间后源设备使数据有效,并将数据稳定一段时间 源设备停止传输有效数据 图10.3 不带握手的目的启动数据传送 (a)时序
实现目的数据传送更新LED的电路如图10.3(b) 图10.3 不带握手的目的启动数据传送:(b)实现
10.1.3 握 手 不带握手的数据传送无需确认数据收到, 适合于在规定的时间内传送。 当每次传送所花费的时间不同时,设备可 采用握手方式来协调数据传送。
◆ 带握手的源启动数据传送 源设备置数据请求信号为高,然后使有效数据可用 数据稳定后,目的设备读取此数据 目的设备读完数据,就发送一个数据确认信号给源设备 源设备停止传输有效数据,目的设备复位数据确认信号 图10.4 带握手的源启动数据传送 (a)时序
◆ 带握手的目的启动数据传送 目的设备读完数据,就发送一个数据准备就绪信号给源设备 源设备停止传输有效数据,目的设备复位数据准备就绪信号 目的设备传输一个数据选通信号,源设备使有效数据可用 数据稳定后,目的设备读取此数据 图10.5 带握手的目的启动数据传送 (a)时序
图10.5 带握手的目的启动数据传送:(a)时序和(b)实现 数据准备就绪 数据请求
10.2 可编程I/O ◆ 可编程I/O(programmed I/O) 用指令编程来控制CPU输入或输出数据。 ◆ 可编程I/O的特点 • 何时何地进行输入/输出完全受CPU控制; • 数据的输入输出都要经过CPU; • 用于连接低速外围设备。
◆ 可编程I/O的编址方式 独立编址 有专门的指令访问I/O端口。 存储器编址 把I/O端口视为存储器的一个单元,采用 存储器存取指令即可访问它们。
相对简单CPU,其结构不能采用独立的I/O方式,但可利用存储器编址I/O方式。相对简单CPU,其结构不能采用独立的I/O方式,但可利用存储器编址I/O方式。 例:执行指令LDAC FFFF 为了实现此I/O端口,设计硬件如图10.6。 当地址总线上的值为FFFFH,控制信号READ=1时,三态缓冲器才选通 图10.6 地址为FFFFH的输入端口
修改相对简单CPU以支持独立的I/O方式: ◆ 必须在CPU指令集中增加输入、输出指令; ◆ 产生必要的新控制信号; ◆ 在状态图中增加新状态; ◆ 开发RTL代码支持新状态; ◆ 修改寄存器、ALU和控制单元硬件来支持新的指令。
1.增加两条新指令 一条输入数据 一条输出数据 表10.1 相对简单CPU的独立I/O指令
2. 增加一个新控制信号IO IO=1时为I/O操作,IO=0时为存储器操作 3. 新状态与RTL代码 INPT1:DR←M,PC←PC+1, AR←AR+1 INPT2:TR←DR,DR←M, PC←PC+1 INPT3:AR←DR,TR INPT4:DR←输入端口 INPT5:AC←DR 图10.8 实现INPT指令执行周期的状态
4 .硬件的修改 (1)修改寄存器 (2)修改ALU (3)修改控制单元 图10.9 产生INPT执行周期的状态信号的硬件
◆ 计数器控制信号修改 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
直接程序控制方式可分为两种传送方式: (1)直接传送方式 CPU在控制与外设之间的数据传送之前,不需了解外设的工作状态,即可直接执行I/0指令,实现数据传送。 直接传送方式无需查询设备的任何状态,也无需考虑同步问题。也称为无条件传送方式。多用于I/0操作时间固定且已知的情况下。
(2)程序查询方式 ◆CPU向I/O设备发传送数据的请求信号。 ◆I/O设备处理该请求,当其准备传送数据时, 就置位设备准备就绪信号。 ◆CPU通过另一个I/O地址读此信号并检查其值。 如果信号置位,CPU执行数据传送。如果未置 位,则循环等待,继续读取并检查设备准备就 绪信号的值。
例:考察相对简单CPU的一个输入设备 (1) 输入/输出指令 INPT(AC←INPUT PORT Г) OTPT(OUT PORT Г←AC) (2)设备有三个I/O端口:两个输入、一个输出。 输出端口:1001H中输出01H值,启动一个请求。 输入端口:1002H(查询该端口直至其最低位置1) 1000H(从中读取数据)
图10.10 采用查询方式实现I/O端口的硬件 输出端口:1001H中输出01H值,启动一个请求。 输入端口:1002H(查询该端口直至其最低位置1) 1000H(从中读取数据)
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)
10.3 中 断 10.3.1 CPU和I/O设备之间的数据传送 1. 解决I/O设备变化延迟 ◆ 查询 ◆ 中断 中断是由I/O设备或其他非预期的急需处 理的事件引起的,它使CPU暂时中断现在正在 执行的程序,而转至另一服务程序去处理这 些事件。处理完后再返回原程序。
2. 中断输入输出方式的特点 (1) CPU与I/O并行工作; (2) 硬件故障处理; (3) 实现人机对话; (4) 实现多道程序和分时操作; (5) 实现实时处理; (6) 实现应用程序和操作系统的联系; (7) 多处理机系统各处理机间的联系。
10.3.2 中断类型 ◆ 外部中断 CPU采用外部中断与输入/输出设备进行交互。 ◆ 内部中断 内部中断完全发生在CPU内部,没有任何 输入/输出设备介入。 ◆ 软中断 由CPU指令集中的特定中断指令产生。
10.3.3 中断处理 1. 中断源 引起中断的事件或者发出中断请求的来源。 2. 中断源如何提出请求? (1) 中断请求信号的建立 ◆ 中断触发器 每个中断源对应有一个中断触发器。 ◆ 多个中断触发器构成中断寄存器,其内容称 为中断字或中断码。
(2) 中断请求信号的传送 三种方案: ◆ 单独设置中断请求线 快速响应、中断请求线数目有限 ◆ 一根公共中断请求线 ◆ 兼有公共请求线与独立请求线 将中断源分级或分组 (3) 中断响应信号
3. 中断的优先级 设计中断系统时,应将全部中断源按中断 性质和处理的轻重缓急进行排队并给以优先级。 (1)优先级 指多个中断发生时,对中断响应的次序。 (2)判优的实现 ◆ 软件查询 ◆ 中断排队逻辑
4.中断的允许与禁止 ◆ 中断允许 中断源有中断请求信号就可使其对应的 中断触发器置“1”状态或参加排队判优。 ◆ 中断禁止 中断源即使有中断请求信号也不能使其 对应中断触发器置“1”状态或不允许参加排 队判优。 5. 中断服务程序:处理中断工作的服务软件。
6. 中断处理过程(中断响应与中断处理) 从某一个中断源发出中断服务请求,到这个 请求全部处理完成所经过的主要过程。 (1)中断查询 CPU在一条指令周期内要查询一次是否有中 断产生。 (2)中断响应 ◆关中断 ◆ 保存断点 ◆ 转入中断服务程序
程序屏蔽码 程序运行状态 条件码 中断码 指令计数器 获取中断服务程序地址: ◆向量中断 中断向量:中断服务程序的入口地址以及 程序状态字的合称。 程序状态字PSW:用来表征处理机运行程序的状态。 一般应包含如下内容:
◆非向量中断 CPU在响应中断时只产生一个固定的地址,该 地址是中断查询程序的入口地址,CPU转去执行查 询程序,通过软件查询确定中断源,然后执行相应 的中断服务程序。 查询程序:又称中断总服务程序。
(3)执行中断服务程序 ◆ 保存现场 ◆ 开CPU中断 ◆ 执行中断服务程序 ◆ 关CPU中断 ◆ 恢复现场 ◆ 恢复屏蔽码 ◆ 恢复PSW、PC ◆ 开CPU中断 ◆ 返回断点
10.3.4 中断硬件和优先级 1. 单个设备的简单系统 ◆ 非向量中断 图10.11 单个设备的非向量中断(a)硬件 (b)时序
◆ 向量中断 图10.12 单个设备的向量中断 (a)硬件 (b)时序
2. 多个设备的系统 ◆ 非向量中断 每个设备均有自己的IRQ和IACK信号 他们的优先级是预定的 ,IRQn优先级最高 CPU首先响应和服务优先级最高的中断 图10.13 多个非向量中断的硬件
◆ 向量中断 菊花链:用于多中断优先权排队的一种方法。 简单易实现 便于扩充 延迟大 图10.14 菊花链
菊花链将引起硬件延迟,特别是当链较长时,延迟就更大。 并行优先权排队 通过一个优先权编码器采用并行优先权排队(parallel priority)方式实现向量中断,减少延迟。 扩展困难。
防止干 扰信号 图10.15 并行方式实现优先级中断
10.3.5 多重中断处理 多重中断是指在处理某一中断过程中又发生了新的中断,从而中断该服务程序的执行,又转去进行新的中断处理。这种重叠处理中断的现象又称中断嵌套。 ◆ 中断响应次序与中断处理次序 中断响应次序是由硬件排队判优线路决定的, 不能改变,而中断处理次序可由屏蔽码决定,是可 以改变的。 中断处理次序可以不同于中断响应次序。
一级中断 处理程序 二级中断 处理程序 三级中断 处理程序 目的程序 m l k k+1 l+1 m+1
例如:某计算机的中断系统有4级中断优先级,每例如:某计算机的中断系统有4级中断优先级,每 级对应一个屏蔽码,下表为程序级别和屏蔽码的关 系,中断响应次序和处理次序一致,均为: 1 → 2 → 3 → 4
屏蔽码 程序级别 1级 2级 3级 4级 0 1 1 1 0 0 1 1 0 0 0 1 0 0 0 0 第1级 第2级 第3级 第4级
1 2 3 1 2 1 4 4 3 2 中断服务 程序 正常程序 按照这一次序可以看到CPU运动的轨迹,如下图。