Featured image of post I/O系统

I/O系统

I/O系统

主机与I/O设备的交互

I/O接口:又称I/O控制器、设备控制器(一般被集成在主板上)负责协调主机与外设的数据传输,内含以下三个寄存器

  • 数据寄存器
  • 控制寄存器
  • 状态寄存器

CPU控制I/O

  1. 程序查询:轮询查询I/O控制器的状态寄存器,检测到状态为已完成,就从寄存器取出数据放到主存
  2. 程序中断:等待I/O时,CPU执行其他程序,I/O完成后,I/O控制器向CPU发出请求,CPU相应中断请求,并取走数据放到主存
  3. DMA方式:主存与高速I/O有单独一条直接数据通路(DMA)总线,CPU向DMA接口发出读写命令,并告诉它主存地址、磁盘地址、读写数据量等参数
    • DMA控制器控制磁盘与主存数据读写,完成一整块读写数据,就向CPU发出一次中断
  4. 通道控制方式:用于主机上挂载巨多I/O设备的情况

image-20220624152726450

外部设备

磁盘

  1. 磁盘设备的组成

    • 存储区域:一块硬盘含有若干记录面,每个记录面划分为若干条磁道,而每条磁道又划分为若干个扇区(块),每个扇区是读写的最小单位。
      • 磁头数:即记录面数
      • 柱面数:表示硬盘每一面盘片上有多少条磁道,不同记录面上的相同编号的各个磁道组成一个柱面
      • 扇区数:每一条磁道上有多少个扇区
    • 磁盘驱动器:包含磁头、盘片组件
      • 磁盘控制器:硬盘存储器和主机的接口,标准有:IDE、SCSI、SATA等
  2. 性能指标:

    • 容量
    • 记录密度:单位面积上盘片记录的二进制数据、通常以道密度、位密度、面密度表示
      • 道密度:沿磁盘半径方向单位长度上的磁道数,最外侧磁道位密度最低(所有磁道记录的信息量都相等)
      • 位密度:磁道单位长度上能记录的二进制代码位数
      • 面密度:道密度*位密度
    • 平均存取时间:寻道时间+旋转延迟时间+传输时间
    • 数据传输率:设磁盘转数为r(转/秒),每条磁道有n个字节,则传输率Dr=rN
  3. 磁盘地址:主机向磁盘控制器发送的寻址信息

image-20220625151243617

  1. 磁盘工作流程
    • 寻址、读盘、写盘,每一个操作对应一个控制字
    • 第一步取控制字,第二部执行控制字
    • 读写操作是串行的

image-20220625151500024

磁盘阵列(RAID)

将多个独立的物理磁盘组成一个独立的逻辑盘,数据在多个物理盘上分割交叉存储、并行访问、拥有更好的存储性能、可靠性和安全性

  • RAID0:无冗余、无校验的磁盘阵列,有一个磁盘炸了,则无法恢复其数据,且无法检验二进制信息因为某些问题产生的跳变。

  • RAID1:镜像磁盘阵列,存两份数据,需要增加一倍的冗余磁盘

  • RAID2: 采用纠错的海明码的磁盘阵列,如果各个盘中有4bit信息位+3bit校验位,则只需增加3个冗余磁盘。

  • RAID3:位交叉奇偶校验的磁盘阵列

  • RAID4:块交叉奇偶校验的磁盘阵列

  • RAID5:无独立校验的奇偶校验磁盘阵列

I/O接口

并行接口:一个子直接或一个字所有位同时传送

串行接口:一位一位传送

这里的串行并行指的是外设和接口侧,主机和接口侧在2000年前并行传输,之后才有串行传输方式

作用

  • 数据缓冲:通过数据缓冲寄存器DBR达到主机与外设的速度匹配
  • 错误或状态检测:通过状态寄存器反馈设备的各种错误、状态信息、供CPU查阅
  • 控制和定时:接受从控制总线发来的控制信号、时钟信号
  • 数据格式转换:串-并、并-串

工作原理

I/O端口:I/O控制器中的各种寄存器

对系统内部暴露:

  • 数据缓冲寄存器和状态/控制寄存器的数据线
  • 地址译码和I/O控制逻辑的地址线和控制线,分别用以指明I/O端口以及读写I/O端口的信号、中断请求信号

对系统外部(设备)暴露:

  • 外设界面控制逻辑:用以表明数据、状态、控制
  1. 发命令:发送命令字到I/O控制寄存器,向设备发送命令
  2. 读状态:从状态寄存器读取状态字,获得设备或I/O控制器的状态信息
  3. 读写数据:从数据缓冲寄存器发送或读取数据,完成主机与外设的数据交换

image-20220625154435823

接口与端口

  1. 统一编址(存储器映射方式):与内存编址一致
    • RISC机器常用
    • 访存类的指令都可以访问I/O端口
    • 主存地址空间变小
    • 外设寻址时间长(地址位数多,地址译码速度慢)
  2. 独立编址:内存编址与端口编址两套独立
    • 靠不同的指令区分内存和I/O设备,需要专门I/O指令访问
    • intel处理器常用
    • 程序编制清晰(专门指令)
    • 地址位数小
    • 控制逻辑电路复杂性高,

image-20220625155856510

程序查询方式

image-20220626160644837

在发出OUT指令后,轮询执行IN指令,检查I/O接口的状态寄存器是否Ready

image-20220626162043319

  • CPU与I/O串行工作,一旦启动I/O,必须停止线性程序的运行,并在现行程序中插入一段程序

  • 程序查询方式适用于低速I/O

  • 独占查询方式下:CPU 100%的事件都在查询I/O状态,完全串行

  • 定时查询:在保证数据不丢失的情况下,每隔一段时间CPU就查询一次I/O状态,查询间隔,CPU可以执行其他任务

