I/O 接口

Q: IO 接口有哪些端口? (三个)
A: 数据端口, 状态端口和控制端口

Q: CPU 对 IO 接口的数据端口, 状态端口和控制端口权限
A: 数据端口: 读写
状态端口: 读
控制端口: 写

Q: IO 端口的两种编址方式
A: - 独立编址:
对所有的 I/O 端口单独进行编址.
I/O 端口的地址空间与主存地址空间是两个独立的地址空间, 它们的范围可以重叠, 相同地址可能属于不同的地址空间.
需设置专门的 I/O 指令来表明访问的是/O 地址空间

  • 统一编址:
    是指把主存地址空间分出一部分给 I/O 端口进行编址
    I/O 端口和主存单元在同一地址空间的不同分段中,
    根据地址范围就能区分访问的是 I/O 端口还是主存单元
    无须设置专门的 I/O 指令, 用统一的访存指令就可访问 I/O 端口

Q: 总线中的三条不同线的作用
数据线, 控制线, 地址线
A: 数据线: 读/写数据, I/O 接口中的命令字, 状态信息, 控制信息和中断类型号
控制线: 控制信号, 中断请求和响应信号, 仲裁信号和握手信号
地址线: 要访问 I/O 接口中的寄存器的地址

Q: IO 接口的状态信号是用数据线还是控制线传输?
A: 数据线

I/O 方式

Q: 主机访问 I/O 设备的三大控制方式
A: - 程序直接控制:
CPU 负责执行所有与 I/O 操作相关的指令和数据传输. CPU 会不断地轮询 I/O 设备的就绪状态, 直到设备准备好进行数据传输

  • 中断驱动:
    当 I/O 设备完成一个操作后, 会向 CPU 发出中断请求, 通知 CPU 进行相应的处理.
    CPU 在执行完当前指令后, 会响应中断请求, 转到相应的中断服务程序处理 I/O 操作.
  • DMA:
    DMA 是一种允许外设直接访问主存的控制方式, 无需 CPU 的直接干预.
    DMA 控制器负责管理 I/O 数据传输, CPU 只需在传输开始和结束时进行设置和通知.

Q: 主机访问 I/O 设备的三大控制方式, 效率区别
程序直接控制, 中断驱动, DMA
A: 程序直接控制, 效率最低
中断驱动, 效率居中
DMA, 效率最高

Q: 中断隐指令执行的三步操作
A: 关中断
保存断点: 保存 PC 和 PSW
引出中断服务程序

Q: 中断隐指令由软件执行还是由硬件执行?
A: 由硬件自动完成的一系列微操作。

Q: 为什么中断隐指令由硬件完成, 但被叫作隐指令?
Q: 由硬件完成的,对程序员是透明的,且其功能类似一条复杂的指令,所以被称为“隐指令”。

DMA

主机访问 I/O 设备, DMA 方式
主存和 DMA 接口之间有一条直接数据通路
DMA 方式传送数据不需要经过 CPU

DMA 方式传送 IO 设备数据过程
预处理, 传输, 后处理

IO 设备 DMA 方式和中断方式, 传输阶段的重要区别

  1. 无需中断: DMA 不需要中断, 也不需要保护现场, 只有预处理和后处理占用 CPU 资源
  2. 任意响应: CPU 对 DMA 请求的相应可以在任意一个机器周期结束时 (取指, 间址, 执行周期后均可)
  3. 传输效率高: 直接硬件执行, 不需要 CPU, 传输效率高

Q: DMA 请求与 (普通) 中断请求谁优先级更高?
A: DMA 请求的优先级高于中断请求
掉电中断请求高于 DMA 请求

Q: 开中断情况下, CPU 检测到中断就一定会立即响应吗?
A: 是的
在开中断情况下, CPU 在条指令执行结束时检测到中断请求信号, 则会立即响应
即便是多重中断, CPU 正在处理某个中断的过程中, 由于中断屏蔽字的存在, CPU 检测不到处理优先级更低的中断请求信号, 因此若检测到中断请求信号, 则说明新中断源的处理优先级更高, 同样也会立即响应

Q: 中断源, 中断处理程序, 中断向量, 向量地址的关系
A: 中断源发出中断请求信号
系统收到中断请求信号后, 进入中断向量表查
根据中断编号在中断向量表中得到中断处理程序地址
根据中断处理程序地址, 运行中断处理程序

DMA 的三种传送方式, CPU 与 DMA 的工作情况

  1. CPU 停止法 (成组传送) (burst mode): {c1: DMA 传输时, CPU 脱离总线, 停止访问主存, 直到 DMA 传送一块数据结束}
  2. 周期挪用 (单字传送) (Cycle Stealing Mode): 三种情况
    1. CPU 不在访存 (如 CPU 正在执行乘法指令):{c2: I/O 的访存请求与 CPU 未发生冲突}
    2. CPU 正在访存:{c2: 此时必须待存取周期结束后, CPU 再将总线占有权让出}
    3. I/O 和 CPU 同时请求访存:{c2: 出现访存冲突, 此时 CPU 要暂时放弃总线占有权. I/O 访存优先级高于 CPU 访存, 因为 I/O 不立即访存就可能丢失数据, 此时由 I/O 设备挪用一个或几个存取周期, 传送完一个数据后立即释放总线, 是一种单字传送方式}
  3. 交替分时访问 (透明传送) (Transparent Mode): {c3: 适合 CPU 工作周期长于访存周期的情况. CPU 工作周期分为两部分, : 专供 DMA 访存, : 专供 CPU 访存. 此种方法不需要申请建立和归还总线的使用权.}

Q: CPU 周期与存储周期什么情况下适合使用交替分时访问 (透明传送)?
A: CPU 周期长而存储周期短
CPU 完全没有因为等待内存而”浪费”任何时间. 它发出了命令, 在自己”一拍”的时间内, 内存就搞定了一切. 对于 CPU 来说, 这个过程就像访问自己的寄存器一样顺畅, 内存的操作对它是透明的.