输入/输出系统¶
8.1 CPU 与外设之间的信息交换方式¶
8.1.1 输入/输出接口与端口¶
该节内容主要围绕输入/输出接口与端口展开,介绍了其存在的必要性、功能、组成以及端口编址方式,具体如下:
- I/O接口存在的必要性:外围设备种类、输入信号形式多样,信息传输速率差异悬殊,如手动键盘输入字符间隔可达数秒,而磁盘输入速率超30000B/s 。为实现高速主机与不同速度外设间高效可靠交互,CPU必须通过I/O接口与外设连接,CPU的输入/输出操作分为I/O接口与外设、CPU与I/O接口两个相互关联的数据传送阶段。
- I/O接口的功能与组成:I/O接口是由半导体介质构成的逻辑电路,作为转换器,确保外部设备按计算机系统要求的形式收发信息。接口内部设置可被CPU直接访问的寄存器,即端口。其中,命令端口用于接收CPU等主控设备的控制命令;状态端口用于向CPU报告I/O设备工作状态;数据端口用于在外设和总线间交换数据。
- 端口编址方式:
- 统一编址方式:将输入/输出设备接口中的寄存器与内存单元统一编排地址,可用访问内存的指令访问I/O设备接口寄存器,无需专门I/O指令组。
- I/O独立编址方式:内存地址与I/O设备地址分开,访问内存和I/O设备使用不同指令,需专门的I/O指令组。
8.1.2 输入/输出操作的一般过程¶
该节内容围绕输入/输出操作的一般过程展开,阐述了端口与内存单元的区别、I/O操作步骤、外围设备定时问题以及I/O对系统性能的影响,具体如下:
- 端口与内存单元的差异:从CPU读写角度,读写端口与内存单元相似,但二者功能不同。内存单元用于存储数据;端口辅助CPU与外设交互,端口数据动态变化,CPU写入控制口的信息会转换成控制信号发往外设,外设状态信息经转换存入状态口供CPU读取,数据也通过数据口进行缓冲与传输 。
- 输入/输出操作步骤:
- 输入过程:①CPU在地址总线上放置地址值,选择某一输入设备;②等待输入设备数据有效;③CPU从数据总线读入数据并存入相应寄存器。
- 输出过程:①CPU在地址总线上放置地址值,选择输出设备;②CPU将数据置于数据总线上;③输出设备确认数据有效后取走数据。
- 外围设备定时问题:输入/输出过程的关键是确定数据何时有效,由于外围设备数据传输速率差异大,高速CPU与不同速度外设连接时,需解决二者时间同步问题,针对不同速度外设需采用不同定时方式。
- I/O对系统性能的影响:通过【例8.1】说明,即使CPU速度大幅提升,若忽略I/O速度提升,也会极大影响系统整体性能。假设基准程序运行总时间100s,其中CPU时间90s,I/O时间10s,在CPU速度每年提高50%、I/O时间不变的情况下,5年后I/O时间占总运行时间比例从10%提升至45% 。
8.1.3 I/O 接口与外设间的数据传送方式¶
该节主要介绍了根据外设工作速度不同,I/O接口与外设间的数据传送方式,具体内容如下:
- 无条件传送方式:适用于速度极慢或简单的外围设备,如机械开关、发光二极管等。这类设备在数据交换前无需准备,机械开关输入数据长期有效,发光二极管在主机输出时必定就绪。因此,接口与外设间仅需数据信号线,无需握手联络信号线,接口只需实现数据缓冲和寻址功能,所以也叫零线握手联络方式。
- 应答方式(异步传送方式):适用于慢速或中速的外围设备,这类设备速度与主机不在同一数量级,或操作时间间隔不规则,如键盘。主机与这类设备的数据交换采用异步定时方式,接口与外设除数据传送信号线外,还设有若干条握手(联络、挂钩)信号线,用于传递控制信息,确定数据交换时机。以常见的双线握手方式为例,一条信号线由发方向收方发送选通或请求信号,表明数据是否有效;另一条由收方向发方发送应答信号,告知数据是否已被取走 。
- 同步传送方式:适用于高速的外围设备,即中等以上数据传送速率且按规则间隔工作的设备。接口以确定的时钟速率与外设交换信息,采用同步定时方式,数据交换由时钟脉冲控制。例如,若外设是传输速率为2400位/秒的同步通信线路,接口每隔1/2400秒执行一次串行的输入/输出操作。
8.1.4 CPU 与 I/O 接口之间的数据传送¶
该节主要介绍CPU与I/O接口间的五种数据传送方式,包括适用场景、工作原理及优缺点,具体内容如下:
一、无条件传送方式(简单I/O方式)¶
核心特点:假设外设始终就绪,CPU直接执行I/O指令传输数据,无需查询外设状态。
- 适用设备:低速或简单外设(如机械开关、LED),数据状态稳定(输入长期有效、输出立即就绪)。
- 硬件实现:输入用三态缓冲器,输出用锁存器;无需握手信号线,仅需数据总线和寻址逻辑。
- 局限性:仅适用于固定状态外设,应用场景有限。
二、程序查询(轮询)方式¶
核心逻辑:CPU通过状态口循环查询外设状态,就绪后进行数据传输。
- 工作流程:
1. 输入场景:查询外设“准备就绪”→ 接收数据→ 发送响应信号→ 外设复位状态并准备下一次传输。
2. 输出场景:查询外设“就绪”→ 发送数据→ 外设确认接收。
- 优缺点:
- 优点:软硬件简单,CPU与外设操作同步。
- 缺点:CPU需持续等待,大量时间消耗在无效查询中,仅适用于低速外设或CPU空闲场景。
三、程序中断方式¶
核心机制:外设通过中断信号“主动通知”CPU,CPU暂停当前任务响应I/O请求。
- 工作流程:外设就绪→ 发送中断请求→ CPU保存现场→ 执行中断处理程序(数据传输)→ 恢复现场并继续原任务。
- 优缺点:
- 优点:释放CPU等待时间,实时性强,适用于随机请求和高负载系统。
- 缺点:硬件(中断控制器)和软件(中断处理程序)复杂度高,存在中断响应延迟。
四、直接内存访问(DMA)方式¶
核心特性:硬件主导数据传输,DMA控制器接管总线,数据直接在内存与外设间传输,不经过CPU。
- 工作原理:
- 初始化DMA控制器(设置传输方向、地址、长度)。
- DMA控制器控制总线,批量传输数据(如磁盘与内存间的大块数据)。
- 传输完成后向CPU发送中断通知。
- 优缺点:
- 优点:传输速度快(仅受内存访问速度限制),适合高速、成批数据交换(如硬盘、网卡)。
- 缺点:需专用DMA控制器,硬件成本较高。
五、通道和输入/输出处理器(IOP)¶
进阶方案:通过专用硬件分担CPU的I/O控制任务,实现CPU与I/O并行工作。
1. 通道(Channel)
- 定位:简化版处理器,有独立指令集,负责统一管理外设与内存的数据传输。
- 功能:CPU仅需发起I/O请求,通道独立执行传输任务,分时共享内存,提升CPU利用率。
- 输入/输出处理器(IOP)
- 分类:
- 通道型IOP:如Intel 8089,辅助CPU处理I/O,支持数据转换、搜索等功能,用于服务器/微型机。
- 外围处理器(PPU):完全独立于主机,具备通用计算能力,可用通用机改造。
- 优势:进一步解放CPU,适用于高性能计算和大规模I/O场景。
总结对比¶
方式 | 适用设备速度 | 核心控制 | CPU参与度 | 典型场景 |
---|---|---|---|---|
无条件传送 | 极慢/简单 | 直接指令控制 | 全程参与 | 机械开关、LED |
程序查询 | 低速 | 程序循环查询 | 持续等待 | 键盘、打印机 |
程序中断 | 中低速 | 中断信号触发 | 中断响应 | 实时性要求高的外设(如串口) |
DMA | 高速 | DMA控制器硬件 | 初始化后脱离 | 磁盘、网卡大批量数据传输 |
通道/IOP | 超高速 | 专用处理器 | 仅发起请求 | 大型机、高性能服务器 |
关键结论:低速设备采用软件控制(查询/中断),高速设备依赖硬件加速(DMA/通道),通过分层方案平衡CPU效率与系统复杂度。
8.2 程序查询方式¶
该节内容围绕程序查询方式(程序控制I/O方式)展开,介绍其定义、I/O指令功能、接口结构、工作流程及优化改进,具体总结如下:
一、程序查询方式概述¶
定义:
- 数据在CPU与外设间的传送完全由计算机程序控制,CPU主动发起并全程参与I/O操作,需暂停主程序执行以处理I/O任务。
- 特点:硬件简单、成本低,适用于低速外设或CPU负载较低的场景。
二、I/O指令的功能与示例¶
核心功能:
1. 控制设备动作:通过置“1”或置“0”接口控制触发器,实现设备启动、关闭等操作。
2. 测试设备状态:读取“忙”“准备就绪”等状态标志,判断数据传输时机。
3. 数据传输:输入时将接口数据寄存器内容送CPU寄存器;输出时将CPU寄存器内容送接口数据寄存器。
指令格式示例:
- 某机I/O指令格式含操作码(OP)、设备地址(DMs)、控制位等字段。
- 例:指令“DOAS 2,13”表示将CPU中R2数据输出至13号设备的A寄存器,并启动设备。
- 例:指令“DICC 3,12”表示将12号设备C寄存器数据输入至CPU的R3,并关闭设备。
常用指令:
- SKP(测试跳步指令):检测设备状态标志(如“就绪”),标志为“1”则顺序执行下一条指令,为“0”则跳过下一条指令,用于程序查询逻辑。
三、程序查询方式的接口结构¶
接口电路包含三部分:
1. 设备选择电路:
- 功能:通过地址总线译码识别CPU选中的设备,仅被选中设备进入工作状态。
- 本质:设备地址译码器。
- 数据缓冲寄存器:
-
功能:输入时暂存外设数据供CPU读取;输出时暂存CPU数据供外设提取,实现速度缓冲。
-
设备状态标志:
- 包含“忙”“准备就绪”“错误”等触发器,实时反馈设备状态,供CPU查询判断。
四、程序查询方式的工作流程¶
基本步骤:
1. 发送命令:CPU向I/O设备发出数据传送请求。
2. 读取状态:从接口读入设备状态字。
3. 状态判断:检查“就绪”标志,若未就绪则循环重复步骤2-3(忙等待)。
4. 数据传输:就绪后执行数据输入/输出,并复位状态标志。
优化改进:
- 周期性查询:CPU在主程序中定期调用询问子程序,按优先级依次检测多设备状态(如先查询高速设备)。
- 流程示例:
1. 用SKP指令检测1号设备“Ready”标志。
2. 若就绪,跳转至设备服务子程序(完成数据传输、修改地址/字节数等);若未就绪,跳过子程序,查询下一个设备。
3. 所有设备查询完毕后返回主程序。
五、优缺点与适用场景¶
- 优点:
- 硬件简单(仅需基本接口电路),成本低。
- 程序逻辑直观,适合简单低速设备(如键盘、打印机)。
- 缺点:
- CPU需持续轮询等待,资源利用率低,无法处理多任务或高速数据。
- 实时性差,难以应对突发I/O请求。
- 适用场景:
- 小型系统或CPU负载较轻的场景,如嵌入式设备中的简单外设控制。
总结¶
程序查询方式通过软件循环查询外设状态实现数据传输,其核心依赖I/O指令的状态检测和简单接口电路。尽管硬件成本低,但CPU效率受限于“忙等待”机制,仅适用于低速、非实时性的外设交互。在多设备或高性能需求场景中,需采用中断、DMA等更高效的I/O方式。
8.3 程序中断方式¶
8.3.1 异常和中断的基本概念¶
该节内容围绕异常与中断的基本概念展开,涵盖定义、分类、处理流程、核心机制及应用场景,重点解析中断在计算机系统中的作用与实现逻辑,具体总结如下:
一、异常与中断的定义及分类¶
1. 广义异常的范畴¶
- 定义:异常是处理器实现程序随机切换的机制,用于处理需特权权限的系统事件或外部请求。
- 分类:
- 中断(外中断):由处理器外部硬件触发(如外设请求),属于随机事件,需CPU暂停主程序响应。
- 狭义异常(内中断):由机器内部原因引发(如指令错误、运算溢出),改变正常指令执行顺序。
2. 中断的核心特征¶
- 与子程序调用的区别:中断请求由随机事件触发,而非程序预先安排,适合处理突发任务。
- 中断源:引发中断的事件,包括外设请求、硬件故障(如掉电)、软件错误(如地址越界)等。
二、中断机制的功能与典型应用¶
1. 核心功能¶
- 实现CPU与外设并行工作:外设准备数据时CPU继续执行主程序,提升系统效率。
- 实时响应随机事件:确保紧急任务(如故障处理)优先执行。
2. 典型应用场景¶
- I/O设备数据交换:替代程序查询方式,减少CPU等待时间。
- 故障处理:硬件故障(如校验错)或软件异常(如非法指令)时触发中断修复。
- 多任务调度:操作系统通过中断切换任务,实现分时复用。
- 软中断:程序主动触发(如系统调用),接口简单且便于维护。
三、中断处理流程与关键机制¶
1. 中断处理的基本流程¶
- 中断请求:外设或内部事件通过中断请求线向CPU发送信号。
- 中断响应:
- CPU在当前指令执行完毕(公操作阶段)检查中断请求。
- 满足条件(如未被屏蔽)时,关闭中断(置中断屏蔽标志为1),保存程序计数器(PC)和现场状态(寄存器值、标志位)。
- 中断服务:跳转至中断服务程序,完成数据交换或故障处理。
- 中断返回:恢复现场,开放中断(清中断屏蔽标志为0),返回主程序断点继续执行。
2. 关键机制解析¶
- 中断屏蔽:通过硬件触发器控制是否响应新中断,确保当前中断服务不被打断。
- 隐操作:中断响应、关中断、保存断点等由硬件自动完成,程序代码不可见。
- 向量中断:通过硬件或软件查找中断源,获取对应服务程序入口地址,实现快速响应。
四、中断与程序查询方式的对比¶
维度 | 程序查询方式 | 中断方式 |
---|---|---|
CPU参与度 | 全程忙等待,效率低 | 仅响应时介入,其余时间执行主程序 |
实时性 | 差(需轮询) | 高(主动触发) |
适用场景 | 低速、非实时外设 | 高速、随机请求外设 |
五、总结¶
中断机制通过硬件与软件协同(如中断周期的隐操作+中断服务程序),实现了CPU对随机事件的高效响应,是计算机系统并行性和实时性的基础。其核心优势在于释放CPU资源、提升系统效率,广泛应用于I/O交互、故障处理、多任务调度等场景。理解中断的处理流程与屏蔽机制,是掌握计算机系统异步通信的关键。
8.3.2 中断服务程序入口地址的获取¶
该节内容围绕中断服务程序入口地址的获取方式展开,重点介绍向量中断和查询中断两种机制的定义、原理及差异,具体总结如下:
一、核心背景与目标¶
CPU响应中断时需解决两大问题:
1. 中断源识别与优先级判别:多中断源同时请求时,确定响应顺序。
2. 获取中断服务程序入口地址:跳转至对应处理程序。
关键方式:向量中断(硬件主导)与查询中断(软件主导),由处理器架构预先决定。
二、向量中断方式¶
定义:由硬件自动生成中断向量地址,快速定位中断服务程序入口的中断机制。
核心原理:¶
- 中断向量与向量表:
- 中断向量:每个中断源对应的服务程序入口地址(部分系统含初始程序状态字PSW)。
- 中断向量表:内存中固定区域,按顺序存储所有中断向量,如图8.7实例中,地址A1-An对应入口地址PC1-PCn及PSW1-PSWn。
- 硬件自动寻址:
- CPU识别中断源后,硬件直接生成向量地址(如中断类型号),通过查表或计算(向量地址+基址寄存器值)获取入口地址。
- 部分系统向量表存储转移指令,由硬件执行指令跳转至服务程序。
特点:¶
- 高效性:硬件完成中断源识别、优先级处理及寻址,响应速度快,适用于高速外设或实时系统。
- 固定性:优先级由硬件预设,灵活性较低。
三、查询中断方式¶
定义:通过软件查询中断源状态,跳转至公共中断服务程序处理的机制。
核心流程:¶
- 公共中断服务程序:
- 中断响应后,CPU先进入统一入口的公共程序,逐次查询各中断源状态寄存器(如“中断请求标志”)。
- 示例流程(图8.8):按优先级顺序检测中断源A→B→C,命中后跳转至对应服务子程序。
- 优先级控制:
- 软件查询顺序决定中断优先级,可动态调整(如临时修改查询顺序)。
特点:¶
- 灵活性高:优先级由软件逻辑控制,适合需动态调整的场景(如多任务调度)。
- 效率较低:依赖软件循环查询,响应延迟较长,适用于低速外设或中断源较少的系统。
四、两种方式对比¶
维度 | 向量中断 | 查询中断 |
---|---|---|
核心控制 | 硬件(中断控制器、向量表) | 软件(公共服务程序) |
响应速度 | 快(硬件直接寻址) | 较慢(软件逐次查询) |
优先级调整 | 固定(硬件预设) | 灵活(软件修改查询顺序) |
适用场景 | 高速外设、实时系统 | 低速外设、中断源少的系统 |
五、总结¶
向量中断通过硬件自动化机制实现快速响应,适用于高性能、实时性需求;查询中断依赖软件逻辑动态调整优先级,灵活性高但效率较低。两者分别代表了计算机系统中“硬件加速”与“软件灵活”的设计权衡,共同支撑中断系统的多样性需求。理解两种方式的原理与差异,是掌握CPU中断处理机制的关键。
8.3.3 程序中断方式的基本 I/O 接口¶
该节内容聚焦程序中断方式的基本I/O接口,介绍接口组成、核心触发器功能及数据输入控制流程,具体总结如下:
一、程序中断接口的核心组成¶
程序中断方式的基本接口包含 4个关键标志触发器 和硬件控制逻辑,其功能与协作机制如下:
1. 工作标志触发器(BS)¶
- 功能:表示外设当前工作状态,置“1”时为“忙”状态(正在处理数据或执行操作),清“0”时为空闲状态。
- 触发场景:由程序启动外设时置“1”,数据传输完成后复位。
2. 就绪标志触发器(RD)¶
- 核心作用:作为中断源触发器,设备完成数据接收或发送后,通过动作完毕信号将RD置“1”,表示数据就绪可触发中断。
- 地位:中断请求的前提条件之一,标志外设已准备好与CPU交互。
3. 允许中断触发器(EI)¶
- 软件可控性:通过程序指令置位或清零,EI=1时允许外设向CPU发送中断请求,EI=0时禁止请求。
- 设计目的:通过软件灵活控制中断源的开启与关闭,实现中断优先级管理或临时屏蔽特定设备。
4. 中断请求触发器(IR)¶
- 信号暂存:接收并暂存外设通过中断请求线发送的中断信号,IR=1时表示存在未处理的中断请求。
- 与CPU交互:CPU在指令执行末尾检测IR状态,决定是否响应中断。
5. 中断屏蔽触发器(IM,CPU侧)¶
- 全局控制:IM=0时CPU受理中断请求,IM=1时屏蔽所有外部中断请求,由CPU硬件直接控制。
- 优先级机制:配合EI实现“CPU全局屏蔽”与“外设局部允许”的双重控制逻辑。
二、数据输入控制流程(以输入场景为例)¶
结合图8.9标号①~⑩,流程如下:
1. 启动外设(①~②):
- 程序通过指令置位 BS=1(忙状态),清零 RD=0(未就绪),并向外设发送启动信号。
2. 数据传输准备(③~④):
- 外设将数据传入接口缓冲寄存器,完成后发送控制信号,置位 RD=1(数据就绪)。
3. 中断请求触发(⑤~⑥):
- 若 EI=1(允许中断),接口通过中断请求线向CPU发送信号,置位 IR=1(CPU接收请求)。
4. CPU响应中断(⑦~⑧):
- CPU在指令执行结束时检测到 IR=1 且 IM=0(未屏蔽),关闭中断(硬件自动置IM=1),响应中断并跳转至对应 中断服务程序入口。
5. 数据读取与状态复位(⑨~⑩):
- 中断服务程序通过输入指令读取缓冲寄存器数据至CPU,随后发送控制信号 C,清零 BS=0 和 RD=0,恢复接口初始状态。
三、关键机制总结¶
- 中断请求的双重条件:
- 外设需同时满足 RD=1(数据就绪) 和 EI=1(允许中断),才能向CPU发送中断请求。
- CPU响应的必要条件:
- IM=0(未屏蔽全局中断) 且 当前指令执行完毕,CPU才会受理中断请求。
- 硬件与软件的协同:
- 硬件自动处理:BS/RD状态更新、IR信号暂存、IM屏蔽等底层逻辑由接口电路实现。
- 软件灵活控制:通过指令设置EI标志,动态管理外设的中断权限,适应不同应用场景。
四、核心要点对比¶
触发器 | 控制主体 | 功能描述 | 状态含义 |
---|---|---|---|
BS | 硬件/程序 | 表示外设工作状态 | 1=忙,0=空闲 |
RD | 硬件 | 外设数据就绪标志(中断源触发条件) | 1=就绪,0=未就绪 |
EI | 软件(程序) | 外设中断请求的局部允许/禁止 | 1=允许请求,0=禁止请求 |
IR | 硬件 | 暂存外设中断请求信号 | 1=有请求,0=无请求 |
IM | 硬件(CPU) | CPU全局中断屏蔽标志 | 0=受理请求,1=屏蔽请求 |
总结:程序中断接口通过多触发器的状态协同,实现了外设与CPU之间的异步通信,既保证了数据传输的实时性,又通过软件可控的中断允许机制提升了系统灵活性。其核心逻辑是“外设就绪→允许中断→CPU响应→数据传输→状态复位”,适用于中低速外设的高效交互场景。
8.3.4 单级中断¶
该节内容围绕单级中断系统展开,介绍其概念、中断源识别方法及中断向量产生机制,具体总结如下:
一、单级中断的概念¶
定义:
- 单级中断系统是最基本的中断结构形式,所有中断源属于同一优先级层级,中断响应顺序由物理位置决定(离CPU越近优先权越高)。
- 核心特性:
- 中断服务程序执行时不允许被任何其他中断打断(包括更高优先级中断源),必须执行完毕后才响应后续中断。
- 所有外设通过一条公共中断请求线向CPU发送信号,CPU采用链式查询方式(类似总线仲裁)识别中断源。
示意图与结构:
- 图8.10(a)为单级中断示意图,图8.10(b)中所有I/O设备共享一条中断请求线,CPU通过中断响应信号INTA触发链式判优,与第6章的链式总线仲裁机制类似(中断请求IR对应总线请求BR)。
二、单级中断源的识别:串行排队链法¶
核心逻辑:
通过串行优先级排队链电路实现中断源判优与识别,优先级顺序为IR₁>IR₂>IR₃(硬件固定)。
关键组件与信号:
- IRᵢ:各中断源的请求信号(IR₁优先级最高)。
- ISᵢ:中断排队选中信号(ISᵢ=1表示对应中断源被选中)。
- INTI/INTO:中断排队输入/输出信号,用于传递优先级信号(INTI=0表示无更高优先级请求)。
工作流程:
1. 高优先级优先查询:
- 若IR₁=1且INTI=0(无更高优先级请求),门1输出IS₁=1,IR₁对应的中断源被选中,封锁后续低优先级查询(门2关闭,IS₂、IS₃=0)。
2. 低优先级递补查询:
- 若IR₁=0,INTI信号经门2传递至IR₂,若IR₂=1则IS₂=1,选中IR₂;否则继续查询IR₃,直至找到请求源。
3. 中断识别信号触发:
- CPU发送INTA=1时,选中的中断源通过门7向编码电路输出信号,生成唯一设备地址。
三、中断向量的产生机制¶
定义:
中断向量是中断服务程序的入口地址,单级中断通过硬件直接生成向量地址,快速跳转至对应程序。
实现方式:
- 图8.11上半部分为中断向量产生逻辑,由编码电路完成:
- 选中的中断源(如IR₁)通过排队链输出设备编号,编码电路将其转换为向量地址,送入CPU的主存地址寄存器。
- 优势:硬件直接生成地址,无需软件查询,响应速度快。
四、核心要点对比¶
维度 | 单级中断系统特点 |
---|---|
优先级管理 | 硬件固定优先级,物理位置决定响应顺序 |
中断嵌套 | 不支持(服务程序执行时屏蔽所有其他中断) |
中断请求线 | 单条公共请求线,链式查询判优 |
响应效率 | 硬件快速识别中断源,向量地址由硬件生成 |
总结:单级中断系统通过硬件链式判优和向量地址硬件生成实现中断源识别与响应,其核心特征是同一优先级层级、不支持中断嵌套,适合结构简单、实时性要求不高的系统。串行排队链法与向量中断机制的结合,体现了硬件高效性与设计简洁性的平衡。
8.3.5 多级中断¶
该节内容围绕多级中断展开,详细介绍了其概念、中断源识别方式、相关例题及思考题,核心要点如下:
- 多级中断的概念:
- 定义与优先级:多级中断系统针对众多中断源,依据轻重缓急划分级别并分配优先权,高优先级中断可打断低优先级中断服务程序,实现程序嵌套 。例如,三级中断优先权高于二级,二级高于一级。
- 分类:分为一维多级中断(每级一个中断源)和二维多级中断(每级多个中断源)。
- 关键要点:
- 寄存器与屏蔽策略:系统若有n级中断,对应n个中断请求触发器和n个中断屏蔽触发器。响应中断时,需保存并设置中断屏蔽寄存器内容,通常响应某级中断后,关闭本级及更低优先级中断屏蔽触发器,开放更高级中断屏蔽触发器,实现中断嵌套。
- 中断嵌套规则:多级中断间可嵌套,但同一级内不同中断源的中断不能嵌套,需处理完一个中断后,再响应同级其他中断源。
- 硬件逻辑:设置多级中断的系统追求快速响应,由硬件逻辑确定响应的中断级和中断源。二维中断结构中,结合独立请求与链式查询方式,先由中断优先级排队电路确定响应中断级,再用链式查询确定响应中断源。
- 堆栈应用:与单级中断类似,多级中断也使用中断堆栈保存现场信息,优点是控制逻辑简单,且各级中断现场可共用同一堆栈。
- 多级中断源的识别:
- 逻辑结构:每级中断有独立请求线连接CPU的中断优先级排队电路,采用独立请求方式。中断请求信号经“中断请求”“中断屏蔽”触发器后,进入排队电路,排队电路确定优先响应的中断源,并输出对应信号,编码电路据此产生地址码,转向中断服务程序入口 。
- 示例计算:若请求源1优先级最高,4最低,中断请求寄存器内容为1111,中断屏蔽寄存器内容为0010,则进入排队器的中断请求是1101,排队器输出1000,编码器产生中断源1对应的向量地址。若一级请求线上连接多个中断源设备,需用串行链式方式进一步查询,采用二维方式设计中断排队逻辑。
- 例题分析:
- 例8.2:针对二维中断系统,明确CPU和设备优先级排序,计算不同设备中断服务程序执行时中断屏蔽寄存器(IM)状态,说明IM不能单独屏蔽某个优先级的个别设备,可通过清“0”接口中的EI标志实现;并阐述调整设备优先级的方法 。
- 例8.3:在A、B、C三个设备组成的单级中断结构中,计算处理各设备及总耗时,得出系统达到中断饱和的最小时间及中断极限频率 。
- 思考题:提出“多级中断比单级中断在设计理念上的创新点”这一问题,引发思考 。
8.3.6 ARMv8-A 架构的异常与中断¶
该节内容聚焦ARMv8-A架构的异常与中断机制,从异常类型、处理流程、向量表及中断控制器等方面展开,结合64位执行状态(AArch64)的特性,解析其设计逻辑与技术实现,具体总结如下:
一、ARMv8-A的异常类型¶
1. 同步异常与异步异常¶
- 核心区分:
- 同步异常:由执行指令或尝试执行指令直接引发,返回地址携带异常指令细节(如指令/数据终止、系统调用)。
- 异步异常:非程序执行直接引发,包括IRQ(普通中断)、FIQ(快速中断)、SError(系统错误),由外部中断引脚或系统错误触发。
2. 具体异常事件¶
- 终止(Aborts)
- 同步终止:指令/数据访问错误(如MMU权限故障、无效指令、系统调用)。
- 异步终止:系统错误(如Cache写回脏数据失败)。
- 复位:最高等级异常,不可屏蔽,系统复位后跳转至最高异常等级初始化。
- 异常产生指令:触发软中断(如SVC/HVC/SMC指令),用于特权等级提升或系统服务请求。
- 中断(IRQ/FIQ):
- FIQ优先级高于IRQ,仅少数多数据加载指令可被中断打断,响应发生于当前指令结束且开中断状态。
二、异常处理流程¶
1. 异常等级切换规则¶
- 进入异常:等级可保持或提升(不可降低),目标异常等级由异常类型或配置位决定(不可为EL0)。
- 返回异常:等级可保持或降低(不可提升),通过ERET指令恢复现场并返回断点。
2. 硬件隐操作¶
- 保存现场:将当前PSTATE存入SPSR_ELn寄存器(备份程序状态寄存器)。
- 更新状态:调整PSTATE,必要时提升异常等级。
- 记录断点:将返回地址存入ELR_ELn寄存器(异常链接寄存器)。
3. 异常返回¶
- 执行ERET指令:从SPSR_ELn恢复PSTATE,将ELR_ELn值赋给PC,继续执行主程序。
三、异常向量与向量表¶
1. 向量表结构¶
- 分级管理:EL3、EL2、EL1各有独立异常向量表,由VBAR寄存器(向量基址寄存器)指定基地址。
- 表项固定偏移:每个向量表包含4类异常入口(同步异常、IRQ、FIQ、SError),偏移地址固定。
- 表项内容:存放异常处理程序的首条指令字(非入口地址),每个表项128字节(32条指令),支持顶层处理逻辑及异常源查找。
2. 向量表分组依据¶
- 异常发生等级(当前/更低等级)、堆栈指针(SP0/SPn)、执行状态(AArch64/AArch32)。
四、通用中断控制器(GIC)架构¶
1. 核心功能¶
- 管理多外部中断源,仲裁优先级并向CPU内核发送IRQ/FIQ请求。
- 传统方式:外设通过中断请求线提交请求。
- MSI方式(v3版本):外设通过写寄存器触发消息信号中断,减少硬件连线,适用于大型系统。
2. 处理流程¶
- 中断控制器接收请求→优先级判优→转发至CPU内核→异常处理程序响应。
五、关键术语与机制总结¶
术语 | 定义与作用 |
---|---|
AArch64 | 64位执行状态,支持A64指令集,主导异常模型。 |
ELn | 异常等级(EL0-EL3),EL0为非特权等级。 |
VBAR | 异常向量表基址寄存器,定位各等级向量表。 |
GIC | 通用中断控制器,处理多源中断的仲裁与分发。 |
MSI | 消息信号中断,通过寄存器写操作触发请求。 |
总结:ARMv8-A架构通过同步/异步异常分类、分级向量表机制及通用中断控制器,实现了对复杂中断场景的高效管理,其核心设计理念是硬件隐操作简化流程、分级管理提升灵活性,适用于高性能计算与多核系统的实时响应需求。
8.4 DMA 方式¶
8.4.1 DMA 的基本概念¶
该节内容围绕直接内存访问(DMA)方式展开,介绍其核心概念、工作原理、优缺点、适用场景及DMA控制器的基本操作,具体总结如下:
一、DMA的定义与核心机制¶
定义:
- DMA是完全由硬件执行I/O数据交换的工作方式,DMA控制器(DMAC)接管CPU对总线的控制权,数据直接在内存与外设间传输(不经过CPU),适用于高速成组数据传送。
关键原理:
- 硬件主导:DMAC负责生成内存地址、控制传输计数及总线操作,CPU仅在传输前后参与初始化和收尾。
- 中断辅助:传输结束后DMAC通过中断通知CPU,无需CPU全程监控。
二、DMA方式的核心特点¶
优点:¶
- 传输效率高:
- 省去CPU取指令、存取数据等操作,避免软件开销(如现场保存/恢复)。
- 硬件直接控制地址修改和计数,速度远超程序查询/中断方式。
- CPU利用率高:
- 传输过程中CPU可继续执行程序(无访存冲突时并行工作)。
缺点:¶
- 功能单一:仅支持简单数据传送,无法处理复杂逻辑(如数据判断、计算)。
- 总线冲突风险:DMA与CPU同时访存时需仲裁,可能影响CPU性能。
与其他I/O方式的对比:¶
维度 | DMA方式 | 程序查询/中断方式 |
---|---|---|
控制主体 | 硬件(DMA控制器) | 软件(CPU执行程序) |
CPU参与度 | 仅初始化/结束处理 | 全程或响应时介入 |
数据路径 | 内存↔外设(直达) | 内存↔CPU↔外设(中转) |
适用场景 | 高速、批量数据(如磁盘块) | 低速、少量数据或复杂逻辑 |
三、适用场景与典型应用¶
- 核心场景:
- 高速外设批量传输:磁盘以数据块为单位的读写、网卡的数据帧传输。
- 实时数据采集:传感器连续数据采集(如ADC批量转换)。
- 关键条件:
- 外设支持连续数据传输模式(如块设备)。
- 系统需具备DMA控制器硬件模块(如主板南桥芯片或集成外设控制器)。
四、DMA控制器的基本操作¶
- 请求发起:
- 检测外设状态,就绪后向CPU发送DMA请求信号(如DREQ)。
- 总线接管:
- CPU响应后(如发送HLDA信号),DMAC接管总线控制权,进入DMA工作周期。
- 数据传输控制:
- 地址管理:输出内存地址(通过地址总线),每传送一个字自动递增/递减。
- 计数管理:内置计数器记录已传输字数,达到预设值时终止传输。
- 数据读写:控制内存与外设间的双向数据流动(如IOR/DACK信号组合)。
- 传输结束处理:
- 向CPU发送中断请求(如EOP信号),通知传输完成。
- 释放总线控制权,返回初始状态。
五、关键要点总结¶
- 核心优势:通过硬件旁路CPU实现高速数据传输,解决了程序控制方式的效率瓶颈。
- 局限性:依赖专用硬件,逻辑功能受限,需与CPU协调总线访问。
- 系统协同:DMA的初始化和错误处理由操作系统驱动程序完成,硬件仅负责数据搬运。
总结:DMA方式是计算机系统中高速数据传输的核心机制,通过硬件直接控制内存与外设通信,显著提升了系统整体性能,尤其适用于存储设备和高速接口的数据交换场景。
8.4.2 DMA 传送方式¶
该节内容聚焦DMA(直接内存访问)的三种传送方式,介绍其核心原理、工作流程、优缺点及适用场景,具体总结如下:
一、DMA传送方式的核心背景¶
核心目标:解决DMA控制器与CPU分时使用内存的问题,根据DMA请求占用总线周期的数量,分为三种方式:
- 成组连续传送方式(停止CPU访存)
- 周期挪用方式(单字传送/周期窃取)
- 透明DMA方式(总线周期分时)
二、成组连续传送方式¶
原理与流程:¶
- 总线控制权切换:DMA控制器发送停止信号→CPU放弃总线→DMA完成整批数据传输→归还总线。
- 时间特性:CPU在传输期间完全停止工作(保持状态),如图8.15(a)所示。
优缺点:¶
- 优点:控制逻辑简单,适合高速设备成组传输(如磁盘块读写)。
- 缺点:
- 内存利用率低:外设传输间隔远大于内存周期(如软盘32μs/字 vs 内存0.2μs/周期),导致大量空闲周期。
- CPU资源浪费:传输期间无法执行任何操作。
适用场景:¶
- 对连续批量数据传输需求高,且能接受CPU短时间停顿的场景。
三、周期挪用方式(周期窃取)¶
原理与流程:¶
- 动态总线仲裁:
- 无DMA请求时,CPU正常访存;
- 有请求时,外设挪用1~2个内存周期(分时共享总线)。
- 冲突处理:
- 若CPU与外设同时访存,外设优先(避免数据丢失),CPU延缓指令执行(如插入DMA周期)。
优缺点:¶
- 优点:
- 内存与CPU效率高:仅挪用必要周期,避免连续空闲。
- 灵活性强:适用于随机、非连续的I/O请求。
- 缺点:
- 额外开销:每次挪用需申请/归还总线(2~5个内存周期延迟)。
适用场景:¶
- I/O设备读写周期大于内存周期的场景(如低速外设单字传输)。
四、透明DMA方式(总线周期分时)¶
原理与流程:¶
- 固定分时机制:将CPU周期分为两个子周期(如C1和C2),C1专供DMA访存,C2专供CPU访存,如图8.15(c)所示。
- 硬件独立控制:DMA与CPU各自拥有地址/数据寄存器,通过多路转换器分时使用总线,无需总线控制权申请。
关键特性:¶
- 高效性:CPU与DMA并行工作,无总线切换延迟,传输效率最高。
- 透明性:CPU感知不到DMA操作,主程序持续运行。
- 前提条件:CPU周期需为内存周期的整数倍(如CPU 1.2μs周期=2×内存0.6μs周期)。
适用场景:¶
- 外设传输频率固定(如同步通信设备),且CPU与内存速度匹配的高性能系统。
五、三种方式对比总结¶
维度 | 成组连续传送 | 周期挪用 | 透明DMA |
---|---|---|---|
总线控制 | 独占总线(停止CPU) | 分时共享(挪用周期) | 固定分时(C1/C2) |
CPU状态 | 完全停止 | 可能延缓(冲突时) | 无感知(持续运行) |
传输效率 | 高(批量连续) | 中(单字/随机) | 最高(并行分时) |
内存利用率 | 低(大量空闲) | 高 | 最高 |
典型场景 | 高速块设备(如磁盘) | 低速单字设备(如键盘) | 固定频率外设(如网卡) |
总结:DMA传送方式通过硬件分时策略平衡CPU与外设的内存访问需求,成组方式适合批量传输,周期挪用适合随机请求,透明方式适合高速同步场景。选择时需根据外设速度、传输模式及系统效率要求综合考量。
8.4.3 基本的 DMA 控制器¶
该节内容围绕基本的DMA控制器展开,介绍其组成结构、数据传送过程及核心机制,具体总结如下:
一、DMA控制器的基本组成¶
DMA控制器是外设与系统总线间的接口电路,基于中断接口扩展DMA机构实现,核心部件及功能如下:
1. 内存地址计数器
- 功能:存储数据在内存中的起始地址,DMA传送时每交换一次数据自动加1,按增量方式寻址后续数据。
- 初始化:由程序预设首地址,确保数据块连续传输。
- 字计数器
- 功能:记录待传送数据块的长度(字数),以补码形式预置。
-
触发中断:每传送一个字计数器加1,溢出时(计数值归零)触发中断,通知CPU数据块传输完毕。
-
数据缓冲寄存器
-
功能:暂存每次传输的数据(单字),作为内存与外设间的中转站:
- 输入场景:外设→缓冲寄存器→内存;
- 输出场景:内存→缓冲寄存器→外设。
-
DMA请求标志
- 触发条件:外设准备好数据字时置“1”,向控制逻辑发起DMA请求。
-
信号交互:控制逻辑向CPU发送总线请求(HOLD),CPU响应后返回HLDA信号,DMA控制器接管总线并复位请求标志。
-
控制/状态逻辑
-
核心作用:协调DMA流程,包括:
- 修改内存地址计数器和字计数器;
- 指定传输类型(输入/输出);
- 同步DMA请求与CPU响应信号。
-
中断机构
- 触发时机:字计数器溢出(数据块传输完毕)时,通过中断报告CPU。
- 与I/O中断的区别:I/O中断为数据输入/输出服务,DMA中断仅用于报告传输结束,属于不同中断事件。
二、DMA数据传送过程¶
DMA传输分为预处理、正式传送、后处理三个阶段,以成组连续传送方式为例:
1. 预处理阶段(CPU主导)¶
- 初始化操作:
- 测试外设状态,确保其就绪;
- 向DMA控制器写入设备号、内存起始地址、数据块长度;
- 启动外设,CPU返回主程序执行。
2. 正式传送阶段(DMA控制器主导)¶
- 总线控制权切换:
- 外设发出DMA请求→DMA控制器向CPU发送HOLD信号;
- CPU在总线周期结束后响应,进入高阻态→DMA控制器接管总线。
- 数据块循环传输:
- 按“内存↔缓冲寄存器↔外设”路径交换数据,每次传输后地址计数器和字计数器加1;
- 直至字计数器溢出,DMA操作结束,控制器释放总线。
3. 后处理阶段(CPU主导)¶
- 中断响应:CPU执行中断服务程序,完成:
- 校验数据正确性;
- 决定是否继续DMA传输或结束;
- 检测传输过程中是否发生错误。
三、关键机制与连接方式¶
- 数据块传输特性
-
以数据块为基本单位,通过循环实现批量传输,适合高速外设(如磁盘)的连续读写。
-
总线连接方式
- 公用DMA请求:多外设共享一条DMA请求线,类似中断的链式判优;
- 独立DMA请求:各外设拥有独立请求线,优先级由硬件或软件单独配置。
四、核心要点总结¶
维度 | 关键内容 |
---|---|
设计目标 | 实现内存与外设的硬件直达数据传输,释放CPU资源。 |
核心优势 | 批量传输效率高、CPU利用率高,避免软件干预的延迟。 |
适用场景 | 高速外设(如磁盘、网卡)的成组数据交换。 |
与中断的协同 | 传输前由CPU初始化,传输结束后通过中断通知CPU。 |
总结:DMA控制器通过硬件逻辑接管总线控制权,实现了内存与外设的直接数据传输,其核心创新在于将CPU从低速I/O操作中解放出来,显著提升系统整体性能。预处理、硬件传输与中断后处理的协同机制,使其成为计算机系统中高效数据传输的基石。