输入输出系统

  • 总线
    • 指标
      • 总线线数/数据通路宽度/总线宽度
        • 总线的数据线数量。
      • 数据宽度
        • 一次分配总线传输数据的总量,其中包括多个时钟周期。
        • 分类:
          • 单字/单字节:每次传输固定一个字/字节,适合低速设备。
          • 定长块:每次传输长度固定的大块,适合高速设备。
          • 变长块:每次传输长度可变的大块,适合中高速设备,更灵活。
          • 单字加定长块:先传输固定长度块,如果不够,则继续用单字传输。适合速度较低、优先级较高设备。
          • 单字加变长块:结合变长块和单字优点,类似单字加定长块方法。
      • 总线带宽
        • 总线带宽 == 总线宽度 ×\times 总线频率。
    • 控制方式
      • 集中仲裁方式 - 链式查询 - Chain Query - 步骤: - 设备通过 BR 向控制器请求使用总线。 - 控制器通过 BG 发出授权,BG 按照链的方式串联各个设备。 - 每个设备如果受到授权且需要使用,则截获授权,通过 BS 通知控制器总线忙。 - 每个设备如果不需要使用,则把授权传递给下一个设备。 - 优点:控制线少、容易扩充。 - 缺点:故障敏感、高优先级部件饿死低优先级部件。 - 计数器查询 - Timer Query - 与链式查询类似,区别在于控制器自行轮询各个设备,通过 log2N\lceil \log_2 N \rceil 个线控制选择哪个设备。 - 优点:优先级方式灵活,可以顺序或循环使用各个部件。 - 缺点:控制线较多,需要 2+log2N2 + \lceil \log_2 N \rceil。 - 独立请求 - Separate Query - 每个部件独立使用一个 BR 请求使用,请求在控制器排队。 - 控制器按照优先级选择部件,通过单独的 BG 批准此部件。 - 优点:响应速度快、控制最灵活。 - 缺点:控制线多,需要 2N+12N + 1,控制电路复杂。
        • 分布式仲裁方式
          • 自举分布式
            • 每个设备需要使用总线时发出请求。
            • 总线仲裁时,每个设备检测是否有比自己优先级更高的设备请求:
              • 没有:发出总线忙,占用总线。
              • 有:暂停使用总线。
          • 冲突避免分布式
          • 并行竞争分布式
            • 总线上的每个设备都有一个唯一的仲裁号。
            • 需要使用总线的设备把自己的仲裁号发送到仲裁线上。
            • 每个设备根据并行竞争仲裁算法,决定在一定时间段后占用总线还是撤销仲裁号。
  • 中断
    • 条件
      • CPU 接受到中断请求信号。
      • CPU 允许中断。
      • 一条指令执行完毕。
    • 中断隐指令
      • 没有操作码、不能直接调用的操作。
      • 主要包括:保存断点、暂不允许中断、引出中断服务程序。
    • 允许和禁止
      • 中断允许触发器设置 1 时允许中断,0 时禁止中断。
      • 需要允许中断的情况:
        • 在中断服务程序执行完毕,恢复中断现场之后。
        • 在多重中断的情况下,保护中断现场之后。
      • 需要禁止中断的情况:
        • 当响应某一级中断请求,不再允许被其他中断请求打断时。
        • 在中断服务程序的保护和恢复现场之前。
    • 屏蔽和升级
      • 每个中断源关联一个屏蔽字,每一位为 1 表示屏蔽此中断源,0 表示允许触发。
      • 中断响应次序是由硬件排队电路决定的,无法改变。
      • 中断处理次序是可以由屏蔽字来改变的,低优先级的在响应后可以立刻被打断。
        • 中断响应后不会立刻开始处理,如果存在处理优先级更高的中断,则需要先被打断。
        • 如请求 1 和请求 2 同时排队,响应次序 1 先于 2,处理次序 2 先于 1,则先进入处理程序 1,然后立刻打断进入处理程序 2。
  • DMA
    • 定义
      • 在主存和外设间开辟专用通道,DMA 控制器自动控制传输,中间无需 CPU 干预。
      • 对 DMA 请求的响应可以在任意机器周期。
    • 步骤
      • 首先由外设向 DMA 控制器发出请求信号 DREQ。
      • DMA 控制器向 CPU 发出总线请求信号 HRQ。
      • CPU 向 DMA控制器发出总线响应信号 HLDA,此时,DMA 控制器获取了总线的控制权。
      • DMA控制器向外设发出 DMA 响应信号 DACK,表示 DMA 控制器已控制了总线,允许外设与主存交换数据。
      • 重复,直到字节计数器减到 0 为止:
        • DMA控制器按主存地址计数器的内容发出地址信号作为主存地址的选择,同时主存地址计数器的内容加 1 或减 1。
        • DMA 控制器发出 IOR 信号到外设,将外设数据读入总线,同时发出 MEMW 信号,将数据总线的数据写入地址总线选中的主存单元。
        • 传送长度计数器减 1。
      • DMA 控制器的 HRQ 降为低电平,总线控制权交还 CPU。
    • 传送方法
      • CPU 停止访问主存法:DMA 请求开始传送时,CPU 让出总线和主存,一直到 DMA 传送完全完成才可以继续访问。
      • 存储器分时法:主存存取周期划分成两部分,各自分配给 CPU 和 DMA 控制器。
      • 周期挪用法:默认 CPU 访问总线和主存,DMA 控制器需要传送一个单位的数据时,CPU 让出一个存取周期。DMA 控制器只在真正需要传送时才占用总线。