I/O 系统基本概念
I/O 系统中的几个基本概念如下:
- 外部设备。包括输入/输出设备及通过输入。输出接口才能访问的外存储结构。
- 接口。在各个外设与主机之间传输数据时进行各种协调工作的逻辑部件。协调包括传输过程中速度的匹配、电平和格式转换等。
- 输入设备,用于向计算机系统输入命令和文本、数据等信息的部件。键盘和鼠标是最基本的输入设备。
- 输出设备。用于将计算机系统中的信息输出到计算机外部进行显示、交换等的部件。显示器和打印机是最基本的输出设备。
- 外存设备。指除计算机内存及 CPU 缓存等外的存储器。硬磁盘、光盘等是最基本的外存设备。
一般来说,I/O 系统由 I/O 软件和 I/O 硬件两部分构成:
- I/O 软件。包括驱动程序、用户程序、管理程序、升级补丁等。通常采用 I/O 指令和通道指令实现 CPU 与 I/O 设备的信息交换。
- I/O 硬件。包括外部设备、设备控制器和接口、I/O 总线等。通过设备控制器来控制 I/O 设备的具体动作:通过 I/O 接口与主机(总线)相连。
在输入/输出系统中,经常需要进行大量的数据传输,而传输过程中有各种不同的 I/O 控制方式,基本的控制方式有以下 4 种:
- 程序查询方式。由 CPU 通过程序不断查询 I/O 设备是否已经做好准备,从而控制 I/O 设备与主机交换信息。
- 程序中断方式。只在 I/O 设备准备就绪并向 CPU 发出中断请求时才予以响应。
- DMA 方式。主存和 I/O 设备之间有一条直接数据通路,当主存和 I/O 设备交换信息时,无须调用中断服务程序。
- 通道方式。在系统中设有通道控制部件,每个通道都挂接若干外设,主机在执行 I/O 命令时,只需启动有关通道,通道将执行通道程序,从而完成 I/O 操作。
其中,方式 1 和方式 2 主要用于数据传输率较低的外部设备,方式 3 和方式 4 主要用于数据传输率较高的设备。
I/O 设备不可能直接与主板总线相连,它总是通过设备控制器来相连的。
I/O 指令是指令系统的一部分,时及其指令的一类,但其为了反映与 I/O 设备交互的特点,格式和其他通用指令相比有所不同。
通道程序存放在主存而非通道中,由通道从主存中取出并执行。通道程序由通道执行,且只能在具有通道的 I/O 系统中执行。
显示器的主要参数:
分辨率:所能表示的像素个数,屏幕上的每个光点就是一个像素,以宽和高的像素数的乘积表示,如 800 * 600、1280 * 1024等。
灰度级:灰度级是指黑白显示器中所显示的像素点的亮暗差别,在彩色显示器中则表现为颜色的不同,灰度级越多,图像层次越清楚,典型的有 8 位(256级)、16 位等。
刷新:光点只能保持极短的时间便会消失,为此必须在广电消失之前再重新扫描显示一遍,这个过程称为刷新。
刷新频率:指单位时间内扫描整个屏幕内容的次数。按照人的视觉生理,刷新频率大于 30 Hz 时才不会感到闪烁,通常显示器的刷新频率为 60~120 Hz。
显示存储器(VRAM):也称刷新存储器,为了不断提高刷新图像的信号,必须把一帧图像信息存储在刷新存储器中。其存储容量由图像分辨率和灰度级决定,分辨率越高,灰度级越多。刷新存储器容量越大。VRAM 容量 = 分辨率 * 灰度级位数,VRAM 带宽 = 分辨率 * 灰度级位数 * 帧频。
RAID(廉价冗余磁盘阵列)是指将多个独立的物理磁盘组成一个独立的逻辑盘,数据在多个物理盘上分割交叉存储、并行访问,具有更好的存储性能、可靠性和安全性。RAID 通过同时使用多个磁盘,提高了传输率;通过在多个磁盘上并行存取来大幅提高存储系统的数据吞吐量;通过镜像功能,提高安全可靠性;通过数据校验,提供容错能力。
在字符显示器的 VRAM 中存放 ASCII 码以显示字符。
刷新存储器中存储单元的字长取决于显示的颜色数,颜色数为 m,字长为 n,二者的关系为 2n = m。
I/O 接口
I/O 接口(I/O 控制器)是主机和外设之间的交接界面,通过接口可以实现主机和外设之间的信息交换。主机和外设具有各自的工作特点,它们在信息形式和工作速度上具有很大的差异,接口正是为了解决这些差异而设置的。
I/O 接口的主要功能如下:
- 实现主机和外设的通信联络控制。解决主机与外设时序配合问题,协调不同工作速度的外设和主机之间交换信息,以保证整个计算机系统能统一、协调地工作。
- 进行地址译码和设备选择。CPU 送来选择外设的地址码后,接口必须对地址进行译码以以产生设备选择信息,使主机能和指定外设交换信息。
- 实现数据缓冲。CPU 与外设之间的速度往往不匹配,为消除速度差异,接口必须设置数据缓冲寄存器,用于数据的暂存,以避免因速度不一致而丢失数据。
- 信号格式的转换。外设与主机两者的电平、数据格式都可能存在差异,接口应提供计算机与外设的信号格式的转换功能,如电平转换、并/串或串/并转换、模/数或数/模转换等。
- 传送控制命令和状态信息。CPU 要启动某一外设时,通过接口中的命令寄存器向外设发出启动命令;外设准备就绪时,则将“准备好”状态信息送回接口中的状态寄存器,并反馈给 CPU。外设向 CPU 提出中断请求和 DMA 请求时,CPU 也应有相应的响应信号反馈给外设。
CPU 与外设之间的信息传送,实质上是对接口中的某些寄存器(即端口)进行读或写,如传送数据是对数据端口 DBR 进行读写操作。
内部接口:内部接口与系统总线相连,实质上是与内存、CPU 相连。数据的传输方式只能是并行传输。
外部接口:外部接口通过接口电缆与外设相连,外部接口的数据传输可能是串行方式,因此 I/O 接口需具有串/并转换功能。
接口和端口是两个不同的概念。端口是指接口电路中可以进行读/写的寄存器,若干端口加上相应的控制逻辑才可以组成接口。
从不同的角度看,I/O 接口可以分为不同的类型。
- 按数据传送方式可分为并行接口(一个字节或一个字的所有位同时传送)和串行接口(一位一位地传送),接口要完成数据格式的转换。(这里所说的数据传送方式指的是外设和接口一侧的传送方式,而在主机和接口一侧,数据总是并行传送的)
- 按主机访问 I/O 设备的控制方式可分为程序查询接口、中断接口和 DMA 接口等。
- 按功能选择的灵活性可分为可编程接口和不可编程接口。
I/O 端口是指接口电路中可被 CPU 直接访问的寄存器,主要有数据端口、状态端口和控制端口,若干端口加上相应的控制逻辑电路组成接口。通常,CPU 能对数据端口执行读写操作,但对状态端口只能执行读操作,对控制端口只能执行写操作。
I/O 端口要想能够被 CPU 访问,必须要有端口地址,每个端口对应一个端口地址。而对 I/O 端口的编址方式有与存储器统一编址和独立编址两种。
- 统一编址,又称存储器映射方式,是指把 I/O 端口当作存储器的单元进行地址分配,这种方式 CPU 不需要设置专门的 I/O 指令,用统一的访存指令可以访问 I/O 端口。优点:不需要专门的输入/输出指令,可使 CPU 访问 I/O 的操作更灵活、更方便,还可使端口有较大的编址空间。缺点:端口占用存储器地址,使内存容量变小,而且利用存储器编址的 I/O 设备进行数据输入/输出操作,执行速度较慢。
- 独立编址,又称 I/O 映射方式,是指 I/O 端口地址与存储器地址无关,独立编址 CPU 需要设置专门的输入/输出指令访问端口。优点:输入/输出指令与存储器指令有明显区别,程序编制清晰,便于理解。缺点:输入/输出指令少,一般只能对端口进行传送操作,尤其需要 CPU 提供存储器读/写、I/O 设备读/写两组控制信号,增加了控制的复杂性。
在统一编址的方式下,区分存储单元和 I/O 设备是靠不同的地址线。
I/O 的编址方式采用统一编址方式时,进行输入/输出的操作的指令是访存指令。统一编址时,直接使用指令系统中的访存指令来完成输入/输出操作;独立编址时,则需要使用专门的输入/输出指令来完成输入/输出操作。
程序员进行系统调用访问设备使用的是逻辑地址。
I/O 方式
常用的 I/O 方式有程序查询、程序中断、DMA 和通道等,其中前两种方式更依赖于 CPU 中程序指令的执行。
外中断是指来自处理器和内存以外的部件引起的中断,包括 I/O 设备发出的 I/O 中断、外部信号中断(如用户按 Esc 键),以及各种定时器引起的时钟中断等。外中断在狭义上一般称为中断。
内中断主要是指在处理器和内存内部产生的中断,包括程序运算引起的各种错误,如地址非法、校验错、页面失效、存取访问控制错、算术溢出操作、数据格式非法、除数为 0、非法指令、用户程序执行特权指令、分时系统中的时间片中断及用户态到核心态的切换等。
硬件中断:通过外部的硬件产生的中断。硬件中断属于外中断。
软件中断:通过某条指令产生的中断,这种中断是可以编程实现的。软件中断是内中断。
非屏蔽中断:非屏蔽中断是一种硬件中断,此种中断通过不可屏蔽中断请求 NMI 控制,不受中断标志位 IF 的影响,即使在关中断(IF = 0)的情况下也会被响应。
可屏蔽中断:可屏蔽中断也是一种硬件中断,此种中断通过中断请求标记触发器 INTR 控制,且受中断标志位影响,在关中断情况下不接受中断请求。
中断判优既可以用硬件实现,又可用软件实现。硬件实现是通过硬件排队器实现的,它既可以设置在 CPU 中,又可以分散在各个中断源中,软件实现是通过查询程序实现的。一般来说,硬件故障中断属于最高级,其次是软件中断,非屏蔽中断优于可屏蔽中断,DMA 请求优于 I/O 设备传送的中断请求,高速设备优于低速设备,输入设备优于输出设备,实时设备优于普通设备等。
CPU 响应中断后,经过某些操作,转去执行中断服务程序。这些操作是由硬件直接实现的,我们将它称为中断隐指令。中断隐指令并不是系统中的一体真正的指令,它没有操作码,所以中断隐指令是一种不允许也不可能为用户使用的特殊指令。它所完成的操作如下:
- 关中断。在中断服务程序中,为了保护中断现场(即 CPU 主要寄存器中的内容)期间不被新的中断打断,必须关中断,从而保证被中断的程序在中断服务程序执行完毕后能接着正确地执行。
- 保存断点。为保证在中断服务程序执行完毕后能正确地返回到原来地程序,必须将原来程序的断点【即程序计数器(PC)的内容】保存起来。
- 引出中断服务程序。引出中断服务程序的实质是,取出中断服务程序的入口地址并传送给程序计数器(PC)。
不同的设备有不同的中断服务程序,每个中断服务程序都有一个入口地址,CPU 必须找到这个入口地址,即中断向量。
中断处理过程:(1)关中断(2)保存断点(3)引出中断服务程序(以上三步由硬件完成)(4)保存现场和屏蔽字(5)开中断(6)执行中断服务程序(7)关中断(8)恢复现场和屏蔽字(9)开中断、中断返回(以上六步由中断程序完成)
在 DMA 方式中,中断的作用仅限于故障和正常传送结束时的处理。
主存和 DMA 接口之间有一条直接数据通路。由于 DMA 方式传送数据不需要经过 CPU,因此不必中断现行程序,I/O 与主机并行工作,程序和传送并行工作。
DMA 方式具有以下特点:
- 它使主存与 CPU 的固定联系脱钩,主存既可被 CPU 访问,又可被外设访问。
- 在数据块传送时,主存的地址确定、传送数据的计数等都由硬件电路直接实现。
- 主存中要开辟专用缓冲区,及时供给和接收外设的数据。
- DMA 传送速度快,CPU 和外设并行工作,提高了系统效率。
- DMA 在传送开始之前要通过程序进行预处理,结束后要通过中断方式进行后处理。
当 I/O 设备需要进行数据传输时,通过 DMA 控制器向 CPU 提出 DMA 传送请求,CPU 响应后将让出系统总线,由 DMA 控制器接管总线进行数据传送。其主要给功能如下:
- 接受外设发出的 DMA 请求,并向 CPU 发出总线请求。
- CPU 响应此总线请求,发出总线响应信号,接管总线控制权,进入 DMA 操作周期。
- 确定传送数据的主存单元地址及长度,并自动修改主存地址计数和传送长度计数。
- 规定数据在主存和外设之间的传送方向,发出读写等控制信号,执行数据传送操作。
主存和 DMA 控制器之间有一条数据通路,因此主存和 I/O 设备之间交换信息时,不通过 CPU。但当 I/O 设备和 CPU 同时访问主存时,可能发生冲突,为了有效地使用主存,DMA 控制器与 CPU通常采用以下 3 种方式使用主存:
- 停止 CPU 访问主存。这种方式是当外设需要传送成组数据时,由 DMA 接口向 CPU 发送一个信号,要求 CPU 放弃地址线、数据线及有关控制线的使用权,DMA 接口获得总线控制权后,开始进行数据传送。数据传送结束后,DMA 接口通知 CPU 可以使用主存,并把总线控制权交还给 CPU。在这种传送过程中,CPU 基本处于不工作状态或保持原始状态。
- DMA 与 CPU 交替访存。这种方式适用于 CPU 的工作周期比主存存取周期长的情况。例如,若 CPU 的工作周期是 1.2μs,主存的存取周期小于 0.6μs,则可将一个 CPU 周期分为 C1 和 C2 两个周期,其中 C1 专供 DMA 访存, C2 专供 访存。这种方式不需要总线使用权的申请、建立和归还过程,总线使用权是通过 C1 和 C2 分时控制的。
- 周期挪用(周期窃取)这种方式是前两种方式的折中。当 I/O 设备没有 DMA 请求时,CPU 按程序的要求访问主存,一旦 I/O 设备有了 DMA 请求,就会遇到 3 种 情况,第 1 种是此时 CPU 不在访存(入 CPU 正在执行乘法指令),故 I/O 的访存请求与 CPU 未发生冲突;第 2 种是 CPU 正在访存,此时必须待存取周期结束后,CPU 再将总线占有权让出;第 3 种是 I/O 和 CPU 同时请求访存,出现访存冲突,此时 CPU 要暂时放弃总线占有权,由 I/O 设备挪用一个或几个存取周期。
DMA 方式和中断方式的区别:
- 中断方式是程序的切换,需要保护和恢复现场;而 DMA 方式除了预处理和后处理,其他时候不占用 CPU 的任何资源。
- 对中断请求的响应只能发生在每条指令执行完毕时(即指令的执行周期后);而对 DMA 请求的响应可以发生在每个机器周期结束时(在取指周期、间址周期、执行周期后均可),只要 CPU 不占用总线就可被响应。
- 中断传送过程需要 CPU 的干预;而 DMA 传送过程不需要 CPU 的干预,故数据传输率非常高,适合于高速外设的成组数据传送。
- DMA 请求的优先级高于中断请求。
- 中断方式具有对异常事件的处理能力,而 DMA 方式仅局限于传送数据块的 I/O 操作。
- 从数据传送来看,中断方式靠程序传送,DMA 方式靠硬件传送。
中断向量的地址是中断服务程序入口地址的地址。(俄罗斯套娃再现)
只有具有 DMA J接口的设备才能产生 DMA 请求。
一条指令执行完毕不可能发生中断请求,而可能响应中断请求。
允许中断触发器置 0 表示关中断,由中断隐指令完成,即由硬件自动完成。
多重中断系统在保护被中断进程现场时关中断,执行中断处理程序时开中断,即中断处理期间 CPU 不一定处于关中断状态。
程序中断方式和 DMA 方式都有中断请求,但目的不同。
CPU 响应中断方式的特点是 CPU 和外设并行工作,传送与主程序串行工作;DMA 方式的特点是 CPU 与外设并行工作,传送与主程序并行工作。
CPU 响应 DMA 请求的条件是当前机器周期执行完。DMA 在与主存交换数据时通过周期窃取方式,窃取的是存储周期。
DMA 方式传送数据时,挪用周期不会改变 CPU 现场,因此无须占用 CPU 的程序计数器和寄存器。
中断响应优先级是由硬件排队线路或中断查询程序的查询顺序决定的,不可动态改变;而中断处理优先级可以由中断屏蔽字来改变,反映的是正在处理的中断是否比新发生的中断的处理优先级低(屏蔽位为“0”,对新中断开放),若是,则中止正在处理的中断,转到新中断去处理,处理完后再回到刚才被中止的中断继续处理。
以上均来自王道书籍及课程等