天に発車する前の
バッファに仮置きされてる
動作正常なCPUの選択を待ってる

———— 「Buffer」- Empty old City

支持中断、外设的 CPU 设计:Final Design

总线

概念

总线,一组公共的信号通道。在各部件之间实现地址、数据、控制信息的交换。

在某一时刻,只允许有一个部件向总线发送信息,而多个部件可同时从总线上接收相同的信息。

分类

  • 片内总线:CPU 内部的总线。是 CPU 内部各寄存器之间、寄存器与 ALU 之间传递信息的公共通道。
  • 系统总线:CPU、主存、I/O 部件(I/O接口)之间传递信息的公共通道。一般分为数据总线、地址总线和控制总线三部分。
    • 数据总线:传输数据
    • 地址总线:传输存储器地址和I/O地址
    • 控制总线:控制信号、总线请求和响应信号
  • 通信总线:用于计算机系统间或计算机系统与其它系统间的通信。

结构

  • 单总线:

  • 多总线:

通信过程

  1. 请求总线:由需要使用总线的部件或设备,提出总线使用申请。
  2. 总线仲裁:仲裁器决定下一传输周期的总线使用权是否授予该部件或设备。
  3. 寻址: 获得总线使用权的部件或设备,发出地址和有关命令。
  4. 信息传送:进行数据传输。
  5. 状态返回:该部件或设备有关信息从总线上撤除,让出总线使用权。

这个过程设计两方面的控制:

  • 总线仲裁
  • 通信控制

仲裁控制方式

  • 链式查询方式
    • 过程:
      1. 接口向总线控制器(仲裁器)发出总线申请BR(总线申请信号)。
      2. 总线仲裁器收到总线申请BR,将BG(总线同意信号)逐个往下传。
      3. 遇到某接口有总线申请,BG停止往下传;该接口获得总线使用权,并建立总线忙信号BS(总线忙信号)。
    • 布线少、易扩充,但是故障敏感、优先级固定。
  • 计数器定时查询方式
    • 过程:
      1. 总线仲裁器收到总线申请BR,计数器开始计数。
      2. 当某个有总线申请的设备地址与计数器的计数值一致,便获得总线使用权,并建立总线忙信号BS。
    • 优先级灵活,但是布线繁多。
  • 独立请求方式
    • 过程:
      1. 每个设备有独立的请求信号和总线同意信号。
      2. 总线控制器根据设备的优先级决定将总线的使用权交给哪个设备。
    • 响应快,优先级灵活,请求可屏蔽,但是布线繁多。

通信控制方式

  • 同步通信控制方式:数据传输在一个统一的时钟同步信号的控制下进行
  • 异步通信控制方式:不需要统一的公共时钟信号,没有固定的总线周期。采用请求/应答方式完成数据传输。有全互锁、半互锁和不互锁三种时序。

I/O 接口

外部设备并不直接挂接在系统总线上,而是通过 I/O 接口为桥梁实现与系统总线的连接。

功能

  • 识别I/O地址,即地址译码
  • 实现主机与I/O设备的数据交换、控制命令的传递、状态检测与传递
  • 支持一定的 O 方式(程序查询、程序中断、DMA等)
  • 提供缓冲、暂存、驱动能力
  • 进行数据格式、类型方面的转换(串并行转换,电平转换等)
  • I/O控制与定时

分类

  • 按传送数据格式
    • 串行接口:适合速度低、传输距离长的环境
    • 并行接口:适合速度高、传输距离短的环境
  • 按I/O方式: 程序查询接口、中断接口、DMA接口、通道控制接口
  • 按时序控制方式:
    • 同步接口:数据传送由一个统一的时钟信号同步控制
    • 异步接口:数据传送采用异步应答方式控制

I/O 操作过程

  1. CPU查询I/O接口状态,以检查其连接设备的状态
  2. I/O接口回送设备状态给CPU
  3. 如果设备状态显示设备可用,并准备好,CPU向I/O 接口发出命令,请求传送
  4. I/O接口获得来自外设的数据(字或字节)
  5. 数据从I/O接口传送至CPU

I/O 设备编址

I/O 地址实际上是 I/O 接口电路中寄存器的地址

编址方式

  • 独立编址方式:存储器地址与I/O地址分开,CPU具有专用的I/O指令,系统总线中具有区别存储器读写和I/O 操作的控制信号,并以此区别地址总线上的地址是存储器地址还是I/O地址
  • 统一编址方式:存储器地址与I/O地址统一考虑,地址空间的一部分是存储器,另一部分是I/O,支持存储器操作的指令都可用于I/O操作。(MIPS 采取此种)

I/O 方式

I/O 方式,即I/O与主机信息交换的控制方式。

一个 I/O 方式,要回答三个问题:

  • 谁发起 I/O?
  • 谁控制传输?
  • 谁通知 CPU?

