IO系统

IO系统是指计算机系统中负责管理输入输出操作的一组硬件和软件。它通常包括输入输出设备、设备控制器、设备驱动程序、输入输出缓存、输入输出子系统和操作系统中的输入输出服务程序等。IO系统的设计旨在提高计算机系统的性能和可靠性,使其能够处理各种输入输出设备的数据,并将这些数据传输到主存储器或其他输入输出设备。

IO系统的组成

IO指令

[ 操作码 | 命令码 | 设备码 ]

  • 操作码:表示这段指令是IO指令。
  • 命令码:表示具体的操作。
  • 设备码:表示要操作的IO设备的编号。

通道指令

用于主存和IO设备之间的数据传输

通过使用通道指令,计算机系统可以实现高效的输入输出操作,同时使计算机系统的主处理器可以在数据传输期间处理其他任务(DMA方式)。

IO设备与主机的联系方式

IO设备的编址

  • 统一编址

    • 将IO空间看作是内存空间的一部分,将IO设备的控制器映射到内存空间的一个区域中,落在这部分内存空间的就是IO空间。
    • 用正常的取数和存数指令进行操作即可。
  • 不统一编址

    • 将内存空间和IO空间分开管理,将IO设备的IO端口映射到一个独立的地址空间中
    • 需要使用特殊的IO指令或基址+偏移地址的方式来访问IO空间的特定地址。

设备选址

设备选择电路识别是否被选中。

传送方式

  • 串行
  • 并行

联络方式

  • 立即响应

  • 异步工作采用应答信号

    • 并行:例如IO接口向IO设备发送Ready信号(请求),IO设备收到后,写入/读取IO接口,读取结束后发送Strobe信号(回答)
    • 串行:例如一个低电平表示起始位(请求),然后若干个数据位,再两个高电平表示终止位(回答)。
  • 同步工作采用同步时标

IO设备与主机信息传送的控制方式

程序查询方式

graph TD; 现行程序 --> CPU向IO发送读指令; CPU向IO发送读指令 --> CPU读取IO状态; CPU读取IO状态 --> 检查状态; 检查状态 --> |未准备就绪| CPU读取IO状态; 检查状态 --> |准备就绪| 从IO接口中读取一个字到CPU; 检查状态 --> |出错| 结束; 从IO接口中读取一个字到CPU --> 从CPU向主存写入一个字; 从CPU向主存写入一个字 --> 完成否; 完成否 --> |否| CPU向IO发送读指令; 完成否 --> |是| 结束;

缺点:CPU一直被占用;

程序中断方式

graph LR; 1[IO工作]; 2[CPU不查询]; 3[CPU暂停现行程序]; 1 --> |自身准备阶段| 2; 1 --> |与主机交换信息| 3;

程序中断方式流程

graph TD; 2[IO设备工作]; 3[准备就绪]; 1[CPU读取IO状态]; 4{检查状态}; 5[从IO接口中读一个字到CPU]; 6[从CPU向主存写入一个字]; 7{完成否}; ending[结束]; 2-->3; 3-.-> |"IO --> CPU 中断请求"| 1; 1-->4; 4--> |出错| ending; 4--> |未出错| 5; 5-->6; 6-->7; 7--> |未完成| 1; 7--> |完成| ending; subgraph : s1[CPU向IO发读指令]; s2[CPU做其他事情]; cpu[CPU]; io[I/O]; s1 -.-> cpu; cpu --> io; s1 --> s2; end;

DMA方式

主存和IO之间有一条直接数据通道,不需要中断现行程序的执行(周期挪用)。

graph TD; startio[启动IO]; ioready[IO准备]; T[一个存储周期]; Tend[存取周期结束]; if{结束否?} startio-->ioready; ioready--> |周期窃取| T; T-->Tend; Tend --> if; if --> |未结束 周期窃取| T; if --> |结束| ... subgraph : ps1["CPU全程都可以执行现行程序"] end;
  • 在被挪用的周期中,总线控制权交给IO设备,CPU无法通过总线访存。
    • 虽然无法访问主存,但是可以继续执行Cache中的指令。

IO设备

除主机(CPU,主存)以外的均为IO设备。

IO接口

为什么设置IO接口?

  • 实现设备的选择
  • 实现数据缓冲达到速度匹配
  • 实现格式转换
  • 实现电平转化
  • 传送控制命令
  • 反应设备状态
  • ...
最后修改:2023 年 05 月 16 日
如果觉得我的文章对你有用,请随意赞赏