程序中断方式(重要)

中断:用于让正在执行现行程序的CPU转去执行发出中断请求的中断源的任务

流程:

  1. 中断请求:中断源向CPU发出中断请求信号
  2. 中断响应:CPU通过判优逻辑响应多个中断源同时发出的多个请求中的一个
  3. 中断处理:中断隐指令通过修改PC值跳转到中断服务程序

原子操作:一次运行到底的操作,不会被线程调度打断

关中断:用于实现原子操作,然而在发生非屏蔽中断时(掉电),中断也会被响应

中断系统

中断请求标记

用来区分不同的中断源,中断系统通过中断请求标记寄存器来保存中断源的状态(0/1表示)

中断判优

可以用硬件、软件实现

  • 硬件:硬件排队器,可以在CPU\中断源设置,速度快

  • 软件:程序查询方式,很慢

  • 中断判优优先级设置:

    1. 硬件故障、其次是软件中断(系统调用)
    2. 非屏蔽中断优于可屏蔽中断
    3. DMA请求优于I/O设备发送的中断请求
    4. 高速设备优于低速设备
    5. 输入设备优于输出设备
    6. 实时设备优于普通设备

中断隐指令

分为中断响应、程序断点压栈、关中断、向量地址→PC四步

如何引出中断服务程序:

  1. 排队器输出一组二进制数据交给中断向量地址形成部件
  2. 这个部件生成的是向量地址,存放着中断向量的地址(指针的指针)
  3. 拿到中断向量以后根据这个向量跳转到对应的中断服务入口地址
  • 由于中断服务程序存在被修改的可能(占据的地址空间变化),所以需要二级指针实现,这样不用修改硬件电路,只需修改中断向量即可

中断服务程序

  1. 保护现场:
    • 保存通用寄存器和状态寄存器的内容,用于终端结束后恢复CPU原来的环境,可以用堆栈、特定存储单元实现
  2. 中断服务:
    • 主体部分,有可能会修改ACC寄存器中的值
  3. 恢复现场:
    • 通过出栈指令或取数指令把1过程保存的信息返回寄存器中
  4. 中断返回:
    • 弹出栈底保存的断点信息,返回原程序断点处

CPU在指令的中断阶段检查有无中断源发出中断请求

单重中断:执行中断服务程序不相应新的中断请求

多重中断

在执行中断服务程序时,可以响应另一个中断请求,又称中断嵌套

image-20220702170122638

屏蔽字:用以屏蔽某些中断请求

中断屏蔽技术

  • 在中断服务程序中提前设置开中断指令。
  • 优先级别高的中断源有权中断优先级别低的中断源
  • 每一个中断源都有一个屏蔽触发器,1表示屏蔽该中断源请求,0表示正常申请,所有屏蔽触发器组合在一起,便构成一个屏蔽字寄存器,里面的内容被称为屏蔽字

image-20220702170735986

注:每个屏蔽字至少有一个1(至少能屏蔽自身的中断,防止自己中断自己)

image-20220702171145870

DMA方式

image-20220702171840464

  • DMA控制器通常用来控制以为单位读写的I/O设备

  • CPU向DMA控制器指明输入还是输出;传输多少数据;数据在主存、外设中的地址

传送前:

  1. 接受外设发出的DMA请求,并向CPU发出总线请求。
  2. CPU响应总线请求,发出总线响应信号,接管总线控制权,进入DMA操作周期

传送时:

  1. 确定传送数据的贮存单元地址及长度,并能自动修改主存地址计数和传送长度计数

  2. 规定数据在贮存和外设间的传送方向,发出读写等控制信号,执行数据传送操作

传送后:

  1. 向CPU报告DMA操作结束

image-20220702172516932

  • 控制/状态逻辑:指定传送方向,修改传送参数,并对DMA请求信号和CPU响应信号进行协调和同步,向总线发出总线请求。

  • DMA请求触发器:I/O准备好数据后给出一个控制信号,使DMA请求触发器置位,写满一个块时,向DMA控制器发出DMA请求

  • 主存地址计数器AR:存放要交换数据的主存地址

  • 传送长度计数器WC:用来寄存传送数据的长度,计数溢出时,数据即传送完毕,发出中断请求信号(实际上是传给中断机构一个溢出信号)

  • 中断机构:一个数据块传送完毕后触发中断机构,向CPU发出中断请求

注:在DMA传送过程中,DMA控制器将接管CPU地址总线、数据总线、控制总线,CPU的主存控制信号将被禁用

image-20220702173605798

DMA的特点

  • 使主存与CPU的固定联系脱钩,主存可被CPU、主存访问
  • 主存地址的确定、传送数据计数由硬件电路实现
  • 主存要开辟专用缓冲区,及时供给和接受外设和数据
  • DMA传送速度块,CPU和外设并行工作,提高了系统效率
  • DMA需要预处理和后处理
  • I/O和主机并行工作,程序和传送并行工作

DMA传送方式

  1. 停止CPU访问主存
    • CPU对主存的利用率低
  2. DMA和CPU交替访存
    • 不需要总线使用权的申请、建立、归还
    • 硬件逻辑复杂
  3. 周期挪用(周期窃取)
    • CPU正在访存时,等待存取周期结束让出总线
    • CPU不访存,不会发生冲突
    • CPU与DMA同时请求访存:DMA优先

image-20220702174240896

总有些事情高于其他
Built with Hugo
主题 StackJimmy 设计
本站访客数人次 总访问量 本文阅读量