419 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软件:
- 包括驱动程序、用户程序、管理程序、升级补丁等。
- 通常采用IO指令和通道指令实现CPU和IO设备的信息交换:
- I/O指令:
- CPU指令的一部分。
- 分为操作码(表明识别I/O指令)+命令码(执行的操作)+设备码(操作的设备)。
- 通道指令通道:
- 通道自身的指令。
- 指出数据的首地址、传送字数、操作作命令。
- 通道指令放在主存中。
- 由CPU执行启动I/O设备的指令,由通道代替CPU对I/O设备进行管理。
- I/O硬件:
- 包括外部设备、设备控制器和接口、I/O总线等。
- I/O接口+设备控制器+外设。
外部设备
- 外部设备也称外围设备,是除了主机以外的、能直接或间接与计算机交换信息的装置。
输入设备
用于向计算机系统输入命令和文本、数据等信息的部件。键盘和鼠标是最基本的输入设备。
键盘
- 键盘是最常用的输入设备,通过它可发出命令或输入数据。
- 键盘通常以矩阵的形式排列按键,每个键用符号标明它的含义和作用。
- 每个键相当于一个开关,当按下键时,电信号连通;当松开键时,弹簧把键弹起,电信号断开。
- 键盘输入信息可分为3个步骤:
- 查出按下的是哪个键。
- 将该键翻译成能被主机接收的编码,如ASCII码。
- 将编码传送给主机。
鼠标
- 鼠标是常用的定位输入设备,它把用户的操作与计算机屏幕上的位置信息相联系。
- 常用的鼠标有机械式和光电式两种。
- 工作原理:当鼠标在平面上移动时,其底部传感器把运动的方向和距离检测出来,从而控制光标做相应运动。
输出设备
用于将计算机系统中的信息输出到计算机外部进行显示、交换等的部件。显示器和打印机是最基本的输出设备。
显示器
- 按显示设备所用的显示器件分类:
- 阴极射线管(CRT)显示器:CRT显示器主要由电子枪、偏转线圈、荫罩、高压石墨电极和荧光粉涂层及玻璃外壳5部分组成。具有可视角度大、无坏点、色彩还原度高、色度均匀、可调节的多分辨率模式、响应时间极短等目前LCD难以超过的优点。
- 液晶显示器(LCD):利用液晶的电光效应,由图像信号电压直接控制薄膜晶体管,再间接控制液品分子的光学特性来实现图像的显示。特点:体积小、重量轻、省电、无辐射、绿色环保、画面柔、不伤眼等。
- LED显示器:通过控制半导体发光二极管进行显示,用来显示文字、图形、图像等各种信息。
- LCD、LED是两种不同的显示技术,LCD是由液态晶体组成的显示屏,而LED则是由发光二极管组成的显示屏。与LCD相比,LED显示器在亮度、功耗、可视角度和刷新速率等方面都更具优势。
- 按所显示的信息内容分类:
- 字符显示器:
- 显示字符的方法以点阵为基础。点阵是指由m×n个点组成的阵列。点阵的多少取决于显示字符的质量和字符窗口的大小。字符窗口是指每个字符在屏幕上所占的点数,它包括字符显示点阵和字符间隔。
- 将点阵存入由ROM构成的字符发生器中,在CRT进行光栅扫描的过程中,从字符发生器中依次读出某个字符的点阵,按照点阵中0和1代码不同控制扫描电子束的开或关,从而在屏幕上显示出字符。对应于每个字符窗口,所需显示字符的ASCII代码被存放在视频存储器VRAM中,以备刷新。
- 按扫描方式不同可分为:光栅扫描显示器、随机扫描显示器。
- 图形显示器:
- 将所显示图形的一组坐标点和绘图命令组成显示文件存放在缓冲存储器中,缓存中的显示文件传送给矢量(线段)产生器,产生相应的模拟电压,直接控制电子束在屏幕上的移动。为了在屏幕上保留持久稳定的图像,需要按一定的频率对屏幕进行反复刷新。
- 这种显示器的优点是分辨率高且显示的曲线平滑。目前高质量的图形显示器采用这种随机扫描方式。
- 缺点是当显示复杂图形时,会有闪烁感。
- 图像显示器。
- 字符显示器:
- 屏幕大小:以对角线长度表示,常用的有12~29英寸等。
- 分辨率:所能表示的像素个数,屏幕上的每一个光点就是一个像素,以宽、高的像素的乘积表示,例如,800×600、1024×768和1280×1024等。
- 灰度级:指黑白显示器中所显示的像素点的亮暗差别,在彩色显示器中则表现为颜色的不同,灰度级越多,图像层次越清楚逼真,典型的有8位(256级)、16位等。$n$位可以表示$2^n$种不同的亮度或颜色。
- 刷新:光点只能保持极短的时间便会消失,为此必须在光点消失之前再重新扫描显示一遍,这个过程称为刷新。
- 刷新频率:单位时间内扫描整个屏幕内容的次数,按照人的视觉生理,刷新频率大于30Hz时才不会感到闪烁,通常显示器刷新频率在60到120Hz。
- 显示存储器(VRAM):也称刷新存储器,为了不断提高刷新图像的信号,必须把一帧图像信息存储在刷新存储器中。其存储容量由图像分辨率和灰度级决定,分辨率越高,灰度级越多,刷新存储器容量越大。
- VRAM容量=分辨率×灰度级位数。
- VRAM带宽=分辨率×灰度级位数×帧频。
打印机
- 打印机是计算机的输出设备之一,用于将计算机处理结果打印在相关介质上。
- 按印字原理不同可分为:
- 击打式打印机:
- 利用机械动作使印字机构与色带和纸相撞而打印字符。
- 优点:设备成本低;印字质量好。
- 缺点:噪声大;速度慢。
- 非击打式打印机:
- 采用电、磁、光、喷墨等物理、化学方法来印刷字符。
- 优点:速度快;噪声小。
- 缺点:成本高。
- 击打式打印机:
- 按打印机工作方式不同可分为:
- 串行打印机:
- 逐字打印。
- 速度慢。
- 行式打印机:
- 逐行打印。
- 速度快。
- 串行打印机:
- 按工作方式可分为:
- 针式打印机:
- 原理:在联机状态下,主机发出打印命令,经接口、检测和控制电路,间歇驱动纵向送纸和打印头横向移动,同时驱动打印机间歇冲击色带,在纸上打印出所需内容。
- 特点:针式打印机擅长“多层复写打印”,实现各种票据或蜡纸等的打印。它工作原理简单,造价低廉,耗材(色带)便宜,但打印分辨率和打印速度不够。
- 喷墨式打印机:
- 原理:带电的喷墨雾点经过电极偏转后,直接在纸上形成所需字形。彩色喷墨打印机基于三基色原理,即分别喷射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接口
是主机和外设之间的交接界面,通过接口可以实现主机和外设之间的信息交换。
接口的功能与结构
- 设备选址:设备选择电路、控制逻辑电路。
- 传送命令:命令寄存器、命令译码器。
- 传送数据:数据缓冲寄存器DBR(格式转换)。
- 反映I/O设备的工作状态:设备状态标记:
- 完成触发器D。
- 工作触发器B。
- 中断请求触发器INTR。
- 屏蔽触发器MASK。
- 内部接口:部接口与系统总线相连,实质上是与内存、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通过数据线接收数据。
端口与地址
- IO端口是指接口电路中可以被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设备的控制方式:
- 程序查询接口。
- 中断接口。
- DMA接口。
- 按功能选择的灵活性:
- 可编程接口。
- 不可编程接口。
I/O方式
程序查询方式
- 过程:
- CPU执行初始化程序,并预置传送参数:设置计数器、设置数据首地址。
- 向I/O接口发送命令字,启动I/O设备。
- CPU从接口读取设备状态信息。
- CPU不断查询I/O设备状态,直到外设准备就绪。CPU一旦启动I/O,必须停止现行程序的运行,并在现行程序中插入一段程序。主要特点:CPU有“踏步”等待现象,CPU与I/O串行工作。
- 状态就绪后传输一次数据,一般为一个字。
- 修改地址和计数器参数。
- 判断传送是否结束(一般计数器为0时结束)。如果没有结束则继续回到停止等待状态。
- 优点:接口设计简单、设备量少。
- 缺点:CPU在信息传送过程中要花费很多时间用于查询和等待,而且在一段时间内只能和一台外设交换信息,效率大大降低。
例题 在程序查询方式的输入/输出系统中,假设不考虑处理时间,每一个查询操作需要100个时钟周期,CPU的时钟频率为50MHz。现有鼠标和硬盘两个设备,而且CPU必须每秒对鼠标进行30次查询,硬盘以32位字长为单位传输数据,即每32位被CPU查询一次,传输率为$2\times2^{20}$B/s。求CPU对这两个设备查询所花费的时间比率,由此可得出什么结论?
从时间来看:
因为CPU时钟频率为50MHz,所以一个时钟周期就是其倒数为20ns。
而一个查询操作需要100个时钟周期,所以一个查询操作需要100×20=2000ns。
对于鼠标:
每秒需要对鼠标进行30次查询,所以一秒内查询鼠标的时间为30×2000=60000ns。
所以查询鼠标所花费的时间比率为60000ns÷1s=0.006%。
从而对鼠标的查询基本上不影响CPU性能。
对于硬盘:
因为每32位需要查询一次,每秒传送$2\times2^{20}$B,所以每秒需要查询$2\times2^{20}\div4=2^{19}$次。
查询硬盘时间为$2^{19}\times2000=512\times1024\times2000$ns$\approx1.05\times10^9$ns。
查询硬盘花费时间比率为105%。也就是说即使CPU将全部时间都用于对硬盘的查询也不能满足磁盘传输要求。
从频率来看:
CPU的时钟频率为50MHz,即每秒需要$50\times10^6$个时钟周期。
对于鼠标:
每秒查询鼠标占用时钟周期数为30×100=3000,所以查询鼠标花费的时间比率为$3000\div(50\times10^6)$=0006%。
从而对鼠标的查询基本上不影响CPU性能。
对于硬盘:
因为每32位需要查询一次,所以每秒需要查询$(2\times2^{20})\div4=2^{19}$次。
所以每秒查询硬盘占用时钟周期数位$2^{19}\times100\approx5.24\times10^7$。
产线硬盘花费时间比例为(5.24\times10^7)\div(50\times10^6)\approx 105%。
也就是说即使CPU将全部时间都用于对硬盘的查询也不能满足磁盘传输要求。
程序中断方式
中断系统
操作系统中主要涉及。
-
程序中断是指在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序。
-
工作流程:
- 中断请求:中断源向CPU发送中断请求信号。
- 中断响应:响应中断的条件。中断判优:多个中断源同时提出请求时通过中断判优逻辑响应一个中断源。
- 中断处理:
- 中断隐指令。
- 中断服务程序。
-
中断(广义中断):
- 内中断(异常、例外、陷入)CPU内部与当前执行的指令有关:
- 自愿中断:指令中断。
- 强迫中断:硬件故障、软件中断。
- 外中断(中断)CPU外部与当前执行的指令有关:
- 外设请求。
- 人工干预。
- 非屏蔽中断:关中断(中断标志位IF=O)时也会被响应。(IF为Interrupt Flag,在PSW中)。
- 可屏蔽中断:关中断时不会被响应。
- 内中断(异常、例外、陷入)CPU内部与当前执行的指令有关:
-
中断请求标记:
- 每个中断源向CPU发出中断请求的时间是随机的。
- 为了记录中断事件并区分不同的中断源,中断系统需对每个中断源设置中断请求标记触发器INTR,当其状态为“1"时,表示中断源有请求。
- 这些触发器可组成中断请求标记寄存器,该寄存器可集中在CPU中,也可分散在各个中断源中。
- 对于外中断,CPU是在统一的时刻即每条指令执行阶段结束前向接口发出中断查询信号,以获取I/O的中断请求,也就是说,CPU响应中断的时间是在每条指令执行阶段的结束时刻。
-
CPU响应中断必须满足以下三个条件:
- 中断源有中断请求。
- CPU允许中断即开中断。
- 一条指令执行完毕,且没有更紧迫的任务。
-
中断判优,即多个中断发生时处理顺序的训责:
- 中断判优既可以用硬件实现,也可用软件实现。
- 硬件实现是通过硬件排队器实现的,它既可以设置在CPU中,也可以分散在各个中断源中。
- 软件实现是通过查询程序实现的。
-
中断优先级:
- 硬件故障中断属于最高级,其次是软件中断。
- 非屏蔽中断优于可屏蔽中断。
- DMA请求优于I/O设备传送的中断请求。
- 高速设备优于低速设备。
- 输入设各优于输出设备。
- 实时设各优于普通设备。
-
中断处理过程:
- 取指令:进入中断服务程序的方法是把该程序第一条指令的地址放入PC。
- 执行指令。
- 判断是否中断。
- 若没有中断则执行取指令,回到步骤一。
- 若有中断则进入中断周期,使用中断隐指令。
- 进行中断服务程序。
- 回到步骤一。
-
中断隐指令的主要任务:
- 关中断:在中断服务程序中,为了保护中断现场(即CPU主要寄存器中的内容)期间不被新的中断所打断,必须关中断,从而保证被中断的程序在中断服务程序执行完毕之后能接着正确地执行下去。
- 保存断点:为了保证在中断服务程序执行完毕后能正确地返回到原来的程序,必须将原来程序的断点(即程序计数器PC的内容)保存起来。可以存入堆栈,也可以存入指定单元。
- 引出中断服务程序:引出中断服务程序的实质就是取出中断服务程序的入口地址并传送给程序计数器PC。
- 软件查询法。
- 硬件向量法:由中断向量地址形成硬件产生向量地址(中断类型号),再由向量地址找到入口地址。
-
中断服务程序的任务:
- 保护现场:
- 保存程序断点PC,已由中断隐指令完成。
- 二是保存通用寄存器和状态寄存器的内容,由中断服务程序完成。
- 可以使用堆栈,也可以使用特定存储单元。
- 中断服务(设备服务):主体部分,如通过程序控制需打印的字符代码送入打印机的缓冲存储器中。
- 恢复现场:通过出栈指令或取数指令把之前保存的信息送回寄存器中。
- 中断返回:通过中断返回指令回到原程序断点处。
- 保护现场:
-
单重中断:执行中断服务程序时不响应新的中断请求。
-
多重中断:又称中断嵌套,执行中断服务程序时可响应新的中断请求。
| 单重中断 | 多重中断 | |
|---|---|---|
| 中断隐指令 | 关中断 | 关中断 |
| 保存断点(PC) | 保存断点(PC) | |
| 送中断向量 | 送中断向量 | |
| 中断服务程序 | 保护现场 | 保护现场和屏蔽字 |
| 开中断 | ||
| 执行中断服务程序 | 执行中断服务程序 | |
| 关中断 | ||
| 恢复现场 | 恢复现场和屏蔽字 | |
| 开中断 | 开中断 | |
| 中断返向 | 中断返回 |
- 中断屏蔽技术:主要用于多重中断,CPU要具备多重中断的功能,须满足下列条件:
- 在中断服务程序中提前设置开中断指令。
- 优先级别高的中断源有权中断优先级别低的中断源。
- 所有屏蔽触发器组合在一起,便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字。
- 屏蔽字设置规律:
- 1表示屏蔽该中断源的请求,0表示可以正常申请。
- 每个中断源对应一个屏蔽字(在处理该中断源的中断服务程序时,屏蔽寄存器中的内容为该中断源对应的屏蔽字)。
- 屏蔽字中1越多,优先级越高。每个屏蔽字中至少有一个'1'(至少要能屏蔽自身的中断)。
例题 设某机有4个中断源A、B、C、D,其硬件排队优先次序为A>B>C>D,现要求将中断处理次序改为D>A>C>B。
1)写出每个中断源对应的屏蔽字。
在写当前中断源屏蔽字时,如果当前中断源的优先级大于屏蔽字,则是1,否则是0:
| 中断源 | A | B | C | D |
|---|---|---|---|---|
| A | 1 | 1 | 1 | 0 |
| B | 0 | 1 | 0 | 0 |
| C | 0 | 1 | 1 | 0 |
| D | 1 | 1 | 1 | 1 |
如若中断源为A,因为A必须屏蔽它自己,所以A的屏蔽字为1,而A的优先级大于B和C,所以BC屏蔽字也为1,D的优先级大于A,所以D的屏蔽字为0。
2)若中断源进入程序如表格。设每个中断源的中断服务程序时间均为20μs。写出CPU执行程序的流程。
| 中断源 | 进入程序时间点 |
|---|---|
| B | 5 |
| D | 10 |
| A | 35 |
| C | 60 |
首先B在时刻5进入,开始执行,执行到时刻10时D进入,而D的优先级高于B,所以时刻10开始执行D,时刻30D结束,开始重新执行B,直到时刻35A进入,此时B已经执行了10个时间单位,A优先级高于B,所以A开始执行,时刻55A完成,B开始执行,直到时刻60C进入,而C优先级大于B,所以C开始执行,B此时已经执行了15个单位,80C结束,B开始,时刻85B完成,整个结束。
程序中断方式实现
- CPU遇到I/O指令,就去启动外设,然后CPU再回来执行现有程序,外部设备进行准备。
- 外设准备完成后向CPU发出中断请求,CPU接收后进行响应,进行中断隐指令操作:关中断、保存断电、引出中断服务程序。CPU响应中断,运行中断服务程序:保护现场、中断服务程序控制数据传送。外设准备下一个请求。
- CPU通过中断服务程序进行中断返回,若从K个程序开始中断,则返回到K+1个程序。
例题 假定CPU主频为5OMHz,CPI为4。设备D采用异步串行通信方式向主机传送7位ASCIl字符,通信规程中有1位奇校验位和1位停止位,从D接收启动命令到字符送入I/O端口需要0.5ms。请回答下列问题,要求说明理由。
1)每传送一个字符,在异步串行通信线上共需传输多少位?在设备D持续工作过程中,每秒钟最多可向I/O端口送入多少个字符?
需要注意的是,在总线那一章说过,数据传输时会隐藏一位起始位,所以一共有1+7+1+1=10位数据。
每0.5ms送入一个字符,所以每秒送入1s÷0.5ms=2000个字符。
2)设备D采用中断方式输入输出,I/O端口每收到一个字符申请一次中断,中断响应需10个时钟周期,中断服务程序共有20条指令,其中第15条指令启动D工作。若CPU需从D读取1000个字符,则完成这一任务所需时间大约是多少个时钟周期?CPU用于完成这一任务的时间大约是多少个时钟周期?在中断响应阶段CPU进行了哪些操作?
因为I/O端口每收到一个字符申请一次中断,所以外设D每一次工作0.5ms。然后中断相依10个时钟周期,启动D15条指令,5条恢复现场指令。
因为主频50MHz,所以时钟周期为20ns,工作时间为0.5ms÷20ns=25000个时钟周期。
然后中断响应需要10个时钟周期,然后启动D需要15条指令,根据CPI是4,所以每一条指令需要4个时钟周期,从而启动D需要15×4=60个时钟周期。由于最后五条指令是用来恢复现场的,所以不算在完成读取字符任务所需的时间内。
从而传输一个字符需要时钟周期25000+10+60=25070个。所以传输1000个字符需要25070000个时钟周期。
而CPU完成这个任务的时间就需要加上恢复现场的5个时钟周期,且是关于CPU所需要的时间,所以同时要去掉外设工作的0.5ms=25000个时钟周期。
所以对于一个字符,一共就是请求的10个时钟周期,加上20条指令所需要20×4=80个时钟周期,从而CPU完成任务的时间为1000×(10+80)=90000个时钟周期。
CPU进行的操作为:关中断、保存断点、引出中断服务程序。
DMA方式
DMA控制器
- 因为每一个数据都要中断一次,当有大量数据时CPU需要大量中断服务。
- 所以使用硬件——DMA控制器控制大量数据传输。
- 在DMA方式中,当I/O设备需要进行数据传送时,通过DMA控制器(DMA接口)向CPU提出DMA传送请求,CPU响应之后将让出系统总线,由DMA控制器接管总线进行数据传送。其主要功能有:
- 接受外设发出的DMA请求,并向CPU发出总线请求。
- CPU响应此总线请求,发出总线响应倍号,接管总线控制权,进入DMA操作周期。
- 确定传送数据的主存单元地址及长度,并能自动修改主存地址计数和传送长度计数。
- 规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作。
- 向CPU报告DMA操作的结束。
DMA控制时,CPU对主存没有控制权,而DMA有。
- 控制/状态逻辑:由控制和时序电路及状态标志组成,用于指定传送方向,修改传送参数,并对DMA请求信号和CPU响应信号进行协调和同步。
- DMA请求触发器:每当I/O设备准备好数据后给出一个控制信号,使DMA请求触发器置位(为1)。
- 主存地址计数器AR:存放交换的数据的主存地址,能自动加减1。
- 传送长度计数器WC:用来记录传送数据的长度,计数溢出时,数据即传送完毕,自动发中断请求信号。
- 数据缓冲寄存器:用于暂存每次传送的数据。
- 中断机构:当一个数据块传送完毕后触发中断机构,向CPU提出中断请求。
DMA传送过程
- 预处理:
- 主存起始地址→AR。
- IO设备地址→DAR。
- 传送数据个数→WC。
- 启动LO设备
- 数据传送:继续执行主程序同时完成一批数据的传送。以数据输入为例:
- 设备将数据输入DR中。
- 写满后向DMA控制器发送DMA请求。
- DMA控制器向总线发送总线请求。
- CPU将总线控制权交给DMA控制器,DMA控制器接管总线。
- DMA控制器将地址从主存地址计数器上送到地址线上,将数据从数据缓冲寄存器送到数据线上。
- 修改地址和长度参数并返回传送长度计数器和主存地址计数器中。
- 若溢出(传输结束),则向中断机构发出中断。
- 后处理:中断服务程序做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在传送开始前要通过程序进行预处理,结束后要通过中断方式进行后处理。
DMA方式与中断方式
| 中断 | DMA | |
|---|---|---|
| 数据传送 | 程序控制,程序的切换→保存和恢复现场 | 硬件控制,CPU只需进行预处理和后处理 |
| 响应 | 指令执行周期结束后响应中断 | 每个机器周期结束均可,总线空闲时即可响应DMA请求 |
| 场景 | CPU控制,低速设备 | DMA控制器控制,高速设备 |
| 优先级 | 优先级低于DMA | 优先级高于中断 |
| 异常处理 | 能处理异常事件 | 仅传送数据 |
例题 某计算机的CPU主频为500MHz,CPI为5(即执行每条指令平均需5个时钟周期)。假定某外设的数据传输率为0.5MB/s,采用中断方式与主机进行数据传送,以32位为传输单位,对应的中断服务程序包含18条指令,中断服务的其他开销相当于2条指令的执行时间。请回答下列问题,要求给出计算过程。
1)在中断方式下,CPU用于该外设I/O的时间占整个CPU时间的百分比是多少?
CPU用于该外设I/O的时间包括CPU响应中断时间与CPU处理中断服务程序时间。
所以每传送一次数据,一共需要18+2=20条指令,占用CPU时间为20×5=100个时钟周期。
外设准备32位数据的时间为32bit÷0.5MB/s=8μs。
从而外设每一秒可以准备1s÷8μs=125000个。从而一秒就需要125000次中断。
则1秒内CPU用于处理中断的时钟周期个数为125000×100=12.5M个。
又主频为500MHz,所以CPU用于该外设I/O的时间占整个CPU时间的百分比=12.5M÷500M=2.5%。
2)当该外设的数据传输率达到5MB/s时,改用DMA方式传送数据。假定每次DMA传送块大小为5000B,且DMA预处理和后处理的总开销为500个时钟周期,则CPU用于该外设1/0的时间占整个CPU时间的百分比是多少?(假设DMA与CPU之间没有访存冲突)
当外设数据传输率提高到5MB/s时改用DMA方式传送,每次DMA传送一个数据块,大小为5000B,则1s内需产生的DMA次数为5MB÷5000B=1000次。
CPU用于DMA处理的总开销为1000×500=0.5M个时钟周期。
CPU用于外设I/O的时间占整个CPU时间的百分比为0.5M÷500M=0.1%。