I_O系统
I/O系统概念
- 外部设备:包括输入/输出设备及通过输入/输出接口才能访问的外部设备;
- 接口:在各个外设与主机之间传输数据时进行各种协调工作的逻辑部件。协调包括传输过程中速度的匹配、电平和格式转换;
- 输入设备:用于向计算机系统输入命令和文本、数据等信息的部件。键盘和鼠标是最基本的输入设备;
- 输出设备:用于将计算机系统中的信息输出到计算机外部进行显示、交换等的部件。显示器和打印机是最基本的输出设备;
- 外存设备:指除计算机内存及CPU缓存外的存储器。如硬磁盘、光盘等;
I/O系统构成
- I/O软件。包括驱动软件、用户程序、管理程序、升级补丁等。通常采用I/O指令和通道指令实现CPU与I/O设备的信息交换。
- I/O硬件。包括外部设备、设备控制器和接口、I/O总线等。通过设备控制器来控制I/O设备的具体动作,通过I/O总线与主机(总线)相连。
I/O接口
I/O接口的主要功能如下:
- 进行地址译码和设备选择。
CPU送来选择外设的地址码后,接口需要进行译码以产生设备选择信息。
- 实现主机和外设的通信联络机制。
解决主机与外设的时序配合问题。
- 实现数据缓冲。
设置数据缓冲器以缓解CPU与外设之间速度的不匹配。
- 信号格式的转换。
外设与主机的电平、数据格式等可能存在差异,接口应提供计算机与外设的信号格式的转换功能,如电平转换、并/串转换或串/并转换、模/数或数/模转换等。
- 传送控制命令和状态信息。
CPU要启动某一外设时,通过接口中的命令寄存器向外设发送启动命令;外设准备就绪时,将“已准备”状态信息送回接口的状态寄存器,并反馈给CPU。
外设向CPU提出中断请求时,CPU也应有相应的响应信号反馈给外设。
I/O接口结构
数据缓冲寄存器、状态/控制寄存器
I/O接口在主机侧通过I/O总线与内存、CPU相连。通过数据总线,在数据缓冲寄存器和内存或CPU的寄存器之间进行数据传送。
接口和设备的状态信息被记录在状态寄存器中,通过数据线将状态信息送到CPU。
CPU对外设的控制命令也通过数据线传送,一般将其送到I/O接口的控制寄存器。
控制寄存器和状态寄存器在传送方向上是相反的,并且使用时间上是错开的,所以可以将二者合二为一。
对数据缓冲寄存器、状态/控制寄存器的访问是通过相应的指令来完成的,通常这类指令叫做I/O指令。
I/O指令只能在操作系统内核的底层I/O软件中使用,是一种特权指令。
I/O控制逻辑部件
地址线用于给出要访问的I/O接口中的寄存器(端口)的地址,和控制线上的读写控制信号一起被送到I/O控制逻辑部件。此外,控制线还会传递一些仲裁信号和握手信号。
I/O控制逻辑部件还要有对控制寄存器里的命令字进行译码的功能,并将译码信号传递给外设界面控制逻辑以送给外设,同时将数据缓冲寄存器中的数据发送给外设或从外设读入数据。同时,它还有收集外设状态到状态控制寄存器的功能。
端口是接口电路中可以读/写的寄存器。
若干端口 + 相应的控制逻辑 = 接口
I/O端口类型
- 按数据传送方式分类
- 并行接口(一次一字节所有位同时传送)
- 串行接口(一位一位地传送)
- 按主机访问I/O设备的控制方式分类
- 程序查询接口
- 中断接口
- DMA接口
- 通道接口
- 按功能选择的灵活性分类
- 可编程接口
- 不可编程接口
I/O端口编址
I/O端口是指接口电路中可被CPU直接访问的寄存器,主要由数据接口、状态接口、控制接口。
通常,CPU能对数据接口执行读/写操作,对状态接口只能执行读操作,对控制接口只能执行写操作。
I/O控制方式
程序查询方式
信息交换的控制完全由CPU执行程序实现。
程序中断方式
关于中断:操作系统概述
DMA方式
- 预处理用以测试I/O设备状态,启动I/O设备后,CPU继续执行原来的程序,直至I/O设备准备好发送的数据或接收的数据时,I/O设备向DMA控制器发送DMA请求,再由DMA控制器向CPU发送总线请求(有时这两步统称为DMA请求)。
- 数据传送中,DMA的数据传输可以以单字节(或字)为单位,也可以以数据块为单位。
对于以数据块为单位的传送(如磁盘),DMA占用总线后的数据输入和输出都是通过循环来实现的。
- 后处理中,DMA控制器向CPU发送中断请求,中断服务程序做DMA结束处理,包括校验送入主存的数据是否正确、测试传送过程中是否出错以及决定是否继续使用DMA传送其他数据等。
DMA与CPU交替访存,适用于CPU工作周期比主存存储周期长的情况。
周期挪用,在CPU与DMA同时访存时,DMA优先挪用几个周期传送数据,传送完一个数据后立即释放总线,是一种单字传送方式。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了