程序查询(轮询)I/O 方式

  • 过程:
    1. I/O接口设置状态寄存器,以表示外部设备的工作状态
    2. CPU通过不断读取状态寄存器,以查询外部设备的状态
    3. 在外部设备准备就绪的时候,CPU通过I/O接口中的数据寄存器,与外部设备之间完成数据交换
  • I/O 接口基本组成:
    • Status Register
    • Data Register(Input Register, Output Register)
    • Address Selected Logic
    • Bus Interface Logic
  • 特点:慢、浪费 CPU 性能
    • I/O操作全部由CPU直接完成(通过执行I/O指令完成)
    • 外设速度慢,CPU速度快,在外设准备过程中,CPU处在不断的查询之中,极为浪费CPU的性能
    • 外设与CPU完全串行工作,CPU效率低

因此:程序查询 I/O 只适合低速设备,高速 I/O 必须解放 CPU,避免空转。

中断 I/O 方式

中断

机器出现紧急事务,CPU不得不停下当前正在执行的程序,转去处理紧急事务,事务处理完后,再继续执行被中断的程序。

实现主机与外设并行、实时处理和过程控制、硬件故障处理、多道程序和分时操作。

中断 I/O

  • 过程:
  • I/O 接口基本组成:
    • Data Input Register
    • Data Output Register
    • Status Register
    • Control Register
    • Address Selected Logic
    • Interrupt Control Logic
    • Bus Interface Logic
  • 特点:
    • I/O操作仍然由CPU通过I/O指令完成
    • 在外设准备阶段,CPU可以执行其他程序,仅在外设准备就绪后,CPU才中断正在执行的程序,处理I/O事务
    • 在外设准备阶段,CPU与外设的工作可以认为是并行的
    • 中断I/O方式是目前最主要的I/O方式

DMA I/O方式

程序 I/O 和中断 I/O,CPU 都仍需参加 I/O 操作
因此,DMA(Direct Memory Access):

  • CPU对总线的控制被临时禁止。DMA控制器接管总线控制权,控制数据直接在存储器与外设之间高速交换
  • CPU不再介入具体的I/O操作,由DMA控制器来负责提供存储器地址信号、读写控制信号等。

DMA I/O 方式中,CPU与I/O设备在更大的程度上并行工作,效率更高。适合高速批量的数据传输,如视频显示刷新、磁盘存储系统的读写,存储器到存储器的传输等。

  • 过程:
    1. CPU 初始化 DMA 控制器
      • 设置数据传送方向
      • 设置 I/O 接口地址
      • 设置存储器起始地址
      • 设置传送的数据数量
      • 有关中断方式的设置:DMA结束后通过中断方式请求CPU处理
    2. DMA 请求:当接口做好数据传输的准备,通过有关逻辑向 CPU 发出 DMA 请求信号。
    3. DMA 响应:CPU 接到 DMA 请求,在当前总线周期操作结束后,暂停 CPU 对系统总线的控制和使用,发出 DMA 响应信号,并交出系统总线的控制权。
    4. DMA 操作:进行数据传送所有数据传送结束后,通过中断方式告知CPU进行善后处理。
      • 周期窃取方式(单字传送方式):
        • 每次DMA请求得到响应后,通过控制逻辑向系统总线发送存储器地址信号、存储器读写控制信号、 I/O接口读写控制信号等,完成一次数据传送。这些操作完全由硬件控制,一般仅需要一个总线周期,然后释放总线。
        • 一般适应存储器速度远高于 I/O 设备速度的情况。
      • 停止CPU访问内存(成组传送方式):
        • 一次DMA请求得到响应后,DMA控制器完全占用总线,进行多次DMA传送,直到所有数据传送完毕才释放总线,这段时间完全停止CPU访问内存。
        • 适应高速外设与存储器交换数据的情况。

因此,CPU 仅在开始 DMA 操作之前和完成 DMA 操作之后参与 I/O 处理,在 DMA 过程中,CPU 可以运行原来的程序

  • DMA 结构:

  • 与中断的区别:

DMA 可在指令周期内的任一存取周期结束时响应;不中断现行程序,无须保护现场;依靠硬件传输数据,适于传送大批数据。

通道 I/O 方式

通道(I/O Channel)本质上是一颗专门为 I/O 服务的“处理器”。

通道具有自己的指令系统 (基本上都是I/O指令),执行通道程序来实现和管理I/O,CPU基本上不需要管理I/O,CPU的效率得到更大的提高。通道程序由OS根据I/O任务的需求自动生成,存放在存储器中,由OS管理,用户程序执行和访问。

通道比 DMA 多了调度管理的能力,更加智能。

  • 分类:
    • 选择通道(单台快速外设)
    • 字节多路通道(多台慢速外设)
    • 数组多路通道(多台快速外设)