计算机硬件系统:CPU、存储器、输入输出系统。
-
I / O 与主机交换信息的三种方式
- 程序查询
- 中断
- DMA
- IO通道
- IO处理机
输入输出系统的发展历程
-
早期阶段:IO设备 与 主存交换信息都必须通过 CPU。即分散连接(各部件之间使用单独的连线)。
,— -
特点:
- 每个IO设备都有一套独立的逻辑电路与CPU相联,线路十分复杂。
- 输入输出的过程穿插在CPU执行指令的过程中。IO与主存交换信息时,CPU停止自己的工作。即 IO设备 和 CPU 是串行工作的。
- 由于每个 IO设备 都是和 CPU 以独立的线路相连,所以增加、撤除、更换IO设备十分的麻烦。连在 CPU 上的 IO 数目不多,交换信息量少。
-
接口模块和 DMA 阶段
- IO设备 通过接口模块、总线与主机连接。
,— - 接口:内部设有数据通路和控制线路。功能有1、速度匹配缓冲;2、串并转换,via sw or hw;3、将CPU的控制信号传给IO设备,将IO设备的反馈信号传给CPU;4、参与中断请求处理;5、选址,使总线上多台IO设备分时占用总线,实现并工。
- 接口实现的不是绝对的并行工作:CPU工作 — IO设备与主存交换信息 是通过中断来实现。
- 直接存储器存取DMA:IO设备和主存之间有一条独立的数据通路。使得IO和主存在交换数据时,CPU 能够做一些不用访存的工作。
- IO设备 通过接口模块、总线与主机连接。
-
通道结构阶段
- 小微型计算机中采用DMA可以实现高速IO和主存交换信息;但中大型计算机系统中,IO设备很多,DMA已经不再合适---->硬件成本,控制复杂,容易冲突,此时若采用DMA进行频繁数据交换,会影响CPU的工作。
,— - 通道:视为一种特殊功能、不完全独立于CPU 的处理器;具有 CPU 的部分权力。有专门的通道指令(又叫通道控制字,保存在主存中,由通道从主存取出、执行);通道能独立执行由通道指令编写的输入输出程序。IO设备 与主存交换信息时,由通道来负责,CPU不在直接参与管理。效率提高,硬件成本上升。
- 小微型计算机中采用DMA可以实现高速IO和主存交换信息;但中大型计算机系统中,IO设备很多,DMA已经不再合适---->硬件成本,控制复杂,容易冲突,此时若采用DMA进行频繁数据交换,会影响CPU的工作。
,–
,–
- IO处理机阶段
-
是通道方式的进一步扩展,CPU 将 IO操作 和 外设 的管理权全部交给IO处理机。本质是多机系统。
-
基本独立于主机工作,与 CPU 的并行性更高。例如可以采用微处理器来作为 IO处理机。带有处理机的终端叫做智能终端。
-
输入输出系统的组成
-
总体上分为 SW 和 HW。其中 SW 包括 IO指令 和 通道指令。
-
IO SW
- 功能:数据的输入输出,IO设备 与 主机的协调工作
- IO SW 可以分为 IO指令和通道指令。
- IO指令:是机器指令 / CPU指令的一部分,IO指令的字长与其它的机器指令相同。格式是:操作码 + 命令码 + 设备码。操作码:用来区别 IO指令和其他指令(访存、算逻、控制指令等)。设备码:用来选择多台 IO设备中的某一台,相当于设备地址。命令码:说明 IO设备的具体操作,如输入到哪里、从哪里输出、状态测试(设备忙/闲)、操作具体 IO设备的指令。
- 通道指令:又叫通道控制字。针对具有通道的 IO系统专门设置的指令,通道自身的指令。此类 IO系统有自己的控制器。功能是:指明主机参与的地址,命令码,设备码。一旦CPU启动IO设备,就由通道来代替 CPU 来对IO设备进行管理。
,–
,–
-
IO HW
-
一般是接口模块,IO设备
-
对于通道,一个通道可以和多个设备控制器相连,一个设备控制器可以连接多个同类设备。
,—
IO设备与主机的联系方式
-
-
IO设备的编址方式:把 IO设备码看作地址码。有两种方式:统一编址和不统一编址。
统一编址:将 IO地址 看做存储器地址的一部分。因此 访问IO 的指令与 访存 指令类似,无需专门的 IO访问指令;但统一编址占用了主存空间。
不统一编址:IO地址和主存地址是分开的,不占用主存的容量,但访问 IO需要专门指令。 -
IO设备的寻址:
利用设备选择电路来确认设备号选择哪一个IO。
IO指令格式为:操作码 + 命令码 + 设备码。在设备码字段指出设备号。 -
传送方式:
串行—>速度慢,支持远距离;
并行—>速度快,不支持远距离并且需要较多的数据线。 -
联络方式:立即响应方式、异步—>应答、同步—>时标
立即响应方式:适用于工作速度缓慢的 IO设备,通常使其处于准备/等待的状态与 CPU 联络。CPU 的 IO指令 一到,此类IO设备便立即响应。
应答信号联络—>异步工作:IO设备的速度与主机工作速度不匹配时,并行异步工作方式为一应一答的方式;而串行异步采用两组特殊标记来表示起始和结束。
同步时标—>同步工作:要求IO设备 与 CPU的速度完全同步。还要配有专门的电路来产生同步时标。 -
IO设备 与主机的连接方式:
辐射式:每台IO设备都有控制线和信号线与主机相连。初级阶段。
总线式:通过一组总线将所有的 IO 与总线连接。
,–
,–
IO设备与主机信息传送的控制方式
- 共有五种:程序查询、程序中断、DMA方式、IO通道方式、IO处理机方式。下面介绍前三种。
- 程序查询:主机启动IO后,通过程序不断查询IO设备是否准备就绪。在IO接口内设置一个反映状态是否就绪的标记,CPU的查询就是不断检测这个标记。
,–
,–
程序查询,CPU和IO是完全串行工作,效率很低。
- 程序中断方式
CPU启动了IO设备后,不查询设备是否已经准备好,继续执行自身程序;IO设备准备好后向CPU发出中断请求后才予以相应。CPU在每一条指令执行结束后查询中断,若有则执行中断服务程序(CPU从IO接口读一个字送到主存)执行完返回原程序断点,接着执行下一条指令。
如果传送的是一批数据,CPU则会在读完一个字后向IO设备发送启动信号,然后做自己的事情,等待中断;如此循环,直到这批数据传送结束。
,-
,-
,-
- DMA方式:IO设备直接与主存交换信息,不占用CPU;主存与IO设备之间有一条数据通路。
DMA方式虽然不占用CPU,但是DMA和CPU不能同时访问主存,若二者同时访问主存,DMA的总线占有权优先级较高。把这种DMA对总线的占有称为窃取 / 挪用。窃取的时间一般为一个周期。虽然此时DMA占用了总线,但CPU仍能进行内部运算(如乘法运算)。 - 三种方式的比较:
,-
,-
I/O接口
概述
- 接口:两个系统/部件之间的交界部分。可以是两种硬件设备的连接电路;也可以是两个软件之间的共同逻辑边界。
- I/O 接口:主机与IO设备之间设置的一个硬件电路及其相应的软件控制。
- 设置IO设备的原因:
1、一台机器通常有多个IO设备,有各自的设备号/地址,通过接口来选择设备/选址。
2、各个IO设备、CPU的工作速度不一样,通过IO接口来实现数据缓冲、速度匹配。
3、有些IO设备是串行传送数据,而CPU一般是并行传送数据,通过接口可实现 串 - 并转换。串并转换可以由 SW 或者 HW 来实现。
4、IO设备 和 CPU 的输入输出电平可能不同,通过 IO接口来实现电平转换。
5、CPU 对 IO设备的控制命令通过 IO接口来传送。IO设备 向 CPU 传递反馈信号(自身状态)。 - 接口(interface)和端口(port)的区别:
1、端口一般是指接口电路中的一些寄存器,包括数据端口,控制端口,状态端口;分别用来存放 数据信息,控制信息,状态信息。
2、接口是由若干个端口加上相应的控制逻辑组成的。 - IO接口分类:
1、按数据传送方式:并行接口、串行接口
2、按功能选择的灵活性:可编程接口和不可编程接口;可编程接口的功能可以由程序来改变或者选择;不可编程接口的功能可由硬连线逻辑来选择或改变。
3、按通用性:通用接口、专用接口
4、按数据传送的控制方式:程序型接口、DMA型接口。程序型接口用于连接速度较慢的IO设备,利用程序中断的方式来与CPU交换信息;DMA型接口用于连接高速IO设备。
程序查询方式
- 核心是启动IO设备后每时每刻不断查询IO设备是否准备就绪。
当系统里有多个IO设备时,需要按各个IO设备在系统中的优先级逐级查询。
,–
,–
程序查询方式在传送过程中需要占用CPU内部的寄存器,所以传送前需要先将寄存器原内容保护起来。
计数值用来记录剩余要传送的字节数。
输入时:IO设备准备就绪就是接口电路的数据缓冲寄存器 DBR 已装满。输入缓冲满。CPU可以取走数据。
输出时:IO设备准备就绪就是接口电路中 DBR的数据已经被 IO设备 取走。输入缓冲空。CPU可以将下一个数据送入DBR。
程序中断方式
- 适用于速度较慢的IO设备。
,–
,–
-
当计算机正在运行时,出现突然掉电这种异常情况,CPU中的信息会丢失,利用中断技术在掉电瞬间启动另一个电源,将有用信息转移到非易失的存储介质中。
中断在实时控制领域也有广泛使用。 -
中断源:能向CPU提出各种中断请求的设备。
-
入口地址的寻找可以通过硬件或软件的方法来完成。
- 硬件向量法:由硬件电路来产生向量地址;通过向量地址来寻找设备的中断服务程序入口地址。
,–
,–
- 中断服务程序的流程:
1、保护现场:由中断隐指令(硬件电路)来保存程序的断点。
2、中断服务:首先保护寄存器的内容;然后不同的中断源,中断服务操作内容也是不同的。;由中断服务程序来保存寄存器的内容。
3、恢复现场:退出中断服务程序前,恢复寄存器的值。(利用取数指令或者POP指令)
4、中断返回:返回断点,继续执行原程序。
DMA方式
- IO设备与主存交换信息不经过CPU,省去了保护现场、恢复现场;
适用于高速IO 和主存交换信息;
DMA的优先级 高于程序中断。 - DMA 的总线优先权高于 CPU,当二者同时访存时,每次 DMA 通过周期窃取占用一个存取周期。
有三种方式来安排主存的使用权:
1、停止CPU访存:DMA在访存时,CPU处于保持/不工作状态;DMA的准备时间也远大于一个存取周期,主存的利用率低。
如软盘读一个八位二进制数要 32 us ,三半导体存储器的存取周期远小于 1 us;在这 32 us时间里,主存基本空闲,CPU也不能访存,主存利用率较低。
2、周期挪用/窃取:每次IO设备发出 DMA请求,IO设备便 挪用/窃取 一个或几个主存周期。IO访存优先于CPU—>IO设备不立即访问主存传出数据,就有可能丢失数据。
这种方法需要总线使用权的申请、建立和归还步骤。
本方法较为广泛应用。
3、DMA 和 CPU交替访问:适用于CPU的工作周期 比 主存存取周期长的情况。那么可将CPU的每一个工作周期一分为二,前半周期 C1 专供DMA访存,后半周期 C2 供CPU访存。
总线使用权由 C1 和 C2分别控制,总线控制权的转移不需要什么时间,但硬件电路会变得复杂。 - 目前常采用 DMA控制器 控制多个IO设备:可分为选择型和多路型。
选择型适合 数据传输率很高的设备。
多路型适合 同时为多个慢速设备服务,可进一步分为链式多路和独立请求方式多路。
,-
,-
- DMA的工作过程:预处理,数据传送,后处理
其中数据传送完毕后,回想CPU申请程序中断,进入中断服务程序,执行后处理。
习题补充
- CPU在每个指令周期结束采样中断请求信号;
CPU在每个存取周期结束采样DMA的总线请求信号。 - 一次中断的流程:
中断请求 -----> 中断判优 -----> 中断响应 -----> 中断服务 -----> 中断返回 - 中断响应时需要保护现场:
1、保护 程序计数器(PC),由 硬件自动 / 中断隐指令 实现。
2、保护 寄存器内容,由中断服务程序实现。 - 中断接口电路通过 数据总线 将向量地址送至CPU。
- 单重中断服务程序流程:关中断 -----> 保护现场 -----> 中断服务 -----> 恢复现场 -----> 开中断 -----> 中断返回
多重中断服务程序流程:关中断 -----> 保护现场 -----> 开中断 -----> 中断服务 -----> 恢复现场 -----> 中断返回 - 硬件向量法:由硬件产生向量地址。中断排队电路的输出到设备编码器,又来形成向量地址。再传到PC,从而执行中断服务程序。
,–
,–
- 程序中断方式的中断请求用于数据传送;靠程序来传送数据。
DMA方式的中断请求用于后处理(如校验数据)。靠 HW 来传送数据。