目录1 基本概念1.1 I/O系统演变过程1.2 I/O系统基本组成1.2.1 I/O软件1.2.2 I/O硬件1.3 I/O方式简介2 外部设备2.1 输入输出设备2.2 外存储器2.2.1 磁盘存储器机械硬盘组成情况性能指标磁盘地址硬盘的工作过程磁盘阵列2.2.2 光盘存储器2.2.3 固态硬盘3 I/O接口3.1 I/O接口的基本结构3.2 接口与端口3.2.1 I/O端口及其编址3.2.2 I/O接口的类型4 I/O方式4.1 程序查询方式4.1.1 程序查询接口结构4.2 程序中断方式4.2.1 中断系统基本概念中断请求分类中断请求标记中断判优-实现中断判优-优先级设置中断处理过程中断处理过程-中断服务程序单重中断与多重中断4.2.2 完整流程4.3 DMA方式4.3.1 DMA控制器4.3.2 DMA传送过程1.停止CPU访问主存2.DMA与CPU交替访存3.周期挪用周期窃取1 基本概念1.1 I/O系统演变过程早期阶段早期计算机CPU和I/O接口串行工作分散连接即添加新模块都是需要单独添加线路的。计算机设计是以CPU为中心的。CPU和I/O串行工作依靠程序查询方式由CPU通过程序不断查询I/O设备是否已做好准备从而控制I/O设备与主机交换信息。这样就导致CPU计算时间被压缩工作效率降低。于是引入了总线和DMA的概念接口模块和DMA阶段在这个阶段CPU和I/O接口开始并行工作各部件开始通过总线连接此阶段的控制方式是中断控制只在I/O设备准备就绪并向CPU发出中断请求时才予以响应。但是中断控制会导致CPU任务被频繁中断降低工作效率所以优化为DMA方式DMA控制方式主存和I/O设备之间有一条直接数据通路当主存和I/O设备交换信息时无需调用中断服务程序。即高速外设有权直接访问主存。此阶段CPU算力基本解放但仍然需要参与外设的控制具有I/O通道结构的阶段在系统中设有通道控制部件每个通道都挂接若干外设主机在执行I/O命令时只需要启动有关通道通道将执行通道程序完成I/O操作此阶段CPU只需要发送启动和关闭的命令具有I/O处理机的阶段I/O处理机全权管理通道甚至拥有与CPU同等算力在极端情况下I/O处理机的芯片可以代替CPU管理系统1.2 I/O系统基本组成一般来说I/O系统由I/O软件和I/O硬件两部分组成1.2.1 I/O软件包括驱动程序用户程序管理程序升级补丁等通常采用I/O指令和通道指令实现CPU和I/O设备的信息交换I/O指令I/O指令通常由三部分组成操作码命令码和设备码操作码和指令的操作码不同I/O指令的操作码用于识别I/O指令即告诉设备此指令是I/O指令命令码命令码和指令的操作码类似用于告诉设备该I/O指令做什么操作设备码和指令的地址码类似标明对哪个设备进行操作通道指令指出数据的首地址传送字数操作命令。通道指令直接存储在主存中当系统想启动某I/O设备时CPU执行启动I/O设备的指令由通道代替CPU对I/O设备进行管理1.2.2 I/O硬件包括外设本身设备控制器和接口I/O总线等值得一提的是I/O接口中这个接口的界限相当模糊因为接口是两个部件的交接部分。很多时候我们很难区分两个部件之间的明确界限。比如操作系统中对于I/O接口设备控制器的定义就是上图I/O接口和设备控制器所以大家看到不同的定义不需要感到困惑定义是人下的名称是人赋予的但是事物的本质是共通的。1.3 I/O方式简介不同方式的流程图程序查询方式程序中断方式和DMA方式。这部分就是上面三种方式的详细流程图如果上文部分理解此部分可以跳过不重要。程序查询方式程序中断方式DMA方式每张图/每个方式单独讲解比较麻烦我直接将三者的区别。程序查询方式会中断CPU的工作从启动I/O准备到I/O请求全程等待同时数据也通过CPU给I/O程序中断方式会中断CPU的工作当I/O设备准备完成中断CPUDMA方式基本不会中断CPU工作只中断CPU访存若CPU当前没有访问主存则CPU继续工作CPU不参与I/O管理数据走DMA总线给I/O设备2 外部设备外部设备也叫外围设备指除了主机以外的能够直接或间接与计算机交换信息的装置主机和外设等计算机的层次看此处计算机层次结构-CSDN博客外设分为输入设备输出设备和外存设备。考408的话显示器应该是重点输入设备用于向计算机系统输入命令和文本、数据等信息的部件。键盘和鼠标是最基本的输入设备输出设备用于将计算机系统中的信息输出到计算机外部进行显示、交换等的部件。显示器和打印机是最基本的输出设备外存设备指除计算机内存和CPU缓存外的存储器通常指硬盘光盘等。2.1 输入输出设备这块没什么难点直接讲一下重点显示存储器VRAM外设部分重点不多很多东西像鼠标键盘这些大家接触也比较多就不多介绍。但是显示器这里有一个概念还是需要提一下的。显示存储器VRAM也叫刷新存储器简称显存对就是你想的那个显存。显示器是通过不断刷新屏幕光点像素来工作的。显卡会提前计算每个光点像素显示情况存储到显存中来保证显示器正常工作。每一帧的存储量由图像分辨率和灰度级决定像素亮度/颜色像8位就是2^8级颜色即256色决定分辨率越高灰度级越多显存容量要求越高。VRAM容量 分辨率 * 灰度级位数VRAM带宽 分辨率 * 灰度级位数 * 帧频每秒多少帧即FPS2.2 外存储器计算机外存又称为辅助存储器辅存目前有磁表面存储器机械硬盘和磁带类型存储器和半导体存储器固态硬盘。磁表面处理器把某些磁性材料薄薄地涂在金属铝或塑料表面上作为载磁体来存储信息2.2.1 磁盘存储器机械硬盘组成情况磁盘存储器由磁盘驱动器、磁盘控制器和盘片组成。磁盘驱动器核心部件是磁头组件和盘片组件。即机械部分用于转动物理结构磁盘控制器磁盘存储器和主机的接口目前应该只有SATA口还在用书上应该还会写IDE和SCSI。本质上是电路板将读取到的磁信号转为电信号然后给主机或者接受主机信号读取数据盘片存电磁信号的就是存数据的磁盘存储区域这块还是有点说法的。几个重要的概念有磁道扇区等但都是存储数据的区块范围名词。从大到小的排序为记录面磁道扇区块。记录面和磁头数Heads对应即一个圆盘看下图应该好理解磁道在记录面上取一个同心圆就是磁道磁道的形状是圆形扇区块截取磁道的一部分就是扇区扇区是磁盘读取数据的最小单位。每个磁道记录的信息量一定相等并不是园越大信息越多保证扇区位数一致每个磁道记录的信息量一定相等并不是园越大信息越多保证扇区位数一致每个磁道记录的信息量一定相等并不是园越大信息越多保证扇区位数一致值得注意的是由于边际效益记录面最内部和最外部一般不会设置磁道值得注意的是由于边际效益记录面最内部和最外部一般不会设置磁道值得注意的是由于边际效益记录面最内部和最外部一般不会设置磁道性能指标磁盘容量一个磁盘能存储的字节总数为磁盘容量。磁盘容量有非格式化和格式化容量之分非格式化磁记录表面可以利用的磁化单元总数理想容量格式化按照特定的记录格式所能存储信息的容量实际容量记录密度指盘面单位面积上记录的二进制信息量通常以道密度、位密度和面密度表示道密度沿磁盘半径方向单位长度上的磁道数磁道密度60道/cm位密度磁道单位长度上能记录的二进制代码位数磁道的二进制位数密度600bit/cm面密度位密度*道密度单位面积上能存的二进制位数600bit/cm平均存取时间这个平均存取时间和字面一个意思也好理解不理解上网看看图就懂了。平均存取时间 寻道时间磁头移动到目标磁道 旋转延迟时间磁头定位到所在扇区 传输时间传输数据所花费的时间数据传输率磁盘存储器在单位时间内向主机传送数据的字节数称为数据传输率假设磁盘转数为 r 转 / 秒 每条磁道容量为N个字节则数据传输率为磁盘地址主机向磁盘控制器发送寻址信息磁盘的地址一般下所示驱动器号 柱面磁道号 盘面号 扇区号你会发现其实就是从大到小定位地址和你的家庭住址一样从省到市再到县如若系统中有42^2个驱动器每个驱动器带一个磁盘每个磁盘2562^8个磁道、162^4个盘面每个盘面划分为162^4个扇区则每个扇区地址要18位二进制代码驱动器号2bit 柱面磁道号8bit 盘面号4bit 扇区号4bit硬盘的工作过程硬盘的主要操作是寻址、读盘、写盘。每个操作都对应一个控制字硬盘工作时第一步是取控制字第二步是执行控制字。对于机械硬盘而言读写操作是串行的不可能在同一时刻既读又写也不可能在同一时刻读两组数据或写两组数据磁盘阵列无论是固态硬盘还是机械硬盘他们都有坏掉的概率而一旦他们损坏其中的数据就难以救回。于是我们将多个磁盘以不同的方式相连形成廉价冗余磁盘阵列RAID来保存数据。RAID廉价冗余磁盘阵列是将多个独立的物理磁盘组成一个独立的逻辑盘数据在多个物理盘上分割交叉存储并行访问具有更好的存储性能、可靠性和安全性RAID从0~5安全性依次增加RAID0无冗余和无校验的磁盘阵列RAID1镜像磁盘阵列RAID2采用纠错的海明码的磁盘阵列RAID3位交叉奇偶校验的磁盘阵列RAID4块交叉奇偶校验的磁盘阵列RAID5无独立校验的奇偶校验磁盘阵列看这些定义超级抽象可以查一查图片和动画会好理解得多因为他们的备份是固定的2.2.2 光盘存储器光盘是利用光学读写信息的存储装置比如表面凹进去的是0凸出来的是1光盘有以下类型CD-ROM只读型光盘只能读出其中内容不能写入或修改CD-R只可写入一次信息之后不可修改CD-RW可读写光盘可以重复读写DVD-ROM高容量的CD-ROMDVD表示通用数字化多功能光盘相当于一种协议吧2.2.3 固态硬盘固态硬盘是半导体存储器通过电子方式读写速度高且抗震。但是其颗粒的读写次数是有寿命上限的。当读写次数耗尽后颗粒报废数据也随之丢失即硬盘被写穿了3 I/O接口接口是主机和外设之间的交接界面I/O接口需要满足以下功能1.实现主机和外设的通信联络控制2.进行地址译码和设备选择3.实现数据缓冲4.信号格式的转换5.传送控制命令和状态信息而需要满足上述具体具体需要以下功能1.设备选址2.传送命令3.传送数据4.反映I/O设备的工作状态3.1 I/O接口的基本结构同时I/O接口为了和CPU其实是I/O总线与外部设备通信会提供内部接口和外部接口。内部接口内部接口与系统总线相连实质上是与内存、CPU相连。数据的传输方式只能是并行传输外部接口外部接口通过接口电缆与外设相连外部接口的数据传输可能是串行方式因此I/O接口需要具有串/并转换功能CPU和外设之间的信息传送实质是对接口中的某些寄存器即端口进行读或写。如传送数据是对数据端口DBR进行读写操作。以控制外设输入为例信号从地址线传入I/O接口设备选择电路判断查找设备通过状态线反馈设备信息如果设备已经准备就绪通过命令线向设备发送控制命令命令寄存器和命令译码器暂存命令并转换为外设的控制信号命令通过命令线向外设发送控制命令外设通过数据线将数据传入数据缓冲寄存器DBR中同时外设通过状态线更新设备状态标记板块的信息当输入中断时设备状态标记模块会通过状态线向CPUI/O总线反馈输入完成CPU通过命令线向设备发送中断响应数据缓冲寄存器DBR通过数据线先发送中断型信号中断CPU当前工作然后传送数据3.2 接口与端口端口指的是接口电路中可以被访问的寄存器即接口中的寄存器是端口I/O端口就是接口电路中可以被CPU直接访问的寄存器I/O端口要想能够被CPU访问必须要有端口地址每一个端口都对应着一个端口地址3.2.1 I/O端口及其编址有两种方式统一编址和独立编址统一编址把I/O端口当作存储器的单元进行地址分配用统一的访存指令就可以访问I/O端口又称存储器映射方式靠不同的地址码区分内存和I/O设备I/O地址要求相对固定在地址的某部分如系统总线中地址线共10根则可以访问的存储单元个数为2^101024个假设要给10个I/O端口编址1.0~9表示I/O地址10~1023为主存单元地址2.0~1013表示主存单元地址1014~1023为I/O地址3.10~19表示I/O地址0~9、20~1023为主存单元地址统一编址不需要专门的输入输出指令CPU访问I/O操作更灵活、更方便还可使端口有较大的编址空间。但这样占用了存储器地址缩小了内存容量同时利用存储器编址的I/O设备进行数据输入/输出操作时执行速度较慢独立编址I/O端口地址与存储器地址无关独立编址CPU需要设置专门的输入/输出指令访问端口又称I/O映射方式靠不同的指令区分内存和I/O设备独立编址输入输出指令与存储器指令区别明显程序编制清晰便于理解。但CPU需要提供存储器读/写I/O设备读写两组控制信号控制复杂性高3.2.2 I/O接口的类型按数据传送方式分并行接口一个字节或一个字同时传送串行接口一位一位传送按主机访问I/O设备的控制方式可分为程序查询接口中断接口DMA接口按功能灵活性分为可编程接口不可编程接口4 I/O方式4.1 程序查询方式下图为程序查询方式流程图不难发现在程序查询阶段CPU启动I/O后必须全程等待I/O效率低下4.1.1 程序查询接口结构例题4.2 程序中断方式4.2.1 中断系统基本概念程序中断是指在计算机执行现行程序的过程中出现某些急需处理的异常情况或特殊请求CPU暂时中止当前程序去对这些异常情况或特殊请求进行处理在处理完毕后CPU又自动返回到现行程序的断点处继续执行原程序就是中间插进来一个任务工作流程1.中断请求中断源向CPU发送中断请求信号2.中断响应响应中断的条件中断判优多个中断源同时提出请求时通过中断判优逻辑响应一个中断源3.中断处理中断隐指令中断服务程序中断请求分类广义的中断指的是打断程序正常运行。根据中断信号的来源我们将其分为内中断CPU内部和外中断CPU外部具体可以看下图该图的结构较清晰操作系统中会详细介绍这些部分中断请求标记每个中断源向CPU发出中断请求的时间是随机的。为了记录中断事件并区分不同中断源中断系统需对每个中断源设置中断请求标记触发器INTR当其状态为“1”时表示中断源有请求。这些触发器可组成中断请求标记寄存器该寄存器可集中在CPU中也可分散在各个中断源如光电输入机就可以集成在鼠标中中对于外中断CPU在统一的时刻每条指令执行阶段结束前向接口发出中断查询信号以获取I/O的中断请求也就是说CPU响应中断的时间是在每条指令执行阶段的结束时刻。但对于一些执行时间长的指令会在执行过程中设置多个查询断点防止外中断未得到及时处理造成严重后果CPU响应中断需满足三个条件1.中断源有中断请求2.CPU允许中断即开中断3.一条指令执行完毕且没有更紧迫的任务中断判优-实现中断判优既可以用硬件实现也可以用软件实现即软硬件逻辑等效硬件实现是通过硬件排队器实现的它既可以设置在CPU中也可以分散在各个中断源中软件实现是通过查询软件实现的中断判优-优先级设置1.硬件故障中断最高级其次是软件中断2.非屏蔽中断优于可屏蔽中断3.DMA请求优于I/O设备传送的中断请求4.高速设备优于低速设备5.输入设备优于输出设备6.实时设备优于普通设备中断处理过程上图的内容可能会有点难以理解可以简短说明软件之所以无法完成保存PC的任务是因为进入中断服务程序的时候PC内容被修改了所以无法保存但是个人感觉这个原因非常牵强中断隐指令硬件代为软件实现保存PC的任务即为中断隐指令中断隐指令的主要任务为1.关中断。在中断服务程序中为了保护中断现场即CPU主要寄存器中的内容期间不被新的中断所打断必须关中断从而保证被中断的程序在中断服务程序执行完毕之后能接着正确地执行下去。2.保存断点。为了保证在中断服务程序执行完毕后能正确返回原程序必须将原程序断点即程序计数器PC的内容保存起来。可存入堆栈也可存入指定单元3.引出中断服务程序。引出中断服务程序的实质就是取出中断服务程序的入口地址并传给程序计数器PC。可以用软件查询法或硬件向量法实现中断处理过程-中断服务程序上面的中断隐指令只是完成了入口1那条线的任务上面那个图接下来就是完成中断服务程序中断服务的主要任务1.保护现场保存程序断点PC已由中断隐指令完成保存通用寄存器和状态寄存器的内容由中断服务程序完成使用堆栈或特定存储单元保存2.中断服务设备服务主体部分如通过程序控制需打印的字符代码送入打印机的缓冲存储器中即完成中间插进来的任务3.恢复现场通过出栈指令或取数指令把之前保存的信息送回寄存器中即恢复中断的任务4.中断返回通过中断返回指令回到原程序断点处值得注意的是我们可以对中断服务程序进行中断进行套娃可以对中断服务程序进行中断可以对中断服务程序进行中断可以对中断服务程序进行中断单重中断与多重中断单重和多重中断的中断流程是不同的单重中断执行中断服务时不响应新的中断请求多重中断又称中断嵌套执行中断服务程序时可响应新的中断请求多重中断和单重中断的流程如下中断屏蔽技术此技术用于防止多重中断无限循环导致死机中断屏蔽技术主要用于多重中断CPU要具备多重中断的功能需满足下列功能1.在中断服务程序中提前设置开中断指令2.优先级别高的中断源有权中断优先级低的中断源每个中断源都有一个屏蔽触发器如1表示屏蔽该中断源的请求0表示正常申请所有屏蔽触发器组合在一起构成一个屏蔽字寄存器屏蔽字寄存器的内容称为屏蔽字我们在硬件排队器的基础上增加输入就实现了中断屏蔽功能相关例题直接看例题会好理解一点4.2.2 完整流程在理解了以后也不需要流程图了如果上文的内容都有仔细阅读的话扫一眼就可以了例题第一小问存在一个坑点异步串行通信方式默认会加上一位起始位。而题干中特意说明校验位和停止位的原因为校验位不一定存在停止位不一定只有一位CPI指的是每条指令需要多少个时空周期所以第15条指令时经过了15*4个时钟周期部分人可能疑惑为什么是25070*1000因为I/O端口每收到一个字符就中断一次题干到15条的时候读取字符然后进入新一轮中断其实算20也可以理论上来说也是正确答案这里问的是CPU的实际工作时间所以如此计算不将等待D和I/O设备的时间算入CPU在中断响应阶段的操作如上4.3 DMA方式4.3.1 DMA控制器DMA控制器一个控制大批量数据传送的硬件DMA总线一个在I/O接口和主存之间的高速总线正如前面所说的包括之前文章也有介绍程序中断和查询会让CPU大部分工作时间变为等待时间降低工作效率。于是DMA方式被提出在DMA方式中当I/O设备需要进行数据传送时通过DMA控制器DMA接口向CPU提出DMA传送请求CPU响应之后将让出系统总线由DMA控制器接管总线进行数据传送。其主要功能包括传送前1.接受外设发出的DMA请求向CPU发出总线请求2.CPU响应此总线请求发出总线响应信号接管总线控制权进入DMA操作周期传送时3.确定传送数据的主存单元地址及长度并能自动修改主存地址计数和传送长度计数4.规定数据在主存和外设间的传送方向发出读写等控制信号执行数据传送操作传送后5.向CPU报告DMA操作的结束下图为DMA控制器的结构4.3.2 DMA传送过程这里的流程图看看就可以了没必要记的非常牢。整体流程如下预处理阶段启动I/O此阶段CPU介入。数据传送阶段DMA准备数据此阶段CPU不介入。后处理阶段CPU被打断完成I/O设备请求。但是我们发现在数据传送阶段CPU和DMA可能会出现主存访问冲突。我们有三种解决方案停止CPU访问主存DMA和CPU交替访存周期挪用周期窃取。1.停止CPU访问主存在DMA需要访问主存的时候直接停止CPU访问主存的权限2.DMA与CPU交替访存将CPU周期分为两个周期两个部件交替访问主存3.周期挪用周期窃取前两种方案的折中例题