272 KiB
输入输出系统
输入输出基本概念
I/O系统发展
- 早期,$CPU$和$I/O$串行工作,分散连接:
- 程序查询方式:由$CPU$通过程序不断查询$I/O$设备是否已做好准备,从而控制$I/O$设备与主机交换信息。
- 接口模块和$DMA$阶段,$CPU$和$I/O$并行工作,总线连接:
- 中断方式:只在$I/O$设备准备就绪并向$CPU$发出中断请求时才予以响应。
- $DMA$方式:主存和/O设备之间有一条直接数据通路,当主存和$I/O$设备交换信息时,无需调用中断服务程序。
- 具有$I/O$通道结构,在系统中设有通道控制部件,每个通道都挂接若干外设,主机在执行$I/O$命令时,只需启动有关通道,通道将执行通道程序,从而完成$I/O$操作。
- 具有$I/O$处理机。
I/O系统组成
- $I/O$软件:
- 包括驱动程序、用户程序、管理程序、升级补丁等。
- 通常采用$I/O$指令和通道指令实现$CPU$和$I/O$设备的信息交换:
- $I/O$指令:
- $CPU$指令的一部分。
- 机器指令的一部分。
- 反映$CPU$与$I/O$设备交换信息的特点。
- 分为操作码(表明识别$I/O$指令)+命令码(执行的操作)+设备码(操作的设备)。(与一般指令格式不同)
- 通道指令(通道程序):
- 通道自身的指令。
- 指出数据的首地址、传送字数、操作作命令。
- 通道指令放在主存中。
- 通道指令由通道执行。由$CPU$执行启动$I/O$设备的指令,通道执行通道指令代替$CPU$对$I/O$设备进行管理。
- 只有具备通道的$I/O$系统才能执行。
- $I/O$硬件:
- $I/O$接口。
- 设备控制器:通过设备控制器,$I/O$设备与主板的系统总线相联。
- 外设。
外部设备
外部设备也称外围设备,是除了主机以外的、能直接或间接与计算机交换信息的装置。
输入设备
用于向计算机系统输入命令和文本、数据等信息的部件。键盘和鼠标是最基本的输入设备。
键盘
- 键盘是最常用的输入设备,通过它可发出命令或输入数据。
- 键盘通常以矩阵的形式排列按键,每个键用符号标明它的含义和作用。
- 每个键相当于一个开关,当按下键时,电信号连通;当松开键时,弹簧把键弹起,电信号断开。
- 键盘输入信息可分为三个步骤:
- 查出按下的是哪个键。
- 将该键翻译成能被主机接收的编码,如$ASCII$码。
- 将编码传送给主机。
鼠标
- 鼠标是常用的定位输入设备,它把用户的操作与计算机屏幕上的位置信息相联系。
- 常用的鼠标有机械式和光电式两种。
- 工作原理:当鼠标在平面上移动时,其底部传感器把运动的方向和距离检测出来,从而控制光标做相应运动。
输出设备
用于将计算机系统中的信息输出到计算机外部进行显示、交换等的部件。显示器和打印机是最基本的输出设备。
显示器
按显示设备所用的显示器件分类:
- 阴极射线管($CRT$)显示器:
- $CRT$显示器主要由电子枪、偏转线圈、荫罩、高压石墨电极和荧光粉涂层及玻璃外壳$5$部分组成。
- 具有可视角度大、无坏点、色彩还原度高、色度均匀、可调节的多分辨率模式、响应时间极短等目前$LCD$难以超过的优点。
- 液晶显示器($LCD$):
- 利用液晶的电光效应,由图像信号电压直接控制薄膜晶体管,再间接控制液品分子的光学特性来实现图像的显示。
- 体积小、重量轻、省电、无辐射、绿色环保、画面柔、不伤眼等。
- $LED$显示器:通过控制半导体发光二极管进行显示,用来显示文字、图形、图像等各种信息。
- $LCD$、$LED$是两种不同的显示技术,$LCD$是由液态晶体组成的显示屏,而$LED$则是由发光二极管组成的显示屏。与$LCD$相比,$LED$显示器在亮度、功耗、可视角度和刷新速率等方面都更具优势。
按所显示的信息内容分类:
- 字符显示器:
- 显示字符的方法以点阵为基础。点阵是指由$m\times n$个点组成的阵列。点阵的多少取决于显示字符的质量和字符窗口的大小。字符窗口是指每个字符在屏幕上所占的点数,它包括字符显示点阵和字符间隔。
- 将点阵存入由$ROM$构成的字符发生器中,在$CRT$进行光栅扫描的过程中,从字符发生器中依次读出某个字符的点阵,按照点阵中$0$和$1$代码不同控制扫描电子束的开或关,从而在屏幕上显示出字符。对应于每个字符窗口,所需显示字符的$ASCII$代码被存放在视频存储器$VRAM$中,以备刷新。
- 按扫描方式不同可分为:光栅扫描显示器、随机扫描显示器。
- 图形显示器:
- 将所显示图形的一组坐标点和绘图命令组成显示文件存放在缓冲存储器中,缓存中的显示文件传送给矢量(线段)产生器,产生相应的模拟电压,直接控制电子束在屏幕上的移动。为了在屏幕上保留持久稳定的图像,需要按一定的频率对屏幕进行反复刷新。
- 这种显示器的优点是分辨率高且显示的曲线平滑。目前高质量的图形显示器采用这种随机扫描方式。
- 缺点是当显示复杂图形时,会有闪烁感。
- 图像显示器。
参数:
- 屏幕大小:以对角线长度表示,常用的有$12\sim29$英寸等。
- 分辨率:所能表示的像素个数,屏幕上的每一个光点就是一个像素,以宽、高的像素的乘积表示,例如,$800\times600$、$1024\times768$和$1280\times1024$等。
- 灰度级:指黑白显示器中所显示的像素点的亮暗差别,在彩色显示器中则表现为颜色的不同,灰度级越多,图像层次越清楚逼真,典型的有$8$位($256$级)、$16$位等。$n$位可以表示$2^n$种不同的亮度或颜色。
- 刷新:光点只能保持极短的时间便会消失,为此必须在光点消失之前再重新扫描显示一遍,这个过程称为刷新。
- 刷新频率:单位时间内扫描整个屏幕内容的次数,按照人的视觉生理,刷新频率大于$30Hz$时才不会感到闪烁,通常显示器刷新频率在$60$到$120Hz$。
- 显示存储器($VRAM$):也称刷新存储器,为了不断提高刷新图像的信号,必须把一帧图像信息存储在刷新存储器中。其存储容量由图像分辨率和灰度级决定,分辨率越高,灰度级越多,刷新存储器容量越大。
- $VRAM$容量=分辨率×灰度级位数。
- $VRAM$带宽=分辨率×灰度级位数×帧频。
每个存储汉字数据的汉字内码占$2B$,表示汉字形体的字形码以$16\times16$点阵表示,为$32B$大小。
打印机
打印机是计算机的输出设备之一,用于将计算机处理结果打印在相关介质上。
按印字原理不同可分为:
- 击打式打印机:
- 利用机械动作使印字机构与色带和纸相撞而打印字符。
- 优点:设备成本低;印字质量好。
- 缺点:噪声大;速度慢。
- 非击打式打印机:
- 采用电、磁、光、喷墨等物理、化学方法来印刷字符。
- 优点:速度快;噪声小。
- 缺点:成本高。
按打印机工作方式不同可分为:
- 串行打印机:
- 逐字打印。
- 速度慢。
- 行式打印机:
- 逐行打印。
- 速度快。
按工作方式可分为:
- 针式打印机:
- 原理:在联机状态下,主机发出打印命令,经接口、检测和控制电路,间歇驱动纵向送纸和打印头横向移动,同时驱动打印机间歇冲击色带,在纸上打印出所需内容。
- 特点:针式打印机擅长“多层复写打印”,实现各种票据或蜡纸等的打印。它工作原理简单,造价低廉,耗材(色带)便宜,但打印分辨率和打印速度不够。
- 喷墨式打印机:
- 原理:带电的喷墨雾点经过电极偏转后,直接在纸上形成所需字形。彩色喷墨打印机基于三基色原理,即分别喷射$3$种颜色墨滴,按一定的比例混合出所要求的颜色。
- 特点:打印噪声小,可实现高质量彩色打印,通常打印速度比针式打印机快;但防水性差,高质量打印需要专用打印纸。
- 激光打印机:
- 原理:计算机输出的二进制信息,经过调制后的激光束扫描,在感光鼓上形成潜像,再经过显影、转印和定影,便在纸上得到所需的字符或图像。
- 特点:打印质量高、速度快、噪声小、处理能力强;但耗材多、价格较贵、不能复写打印多份,且对纸张的要求高。激光打印机是将激光技术和电子显像技术相结合的产物。感光鼓(也称为硒鼓)是激光打印机的核心部件。
外存设备
- 是指除计算机内存及$CPU$缓存等以外的存储器。硬磁盘、光盘等是最基本的外存设备。
- 计算机的外存储器又称为辅助存储器,目前主要使用磁表面存储器。
- 所谓“磁表面存储”,是指把某些磁性材料薄薄地涂在金属铝或塑料表面上作为载磁体来存储信息。磁盘存储器、磁带存储器和磁鼓存储器均属于磁表面存储器。
- 磁表面存储器的优点:
- 存储容量大,位价格低。
- 记录介质可以重复使用。
- 记录信息可以长期保存而不丢失,甚至可以脱机存档。
- 非破坏性读出,读出时不需要再生。
- 磁表面存储器的缺点:
- 存取速度慢。
- 机械结构复杂。
- 对工作环境要求较高。
- 原理:当磁头和磁性记录介质有相对运动时,通过电磁转换完成读/写操作。
- 编码方法:按某种方案(规律),把一连串的二进制信息变换成存储介质磁层中一个磁化翻转状态的序列,并使读/写控制电路容易、可靠地实现转换。
- 磁记录方式:通常采用调频制($FM$)和改进型调频制($MFM$)的记录方式。
磁盘存储器
- 磁盘设备的组成:
- 存储区域:一块硬盘含有若干个记录面,每个记录面划分为若干条磁道,而每条磁道又划分为若干个扇区。
- 扇区(也称块)是磁盘读写的最小单位,也就是说磁盘按块存取。
- 磁头数($Heads$):即记录面数,表示硬盘总共有多少个磁头,磁头用于读取/写入盘片上记录面的信息,一个记录面对应一个磁头。
- 柱面数($Cylinders$):表示硬盘每一面盘片上有多少条磁道,一个盘组中,不同记录面的相同编号(位置)的诸磁道构成一个圆柱面。
- 扇区数($Sectors$):表示每一条磁道上有多少个扇区。
- 硬盘存储器:
- 硬盘存储器由磁盘驱动器、磁盘控制器和盘片组成。
- 磁盘驱动器:核心部件是磁头组件和盘片组件,温彻斯特盘是一种可移动头固定盘片的硬盘存储器。
- 磁盘控制器:是硬盘存储器和主机的接口,主流的标准有$IDE$、$SCSI$、$SATA$等。
- 磁盘的性能指标:
- 磁盘容量:一个磁盘所能存储的字节总数称为磁盘容量。
- 非格式化容量是指磁记录表面可以利用的磁化单元总数。
- 格式化容量是指按照某种特定的记录格式所能存储信息的总量。
- 记录密度:指盘片单位面积上记录的二进制的信息量。
- 道密度:沿磁盘半径方向单位长度上的磁道数。
- 位密度:磁道单位长度上能记录的二进制代码位数。
- 面密度:位密度和道密度的乘积。
- 磁盘最里面的位密度最大,最外面的位密度最低。注意虽然每一道的道密度不同,但是每一道所含的数据量是一样的。
- 平均存取时间=寻道时间(磁头移动到目的磁道)+旋转延迟时间(磁头定位到所在扇区)+传输时间(传输数据所花费的时间)。
- 数据传输率:磁盘存储器在单位时间内向主机传送数据的字节数,称为数据传输率。
- 磁盘容量:一个磁盘所能存储的字节总数称为磁盘容量。
- 磁盘地址:
- 主机向磁盘控制器发送寻址信息,磁盘的地址=驱动器号+柱面(磁道)号+盘面号+扇区号。
- 若系统中有$4$个驱动器,每个驱动器带一个磁盘,每个磁盘$256$个磁道、$16$个盘面,每个盘面划分为$16$个扇区,则每个扇区地址要$18$位二进制代码:驱动器号($2bit$)+柱面(磁道)号($8bit$)+盘面号($4bit$)+扇区号($4bit$)。
- 磁盘工作过程:
- 硬盘的主要操作是寻址、读盘、写盘。每个操作都对应一个控制字,硬盘工作时,第一步是取控制字,第二步是执行控制字。
- 硬盘属于机械式部件,其读写操作是串行的,不可能在同一时刻既读又写,也不可能在同一时刻读两组数据或写两组数据。
磁盘阵列
- $RAID$(廉价冗余磁盘阵列)是将多个独立的物理磁盘组成一个独立的逻辑盘,数据在多个物理盘上分割交叉存储、并行访问,具有更好的存储性能、可靠性和安全性。
- $RAID$的分级如下所示。在$RAID1$到$RAID5$的几种方案中,无论何时有磁盘损坏,都可以随时拔出受损的磁盘再插入好的磁盘,而数据不会损坏:
- $RAID0$:无冗余和无校验的磁盘阵列。
- $RAID1$:镜像磁盘阵列。
- $RAID2$:采用纠错的海明码的磁盘阵列。
- $RAID3$:位交叉奇偶校验的磁盘阵列。
- $RAID4$:块交叉奇偶校验的磁盘阵列。
- $RAID5$:无独立校验的奇偶校验磁盘阵列。
光盘存储器
- 光盘存储器是利用光学原理读/写信息的存储装置,它采用聚焦激光束对盘式介质以非接触的方式记录信息。
- 光盘存储系统:
- 光盘片:
- 透明的聚合物基片。
- 铝合金反射层。
- 漆膜保护层的固盘。
- 光盘驱动器。
- 光盘控制器。
- 光盘驱动软件。
- 光盘片:
- 特点:
- 存储密度高。
- 携带方便。
- 成本低。
- 容量大。
- 存储期限长。
- 容易保存。
- 光盘的类型如下:
- $CD-ROM$:只读型光盘,只能读出其中内容,不能写入或修改。
- $CD-R$:只可写入一次信息,之后不可修改。
- $CD-RW$:可读可写光盘,可以重复读写。
- $DVD-ROM$:高容量的$CD-ROM$,$DVD$表示通用数字化多功能光盘。
固态硬盘
- 在微小型高档笔记本电脑中,采用高性能$Flash,Memory$作为硬盘来记录数据,这种“硬盘”称固态硬盘。
- 固态硬盘除了需要$Flash,Memory$外,还需要其他硬件和软件的支持。
- 闪存($Flash,Memory$)是在$E2PROM$的基础上发展起来的,本质上是只读存储器。
I/O接口
即$I/O$控制器,是主机和外设之间的交接界面,通过接口可以实现主机和外设之间的信息交换。
接口基本概念
接口功能
- 设备选址:设备选择电路、控制逻辑电路。
- 传送命令:命令寄存器、命令译码器。
- 传送数据:数据缓冲寄存器$DBR$(格式转换)。
- 反映$I/O$设备的工作状态:设备状态标记:
- 完成触发器$D$。
- 工作触发器$B$。
- 中断请求触发器$INTR$。
- 屏蔽触发器$MASK$。
$I/O$指令实现的数据传送是在靠近$CPU$的通用寄存器和用来缓冲$I/O$数据的I/O接口之间。
接口类型
- 按数据传送方式:
- 并行接口:一个字节或一个字所有位同时传送。
- 串行接口:一位一位地传送。
- 这里所说的数据传送方式指的是外设和接口一侧的传送方式,而在主机和接口一侧,数据总是并行传送的。接口要完成数据格式转换。
- 按主机访问$I/O$设备的控制方式:
- 程序查询接口。
- 中断接口。
- $DMA$接口。
- 按功能选择的灵活性:
- 可编程接口。
- 不可编程接口。
接口结构
- 内部接口:内部接口与系统总线相连,实质上是与内存、$CPU$相连。数据的传输方式只能是并行传输。
- 外部接口:外部接通过接口电缆与外设相连,外部接口的数据传输可能是串行方式,因此$I/O$接口需具有串/并转换功能。
- $CPU$与$I/O$接口之间通过数据线、地址线、命令线、状态线连接。
- $I/O$接口与外部设备通过数据线相连,$I/O$接口向外设通过命令线传递命令,外设向$I/O$接口通过状态线传递状态。
- $CPU$同外设之间的信息传送实质是对接口中的某些寄存器(即端口)进行读或写。
- 传输数据过程(以控制外设输入为例):
- $CPU$通过地址线传输选择设备。
- 根据设备选择电路判断是否设备。
- 根据设备状态标记反馈设备状态,通过状态线传输回$CPU$。
- 若设备已就绪,$CPU$根据命令线发送控制命令。
- 命令寄存器暂存命令,通过命令译码器转换为外设的控制信号。
- $I/O$接口通过数据线向外设发送控制信号。
- 外设通过数据线向$I/O$接口输入数据。
- 数据暂存到数据缓冲寄存器$DBR$中进行处理。
- 外设数据输入完成后,将状态通过状态线输入设备状态标记中。
- $I/O$接口通过状态线向$CPU$反馈输入完成,产生中断请求。
- $CPU$收到中断请求后通过命令线反馈中断响应。
- $I/O$接口再通过数据线向$CPU$传输中断类型号。
- $CPU$通过数据线接收数据。
端口与地址
- $I/O$端口是指接口电路中可以被$CPU$直接访问的寄存器。
- 接口$Interface$:
- 端口$Port$:实际上是寄存器:
- 数据端口:可读可写。
- 控制端口:只写。
- 状态端口:只读。
- 端口$Port$:实际上是寄存器:
- 控制逻辑。
$I/O$端口要想能够被$CPU$访间,必须要有端口地址,每一个端口都对应着一个端口地址。
统一编址
- 把$I/O$端口当做存储器的单元进行地址分配,用统一的访存指令就可以访问$I/O$端口,又称存储器映射方式。
- 靠不同的地址码区分内存$I/O$设备,$I/O$地址要求相对固定在地址的某部分。
- 如系统总线中地址线共$10$根,则可以访问的存储单元个数为$1024$个,假设要给$10$个$I/O$端口编址:
- $0$到$9$表示$I/O$地址,$10$到$1023$为主存单元地址。
- $0$到$1013$表示主存单元地址,$1014$到$1023$为$I/O$地址。
- $10$到$19$表示$I/O$地址,$0$到$9、20$到$1023$为主存单元地址。
- 优点:
- 不需要专门的输入/输出指令,可使$CPU$访问$I/O$的访存指令,操作更灵活、更方便。
- 使端口有较大的编址空间。
- 缺点:
- 端口占用了存储器地址,使内存容量变小。
- 利用存储器编址的$I/O$设备进行数据输入/输出操作,执行速度较慢。
独立编址
- $I/O$端口地址与存储器地址无关,独立编址$CPU$需要设置专门的输入/输出指令访问端口,又称$I/O$映射方式。
- 靠不同的指令区分内存和$I/O$设备。
- 优点:输入/输出指令与存储器指令有明显区别,程序编制清晰,便于理解。
- 缺点:
- 需要专门的输入输出端口。
- 输入/输出指令少,一般只能对端口进行传送操作。
- 需要$CPU$提供存储器读/写、$I/O$设备读/两组控制信号,增加了控制的复杂性。
I/O方式
即主机和$I/O$设备之间的数据传送的控制方式。
程序查询方式
- 过程:
- $CPU$执行初始化程序,并预置传送参数:设置计数器、设置数据首地址。
- 向$I/O$接口发送命令字,启动$I/O$设备。
- $CPU$从接口读取设备状态信息。
- $CPU$不断查询$I/O$设备状态,直到外设准备就绪。$CPU$一旦启动$I/O$,必须停止现行程序的运行,并在现行程序中插入一段程序。主要特点:$CPU$有“踏步”等待现象,$CPU$与$I/O$串行工作。
- 状态就绪后传输一次数据,一般为一个字。
- 修改地址和计数器参数。
- 判断传送是否结束(一般计数器为$0$时结束)。如果没有结束则继续回到停止等待状态。
- 优点:接口设计简单、设备量少。
- 缺点:$CPU$在信息传送过程中要花费很多时间用于查询和等待,而且在一段时间内只能和一台外设交换信息,效率大大降低。
程序中断方式
- 中断请求:中断源向$CPU$发送中断请求信号。
- 中断响应:响应中断的条件。中断判优:多个中断源同时提出请求时通过中断判优逻辑响应一个中断源。
- 中断处理:
- 中断隐指令。
- 中断服务程序。
中断和异常
操作系统中主要涉及。
-
程序中断是指在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,$CPU$暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后$CPU$又自动返回到现行程序的断点处,继续执行原程序。
-
中断(广义中断):
- 内中断(异常、例外、陷入)$CPU$内部与当前执行的指令有关:
- 自愿中断:指令中断(自陷)。
- 强迫中断:硬件故障(终止)、软件中断(故障)。
- 外中断(中断)$CPU$外部与当前执行的指令有关:
- 外设请求。
- 人工干预。
- 非屏蔽中断:关中断(中断标志位$IF=0$)时也会被响应。($IF$为$Interrupt,Flag$,在$PSW$中)。
- 可屏蔽中断:关中断时不会被响应。
- 内中断(异常、例外、陷入)$CPU$内部与当前执行的指令有关:
-
异常由指令在执行种产生,而中断不与指令相关,也不阻止指令的完成。
-
异常的检测由$CPU$完成,不需要外部信号通知。中断必须$CPU$通过总线获取中断源标记信息才能知道中断的类型。
-
异常是不可屏蔽的中断,而通过$INTR$信号线发出的中断是可屏蔽的中断。
中断请求
- 中断请求标记:
- 每个中断源向$CPU$发出中断请求的时间是随机的。
- 为了记录中断事件并区分不同的中断源,中断系统需对每个中断源设置中断请求标记触发器$INTR$,当其状态为“$1$"时,表示中断源有请求。
- 这些触发器可组成中断请求标记寄存器,该寄存器可集中在$CPU$中,也可分散在各个中断源中。
- 对于外中断,$CPU$是在统一的时刻即每条指令执行阶段结束前向接口发出中断查询信号,以获取$I/O$的中断请求,也就是说,$CPU$响应中断的时间是在每条指令执行阶段的结束时刻。
- 中断判优,即多个中断发生时处理顺序的训责:
- 中断判优既可以用硬件实现,也可用软件实现。
- 硬件实现是通过硬件排队器实现的,它既可以设置在$CPU$中,也可以分散在各个中断源中。
- 软件实现是通过查询程序实现的。
- 中断优先级:
- 硬件故障中断属于最高级,其次是软件中断。
- 非屏蔽中断优于可屏蔽中断。
- $DMA$请求优于$I/O$设备传送的中断请求。
- 高速设备优于低速设备。
- 输入设备优于输出设备。
- 实时设备优于普通设备。
中断响应
- $CPU$响应中断必须满足以下三个条件:
- 中断源有中断请求。
- $CPU$允许中断即开中断。
- 一条指令执行完毕,且没有更紧迫的任务。
中断隐指令指$CPU$在响应中断后在执行中断服务程序前的准备操作。由硬件实现,不是指令系统的真实指令,没有操作码,也不能被用户使用。
中断处理
- 关中断。
- 保存断点。
- 识别中断源并引出中断服务程序。
- 保存现场和中断屏蔽字。现场是用户可见的寄存器的内容,由软件实现。屏蔽字是$CPU$中断响应开始保存到栈或专门寄存器,由硬件实现。
- 执行中断服务程序(中断事件处理)。
- 恢复现场和屏蔽字。
- 开中断。
- 中断返回。
- 中断隐指令的主要任务($1$到$3$):
- 关中断:在中断服务程序中,为了保护中断现场(即$CPU$主要寄存器中的内容)期间不被新的中断所打断,必须关中断,从而保证被中断的程序在中断服务程序执行完毕之后能接着正确地执行下去。即通过硬件自动完成中断触发器置零。
- 保存断点:为了保证在中断服务程序执行完毕后能正确地返回到原来的程序,必须将原来程序的断点(即程序计数器$PC$的内容)保存起来。可以存入堆栈,也可以存入指定单元。
- 引出中断服务程序:引出中断服务程序的实质就是取出中断服务程序的入口地址并传送给程序计数器$PC$。
- 软件查询法。
- 硬件向量法:每个中断有类型号,每个中断类型号对应一个中断服务程序,每个程序有一个入口地址,$CPU$需要找到这个地址,这就是中断向量。由中断向量地址形成硬件产生中断向量地址(中断类型号),再由向量地址找到入口地址。系统种保存中断向量的存储器就是中断向量表。(中断向量就是服务程序的入口地址,中断向量地址是入口地址的地址)
- 中断服务程序的任务($4$到$8$):
- 保护现场:
- 保存程序断点$PC$,已由中断隐指令完成。
- 二是保存通用寄存器和状态寄存器的内容,由中断服务程序完成。
- 可以使用堆栈,也可以使用特定存储单元。
- 中断服务(设备服务):主体部分,如通过程序控制需打印的字符代码送入打印机的缓冲存储器中。
- 恢复现场:通过出栈指令或取数指令把之前保存的信息送回寄存器中。
- 中断返回:通过中断返回指令回到原程序断点处。
- 保护现场:
多重中断技术
- 单重中断:执行中断服务程序时不响应新的中断请求。
- 多重中断:又称中断嵌套,执行中断服务程序时可响应新的中断请求。
| 单重中断 | 多重中断 | |
|---|---|---|
| 中断隐指令 | 关中断 | 关中断 |
| 保存断点(PC) | 保存断点(PC) | |
| 送中断向量 | 送中断向量 | |
| 中断服务程序 | 保护现场 | 保护现场和屏蔽字 |
| 开中断,中断嵌套 | ||
| 执行中断服务程序 | 执行中断服务程序 | |
| 关中断 | ||
| 恢复现场 | 恢复现场和屏蔽字 | |
| 开中断 | 开中断 | |
| 中断返向 | 中断返回 |
- 中断屏蔽技术:主要用于多重中断,$CPU$要具备多重中断的功能,须满足下列条件:
- 在中断服务程序中提前设置开中断指令。
- 优先级别高的中断源有权中断优先级别低的中断源。
- 所有屏蔽触发器组合在一起,便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字。
- 中断屏蔽标志可以改变多个中断服务程序执行完的次序。但是不能改变开始执行的次序,因为中断请求响应顺序由排队器控制。
- 屏蔽字设置规律:
- $1$表示屏蔽该中断源的请求,$0$表示可以正常申请。
- 每个中断源对应一个屏蔽字(在处理该中断源的中断服务程序时,屏蔽寄存器中的内容为该中断源对应的屏蔽字)。
- 屏蔽字中$1$越多,优先级越高。每个屏蔽字中至少有一个$1$(至少要能屏蔽自身的中断)。
- 在保护现场关中断,在执行中断处理程序时开中断。
程序中断方式实现
- $CPU$遇到$I/O$指令,就去启动外设,然后$CPU$再回来执行现有程序,外部设备进行准备。
- 外设准备完成后向$CPU$发出中断请求,$CPU$接收后进行响应,进行中断隐指令操作:关中断、保存断电、引出中断服务程序。$CPU$响应中断,运行中断服务程序:保护现场、中断服务程序控制数据传送。外设准备下一个请求。
- $CPU$通过中断服务程序进行中断返回,若从K个程序开始中断,则返回到$K+1$个程序。
DMA方式
$DMA$方式优先级高于中断方式,这样处理速度更快。
DMA控制器
- 因为每一个数据都要中断一次,当有大量数据时$CPU$需要大量中断服务。
- 所以使用硬件——$DMA$控制器控制大量数据传输。
- 在$DMA$方式中,当$I/O$设备需要进行数据传送时,通过$DMA$控制器($DMA$接口)向$CPU$提出$DMA$传送请求,$CPU$响应之后将让出系统总线,由$DMA$控制器接管总线进行数据传送。其主要功能有:
- 接受外设发出的$DMA$请求,并向$CPU$发出总线请求。
- 在每个存储周期(机器周期)后$CPU$检查是否存在$DMA$请求,若有则响应此总线请求,发出总线响应倍号,接管总线控制权,进入$DMA$操作周期。
- 确定传送数据的主存单元地址及长度,并能自动修改主存地址计数和传送长度计数。
- 规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作。
- 向$CPU$报告$DMA$操作的结束,发出中断。
$DMA$控制时,$CPU$对主存没有控制权,而$DMA$有。
- 控制/状态逻辑:由控制和时序电路及状态标志组成,用于指定传送方向,修改传送参数,并对$DMA$请求信号和$CPU$响应信号进行协调和同步。
- $DMA$请求触发器:每当$I/O$设备准备好数据后给出一个控制信号,使$DMA$请求触发器置位(为$1$)。
- 主存地址计数器$AR$:存放交换的数据的主存地址,能自动加减$1$。
- 传送长度计数器$WC$:用来记录传送数据的长度,计数溢出时,数据即传送完毕,自动发中断请求信号。
- 数据缓冲寄存器:用于暂存每次传送的数据。
- 中断机构:当一个数据块传送完毕后触发中断机构,向$CPU$提出中断请求。
DMA传送过程
$CPU$只在开始和结尾参与控制,$DMA$控制整个传输过程:内存→数据总线→$DMAC$($DMA$控制器)→外设。
- 预处理:
- 主存起始地址$\rightarrow AR$。
- $I/O$设备地址$\rightarrow DAR$。
- 传送数据个数$\rightarrow WC$。
- 启动$I/O$设备
- 数据传送:继续执行主程序同时完成一批数据的传送。以数据输入为例:
- 设备将数据输入$DR$中。
- 写满后向$DMA$控制器发送$DMA$请求。
- $DMA$控制器向总线发送总线请求。
- $CPU$将总线控制权交给$DMA$控制器,$DMA$控制器接管总线。
- $DMA$控制器将地址从主存地址计数器上送到地址线上,将数据从数据缓冲寄存器$DMAC$送到数据线上。
- 修改地址和长度参数并返回传送长度计数器和主存地址计数器中。
- 若溢出(传输结束),则向中断机构发出中断。
- 后处理:中断服务程序做$DMA$结束处理。
- 继续执行主程序。
DMA传送方式
- 主存和$DMA$控制器之间有一条数据通路,因此主存和$I/O$设备之间交换信息时,不通过$CPU$。
- 但当$I/O$设备和$CPU$同时访问主存时,可能发生冲突,为了有效地使用主存,$DMA$控制器与$CPU$通常采用以下三种方法使用主存:
- 停止$CPU$访问主存:
- 控制简单。
- $CPU$处于不工作状态或保持状态。
- 未充分发挥$CPU$对主存的利用率。
- $DMA$和$CPU$交替访存:将一个$CPU$周期分为两个周期,一个给$DMA$使用一个给$CPU$使用:
- 不需要总线使用权的申请、建立和归还过程。
- 硬件逻辑更为复杂。
- 周期挪用(周期窃取):
- $CPU$此时不访存:不冲突。
- $CPU$正在访存:存取周期结束让出总线给$DMA$。
- $CPU$、$DMA$同时请求访存:$DMA$的$I/O$访存优先,挪用几个存取周期。传输一个字后立刻释放总线。
- 停止$CPU$访问主存:
DMA方式特点
- 主存和$DMA$接口之间有一条直接数据通路——$DMA$总线。
- 由于$DMA$方式传送数据不需要经过$CPU$,因此不必中断现行程序,$I/O$与主机并行工作,程序和传送并行工作。
- $DMA$方式具有下列特点:
- 它使主存与$CPU$的固定联系脱钩,主存既可被$CPU$访问,又可被外设访问。
- 在数据块传送时,主存地址的确定、传送数据的计数等都由硬件电路直接实现。
- 主存中要开辟专用缓冲区,及时供给和接收外设的数据。
- $DMA$传送速度快,$CPU$和外设并行工作,提高了系统效率。
- $DMA$在传送开始前要通过程序进行预处理,结束后要通过中断方式进行后处理。
- 不用保护和恢复现场。
- 不能立即响应,所以不适合键盘和鼠标这种情景。
I/O方式对比
| CPU与外设 | 传送与主程序 | |
|---|---|---|
| 程序查询 | 串行 | 串行 |
| 程序中断 | 并行 | 串行 |
| DMA | 并行 | 并行 |
| 中断 | DMA | |
|---|---|---|
| 数据传送 | 软件控制,程序的切换→保存和恢复现场 | 硬件控制,CPU只需进行预处理和后处理 |
| 请求资源 | CPU处理时间 | 总线使用权 |
| 响应 | 指令周期结束后 | 机器周期结束后,总线事务后 |
| 场景 | CPU控制,低速设备 | DMA控制器控制,高速设备 |
| 优先级 | 非屏蔽中断高于屏蔽中断 | 最高 |
| 异常处理 | 能处理异常事件 | 仅传送数据 |