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接口?
- 实现设备的选择
- 实现数据缓冲达到速度匹配
- 实现格式转换
- 实现电平转化
- 传送控制命令
- 反应设备状态
- ...