典型的冯·诺伊曼计算机是以运算器为中心
现代的计算机已转化为以存储器为中心
- 运算器:完成算术运算和逻辑运算,并将运算的中间结果暂存在运算器内
- 存储器:存放数据和程序
- 控制器:控制、指挥程序和数据的输入、运行以及处理运算结果
- 输入设备:将人们熟悉的信息形式转换为机器能识别的信息形式
- 输出设备:将机器运算结果转换为人们熟悉的信息形式
- CPU = 运算器 + 控制器
- 主机 = CPU + 主存储器
- I/O设备(外部设备)= 输入设备和输出设备
五大部件之间的联系
- 通过与控制器之间的信号请求,输入设备首先输入信息给存储器【信息包括数据和程序,缺一不可】
- 控制器调用相应的指令运行程序,然后发出相应的操作命令给运算器【若需要使用运算器】,控制器给出操作数的地址,使用该地址从存储器调用操作数给运算器进行运算
- 运算结果返回给存储器,若需要打印,则通过输出设备与控制器之间的信号请求,打印结果
存储器
存储器分为主存储器(主存,内存储器)和辅助存储器(辅存,外存储器)。
存储的概念类 | 说明 |
存储元 / 存储元件 / 存储基元 | 用于存放一位二进制信息 |
存储单元 | 由若干个存储元组成,能存放多位二进制信息 |
存储体 / 存储矩阵 | 由许多存储单元组成 |
存储字 | 每个存储单元中二进制代码的组合为存储字,可代表数值、指令、地址…… |
存储字长 | 每个存储单元中二进制代码的位数【一个字节或字节的偶数倍】 |
存储器是计算机系统中的记忆设备,存放程序和数据
分类
层次结构
存储器的3个主要性能指标:速度、容量和每位价格(位价)
一般来说,速度越高,位价越高;容量越大,位价越低,速度越低
最上层的寄存器通常制作在CPU芯片内
寄存器中的数直接在 CPU 内部参与运算,CPU 内可以有十几个、几十个寄存器,其速度最快,位价最高,容量最小
CPU 和缓存、主存直接交换信息
缓存直接和 CPU 、主存交换信息
主存和 CPU、缓存、辅存交换信息
缓存-主存层:解决 CPU 和主存速度不匹配的问题,CPU 认为,其速度接近于缓存,高于主存,但容量和价位却接近于主存
主存-辅存层:解决存储系统的容量问题,主存和辅存之间的数据调用由硬件和操作系统共同完成,速度接近于主存,容量接近于辅存,平均价位接近于低速、廉价的辅存价位
主存-辅存这一层次的不断发展中,逐渐形成虚拟存储系统,在此系统中,程序员编程的地址范围与虚拟存储器的地址空间相对应【虚地址、逻辑地址、虚存地址、虚拟地址;实地址、物理地址:主存的实际地址 虚地址空间远大于实地址空间】
主存
CPU 能够直接访问的存储器是主存储器,主存储器是存放程序和数据的部件,是计算机实现“存储程序控制”的基础
主存储器包括存储体 M、各种逻辑部件及控制电路等
组成
存储矩阵:由大量相同的位存储单元阵列构成
译码驱动:将来自地址总线的地址信号翻译成对应存储单元的选通信号,该信号在读写电路的配合下完成对被选中单元的读/写操作
读写电路:包括读出放大器和写入电路,用来完成读/写操作
读/写控制线:决定芯片进行读/写操作
片选线:确定哪个存储芯片被选中,可用于容量扩充
地址线:单向输入,其位数与存储字的个数有关
数据线:双向的,其位数与读出或写入的数据位数有关
工作方式——按地址访问
按存储单元的地址号实现对存储字各位的存(写入)、取(读出),该存取方式称为按地址存取方式,即按地址访问存储器,简称访存
由于数据和指令存放在存储体内各自所占用的不同单元中,因此,当需要反复使用某个数据或指令时,只要指出其相应的单元地址号即可,不必要占用更多的存储单元重复存放同一个数据或同一条指令,大大提高了存储空间的利用率
指令和数据都由存储单元地址号反映,取一条指令和取一个数据的操作可视为是相同的,使用一套控制线路完成两种截然不同的操作
地址单元的分配
主存各存储单元的空间位置由单元地址号表示,地址总线用来指出存储单元地址号,根据该地址可读出或写入一个存储字
不同机器存储字长不同,为满足字符处理的需要,常用 8 位二进制数表示一个字节,存储字长取 8 的倍数
技术指标
主存的主要技术指标是存储容量和存储速度
存储容量
定义:主存能存放二进制代码的总位数,即 存储容量 = 存储单元个数 × 存储字长
可用字节总数表示,即 存储容量 = 存储单元个数 × 存储字长 / 8
存储速度
定义:由存取时间和存取周期表示
存取时间
定义:称为存储器的访问时间,指启动一次存储器操作(读或写)到完成该操作所需的全部时间
分类:读出时间【从存储器接收到有效地址开始,到产生有效输出所需的全部时间】、写入时间【从存储器接收到有效地址开始,到数据写入被选中单元为止所需的全部时间】
存取周期
定义:指存储器进行连续两次独立的存储器操作所需的最小间隔时间,通常存取周期大于存取时间
存储器带宽
定义:与存取周期密切相关的指标
表示:单位时间内存储器存取的信息量,单位可用 字/秒 或 字节/秒 或 位/秒
地位:带宽是衡量数据传输率的重要技术指标
意义:存储器的带宽决定了以存储器为中心的机器获得信息的传输速度,是改善机器瓶颈的一个关键因素
提高存储器的带宽的措施:
- 缩短存取周期
- 增加存储字长,使每个存取周期可读/写更多的二进制位数
- 增加存储体
半导体存储器
基本结构
半导体存储芯片采用超大规模集成电路制造工艺,在一个芯片内集成具有记忆功能的存储矩阵、译码驱动电路【译码驱动能把地址总线送来的地址信号翻译成对应存储单元的选择信号,该信号在读/写电路的配合下完成对被选中单元的读/写操作 】和读/写电路【读/写电路包括读出放大器和写入电路,用来完成读/写操作】等
存储芯片通过地址总线、数据总线和控制总线与外部连接
地址线是单向输入的,其位数与芯片容量有关
数据线是双向的,其位数与芯片可读出或写入的数据位数有关,与芯片容量有关
地址线和数据线的位数共同反映存储芯片的容量 数据线 n 根,地址线 m 根,芯片容量 = 2m × n 位
控制线主要有读/写控制线与片选线两种,不同存储芯片的读/写控制线【有的芯片的读/写控制线共用 1 根,有的分 2 根;读/写控制线决定芯片进行读/写操作】和片选线【有的芯片用 1 根,有的芯片用 2 根;片选线用来选择存储芯片】可以不同
由于半导体存储器由许多芯片组成,故需用片选信号确定哪个芯片被选中
译码驱动方式
半导体存储芯片的译码驱动方式有两种:线选法和重合法
线选法
特点:用一根字选择线(字线),直接选中一个存储单元的各位
优点:结构较简单
缺点:只适于容量不大的存储芯片
重合法
被选单元由 X、Y 两个方向的地址决定
随机存取存储器 RAM
随机存取存储器按其存储信息的原理不同,可分为静态 RAM 和动态 RAM 两大类
静态 RAM(SRAM)
存储器的基本单元电路:存储器中用于寄存“0”和“1”代码的电路
上图是一个由 6 个 MOS 管组成的基本单元电路
T1 ~ T4 是一个由 MOS 管组成的触发器基本电路
T5 、T6 受行地址选择信号控制
T1 ~T6 6个 MOS 管共同构成一个基本单元电路
T7 、T8 受列地址选择控制,分别与位线 A' 和 A 相连,不包含在基本电源电路内,是芯片内同一列的各个基本单元电路所共有的
静态 RAM 用触发器工作原理存储信息,信息读出后,仍保持其原状态,不需要再生
电源掉电后,原存信息丢失,属易失性半导体存储器
写入时不论触发器原状态如何,只要将写入代码送至 DIN 端,在写选择有效时,经两个写放大器,使两端输出为相反电平。当行、列地址选择有效时,使 T5 、T6 、T7 、T8 导通,并将 A 与 A' 点置成完全相反的电平,就把欲写入的信息写入该基本单元电路中
已制成的 RAM 芯片读写时序关系已被确定,将其与 CPU 连接时,必须注意其相互间的时序匹配关系,否则 RAM 将无法正常工作
在读周期和写周期内,地址线上的地址始终不变
动态 RAM(DRAM)
常见的动态 RAM 基本单元电路有三管式和单管式两种,其共同特点是靠电容存储电荷的原理寄存信息
若电容上存有足够多的电荷表示存“1”,电容上无电荷表示存“0”。电容上的电荷一般只能维持 1~2 ms,故即使电源不掉电,信息也会自动消失。必须在 2ms 内对其所有存储单元恢复一次原状态,该过程称为再生或刷新
与静态 RAM 相比,集成度更高、功耗更低
T1 、T2 、T3 这 3 个 MOS 管组成三管 MOS 动态 RAM 基本单元电路
读出时,先对预充电管 T4 置一预充电信号(存储矩阵中,每一列共用一个 T4 管),使读数据线达高电平 VDD 。然后由读选择线打开 T2 ,若 T1 的极间电容 Cg 存有足够多的电荷(被认为原存“1”),使 T1 导通,则因 T2 、T1 导通接地,使读数据线降为零电平,读出“0”信息。若 Cg 没有足够电荷(原存“0”),则 T1 截至,读数据线为高电平不变,读出“1”信息【由读出线的高低电平可区分其是读“1”,还是读“0”,只是与原存信息反相 写入信息和原存信息相反,二者相反,信号的对应关系是相反的】
写入时,将写入信号加到写数据线上,然后由写选择线打开 T3 ,Cg 便能随输入信息充电(写“1”)或放电(写“0”)
为提高集成度,将三管电路进一步简化,去掉 T1 ,把信息存在电容 CS 上,将 T2 、T3 合并成一个管子 T,便得到单管 MOS 动态 RAM 基本单元电路
读出时,字线上的高电平使 T 导通,若 CS 有电荷,经 T 管在数据线上产生电流,可视为读出“1”;若 CS 无电荷,则数据线上无电流,可视为读出“0”。读操作结束时,CS 的电荷已释放完毕,故是破坏性读出,必须再生
写入时,字线为高电平使 T 导通,若数据线上为高电平,经 T 管对 CS 充电,使其存“1”;若数据线为低电平,则 CS 经 T 放电,使其无电荷而存“0”
刷新
刷新的过程实质上是先将原存信息读出,再由刷新放大器形成原信息并重新写入的再生过程
刷新周期 / 再生周期:在一定的时间内,对动态 RAM 的全部基本单元电路必作一次刷新,一般取 2 ms
刷新时一行行进行的,必须在刷新周期内,由专用的刷新电路完成对基本单元电路的逐行刷新,才能保证动态 RAM 内的信息不丢失
刷新方式:集中刷新、分散刷新、异步刷新
若将动态 RAM 的刷新安排在 CPU 对指令的译码阶段,由于这个阶段 CPU 不访问存储器,所以该方案既克服了分散刷新需独占 0.5 μs 用于刷新,使存取周期加长且降低系统速度的缺点,又不会出现集中刷新的访问“死区”问题,从根本上提高了整机的工作效率
比较动态 RAM 和静态 RAM
目前,动态 RAM 的应用比静态 RAM 广泛得多,原因如下:
- 在同样大小的芯片中,动态 RAM 的集成度远高于静态 RAM,如动态 RAM 的基本单元电路为一个 MOS 管,静态 RAM 的基本单元电路可为 4~6 个 MOS 管
- 动态 RAM 行、列地址按先后顺序输送,减少了芯片引脚,封装尺寸也减少
- 动态 RAM 的功耗比静态 RAM 小
- 动态 RAM 的价格比静态 RAM 的价格便宜
随着动态 RAM 容量不断扩大,速度不断提高,其被广泛应用于计算机的主存
动态 RAM 的缺点:
- 由于使用动态元件(电容),因此其速度比静态 RAM 低
- 动态 RAM 需要再生,故需配置再生电路,也需要消耗一部分功率
容量不大的高速缓冲存储器大多用静态 RAM 实现
只读存储器 ROM
原始定义的 ROM 一旦注入原始信息即不能改变,随着用户的需要,希望能任意修改 ROM 内的原始信息,便出现 PROM、EPROM 和 EEPROM 等
对于半导体 ROM ,基本器件为两种:MOS 型和 TTL 型
掩模 ROM
采用重合法驱动,行、列地址线分别经行、列译码器
行选择线与列选择线交叉处既可有耦合元件 MOS 管,也可没有。若其交叉处有耦合元件 MOS 管,因其导通而使列线输出为低电平,经读放大器反相为高电平,输出“1”;若交叉处无 MOS 管。列线输出为高电平,经读放大器反相为“0”输出。用行、列交叉处是否有耦合元件 MOS 管,便可区分原存“1”还是存“0”
此 ROM 制成后不可能改变原行、列交叉处的 MOS 管是否存在,故用户是无法改变原始状态的
PROM
定义:可以实现一次性编程的只读存储器
构成:双极型电路和熔丝,一个由双极型电路和熔丝构成的基本单元电路
熔丝断和未断可区别其所存信息是“1”或“0”,熔丝断处读出“0”,熔丝未断处读出“1”
已断的熔丝无法再恢复,故这种 ROM 只能实现一次编程,不得再修改
EPROM
定义:一种可擦除可编程只读存储器
用户可所存信息作任意次的改写
目前用得多的 EPROM 是由浮动栅雪崩注入型 MOS 管构成,又称 FAMOS 型 EPROM
存储器与 CPU 的连接
存储容量的扩展
背景:单个存储芯片的容量有限
定义:将若干存储芯片连在一起组成足够容量的存储器
方法:位扩展、字扩展
位扩展
含义:增加存储字长(存储单元的位数)
字扩展
含义:增加存储器字的数量(存储单元的个数)
字、位扩展
含义:既增加存储字的数量,又增加存储字长
解答:每组2个 2K×4位的芯片,一共四组,第一组一共有 2K 个存储单元,地址为 0000H~07FFH,第二组为 0800H~0FFFH,第三组为 1000H~17FFH,第四组为 1800H~1FFFH
存储器与 CPU 的连接
地址线的连接
存储芯片的容量不同,其地址线数不同,CPU 的地址线数往往比存储芯片的地址线数多
CPU 地址线的低位与存储芯片的地址线相连
CPU 地址线的高位在存储芯片扩充时使用,或有其他用途(如片选信号)
数据线的连接
CPU 的数据线数与存储芯片的数据线数不一定相等,通过对存储芯片扩位,使其数据位数与 CPU 的数据线数相等
读/写命令线的连接
CPU 读/写命令线一般可直接与存储芯片的读/写控制端相连,通常高电平为读,低电平为写
CPU 的读/写命令线是分开的,此时 CPU 的读命令线应与存储芯片的允许读控制端相连,CPU 的写命令线与存储芯片的允许写控制端相连
片选线的连接
片选有效信号与 CPU 的访存控制信号 MREQ(低电平有效)有关,只有当 CPU 要求访存时,才需要选择存储芯片
片选有效信号与地址有关,CPU 的地址线往往多于存储芯片的地址线,故未与存储芯片连上的高位地址必须和访存控制信号共同产生存储芯片的片选信号
合理选择存储芯片
主要指存储芯片类型(RAM 和 ROM)和数量【尽量使连线简单方便】的选择
ROM:通常存放系统程序、标准子程序、各类常数……
RAM:为用户编程而设置
例题
存储器的校验
码字:由若干位代码组成的一个字叫码字
两个码字间的距离:将两个码字逐位进行对比,具有不同的位的个数称为两个码字间的距离
码距:一种编码方案可能有若干个合法码字,各合法码字间的最小距离称为码距
d=1时,无检错能力;
d=2时,有检错能力;
d≥3时,若设计合理,可能具有检错、纠错能力
d>1时,发生位错误时,可能映射到非法状态
汉明码具有一位纠错能力
任何一种编码是否具有检测能力和纠错能力,都与编码的最小距离有关
汉明码
汉明码设计思路:分组校验—>多个校验位—>校验位标注出错位置
分组思路
需要多少个检测位(校验位),确定汉明码总的位数
检测位(校验位)应该怎么放置
设 n+k 位代码自左至右依次编为第 1,2,3,...,n+k 位,将 k 位检测位分别安插在 n+k 位代码编号的第 1,2,4,8,...,2k-1 位上
目的:保证其能够分别承担 n+k 位信息中不同数位所组成的“小组”的奇偶检测任务,使检测位和它所负责检测的小组中 1 的个数为奇数或偶数
检测位(校验位)的取值
按“偶校验”或“奇校验”配置汉明码
每组 1 的个数为奇还是偶
汉明码的纠错
汉明码的纠错过程实际上是对传送后的汉明码形成新的检测位 Pi ,根据 Pi 的状态,直接指出错误的位置
Pi 的状态由原检测位 Ci 及其所在小组内 1 的个数确定
高速缓冲存储器
问题的提出
局部性原理
- 时间局部性:在最近的未来要用到的信息,很可能是现在正在使用的信息
- 空间局部性:在最近的未来要用到的信息(指令和数据),很可能与现在正在使用的信息在存储空间上是邻近的
工作原理
Cache-主存存储空间的基本结构
标记:记录主存块和 Cache 块的对应关系,标记的内容相当于主存块的编号,CPU 读信息时,要将主存地址的高 m 位与缓存块的标记进行比较,以判断所读的信息是否已在缓存中
主存和 Cache 以块为单位交换信息
主存和 Cache 的块内地址完全相同
缓存共有 C 块,主存共有 M 块,M>>C
命中 未命中
命中:主存块调入缓存,贮存块与缓存块建立了对应关系,用标记记录与某缓存块建立了对应关系的主存块号
未命中:主存块未调入缓存,主存块与缓存块未建立对应关系
命中率:CPU 要访问的信息已在 Cache 中的比率
设一个程序执行期间,Cache 的总命中次数为 Nc ,访问主存的总次数为 Nm ,则命中率 H=Nc /(Nc + Nm)
效率:e = 访问 Cache 的时间 / 平均访问时间 ×100%
Cache 基本结构
主存中的块放到 Cache 中哪个位置?
- 空位随意放:全相联映射
- 对号入座:直接映射
- 按号分组,组内随意放:组相联映射
对于全相联映射,Cache 满了如何处理?对于直接映射、组相联映射,对应位置被占用如何处理?
- 随机算法
- 先进先出算法
- 近期最少使用算法
- 不经常使用算法
Cache 读
Cache 写
Cache 的改进
增加 Cache 的级数;将统一的 Cache 变成分立的 Cache
单一缓存 / 片内缓存 / 片载缓存
定义:在 CPU 和主存之间只设一个缓存,把该缓存直接与 CPU 制作在同一个芯片内
优点:提高外部总线的利用率;提高存取速度;增强系统的整体效率
缺点:容量不是很大,CPU 通过系统总线访问主存的次数增多,整机速度下降
片外缓存
位置:处于主存与片内缓存之间
组成:比主存动态 RAM 和 ROM 存取速度更快的静态 RAM
特点:不使用系统总线作为片外缓存与 CPU 的传递路径,使用独立的数据路径,减轻系统总线的负担
优点:提高片外缓存调入片内缓存的速度;CPU 占用系统总线的时间下降,整机工作速度改进
两级缓存
定义:由片内缓存和片外缓存组成 Cache,片内缓存为第一级,片外缓存为第二级
统一缓存
定义:指令和数据存放在同一缓存内的 Cache
应用:计算机的主存是统一的(指令、数据存储在同一主存内)
分立缓存
定义:指令和数据分别存放在两个缓存中,指令 Cache,数据 Cache
应用:主存采用指令、数据分开存储的方案;Cache 与机器对指令执行的控制采用超前控制(当前指令执行过程尚未结束就将下一条准备执行的指令取出)或流水线控制(多条指令同时执行)方式
Cache-主存地址映射
地址映射:贮存地址映射到 Cache 地址
地址映射方式:
- 直接映射(固定的映射关系)
- 全相联映射(灵活性大的映射关系)
- 组相联映射(上述两种映射的折中)
直接映射
i:缓存块号 j:主存块号 C:缓存块数
i=j mod C
特点:
- 每个缓存块 i 可以和若干个主存块对应
- 每个主存块 j 只能和一个缓存块对应
优点:实现简单
缺点:不够灵活,每个主存块只能固定地对应某个缓存块,即使缓存内空着许多位置也不能占用,使缓存的存储空间得不到充分利用;如果程序恰好要重复访问对应同一缓存位置的不同主存块,要不停地进行替换,降低命中率
操作:当缓存接到 CPU 送来的主存地址后,根据中间 c 位字段找到 Cache 字块,根据字块的“标记”是否与主存地址的高 t 位相符判断是否命中
全相联映射
特点:主存中的任一块可以映射到缓存中的任一块
优点:灵活,命中率更高,缩小块冲突率
缺点:所需地逻辑电路多,成本较高
组相联映射
组相联映射是对直接映射和全相联映射的一种折中
Cache 分为 Q 组,每组有 R 块
i = j mod Q
特点:某一主存块 j 按模 Q 映射到缓存的第 i 组中的任一块
主存的第 j 块会映射到 Cache 的第 i 组内,两者之间一一对应,属直接映射关系;主存的第 j 块会映射到 Cache 的第 i 组内的任一块,属全相联映射
r=0,是直接映射
r=c,是全相联映射
替换策略
出现背景:新的主存块需要调入 Cache 且其可用空间位置被占满,需要替换掉 Cache 原有的数据
- 直接映射:因为某个主存块只与一个 Cache 字块有映射关系,故替换策略简单
- 组相联和全相联映射:主存块可以写入 Cache 中若干位置,出现选择替换掉哪一个 Cache 字块问题,即替换算法问题
辅存
辅助存储器用于帮助主存储器记忆更多的信息,辅助存储器中的信息必须调入主存后,才能被 CPU 访问
特点
与主存相比,辅存容量大、速度慢、价格低、可脱机保护信息……
运算器
运算器是对信息进行处理和运算的部件,主要功能是进行算术和逻辑运算,最少包括三个寄存器【累加器 ACC,乘商寄存器 MQ,操作数寄存器 X,现代计算机内部往往设有通用寄存器组】和一个算术逻辑单元 ALU【运算器核心】
逻辑单元的位数与机器字长相同
四则运算
M:存储器的任一地址号 [M]:M地址号单元中的内容
设 ACC 中已存前一刻的运算结果,并作为一个操作数
加法 [ACC]+[X]
[M]—>X
[ACC]+[X]—>ACC
减法 [ACC]-[X]
[M]—>X
[ACC]-[X]—>[ACC]
乘法 [ACC]×[X]
[M]—>MQ
[ACC]—>X
0—>ACC 将ACC清零
[X]×[MQ]—>ACC//MQ
除法 [ACC]÷[X]
[M]—>X
[ACC]÷[X]—>MQ
余数 R 在 ACC 中
控制器
控制器是整个计算机的“指挥中心”,使计算机的各个部件自动协调工作。具体分为三个过程:取指过程(控制器命令存储器读出一条指令)、分析过程(对取出的命令进行分析,指出该命令要完成什么样的操作,并按寻址特征指明操作数的地址)、执行过程(根据操作数所在的地址以及指令的操作码完成某种操作)
计算机内流动的信息:控制信息和数据信息
控制器由程序计数器PC、指令寄存器IR 和控制单元 CU 组成
完成一条指令操作的取指、分析和执行 3 个阶段
组成
I/O
接收 CU 发出的各种控制命令,并完成相应的操作
发展概况
早期
CPU 和 I/O 串行工作,分散连接
主存 <——> CPU <——> I/O 系统
程序查询方式:CPU 通过程序不断查询 I/O 设备是否已做好准备,进而控制 I/O 设备与主机交换信息
接口模块和 DMA 阶段
CPU 与 I/O 并行工作,总线连接
中断方式:只在 I/O 设备准备就绪并向 CPU 发出中断请求时才予以响应
DMA 方式:主存和 I/O 设备之间有一条直接数据通道,当主存和 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 设备与主机协调工作
通道管理方式
有 I/O 指令、通道指令及相应的操作系统
不同机器的操作系统的差异很大
I/O 指令
I/O 指令是机器指令的一类
I/O 指令可以和其他机器指令的字长相等,但其需要能够反映 CPU 与 I/O 设备交换信息的各种特点
一般格式
- 操作码:作为 I/O 指令与其他指令的判别代码(识别 I/O 指令)
- 命令码:体现 I/O 设备的具体操作(做什么操作)
- 设备码:多台 I/O 设备的选择码(对哪个设备进行操作)
命令码表述的情况
- 将数据从 I/O 设备输入主机
- 将数据从主机输出至 I/O 设备
- 状态测试
- 形成某些操作指令
通道指令
定义:对具有通道的 I/O 系统专门设置的指令,是通道用于执行 I/O 操作的指令,可以由管理程序存放在主存的任何地方,由通道从主存中取出并执行
作用:
- 指明参与传送的数据组在主存中的首地址
- 指明需要传送的字节数或所传数据组的末地址
- 指明所选设备的设备码及完成某种操作的命令码
位数:一般较长
通道程序:由通道指令组成,完成某种外围设备与主存之间传送信息的操作
具有通道结构的计算机:
I/O 指令不实现 I/O 数据传送,主要完成启、停 I/O 设备,查询通道和 I/O 设备的状态及控制通道所做的其他操作
具有通道指令的计算机:
一旦 CPU 执行了启动 I/O 设备的指令,由通道代替 CPU 对 I/O 设备的管理
I/O 硬件
组成
带有接口的 I/O 系统中,一般包括接口模块及 I/O 设备两大部分
接口电路时间包含许多数据传送通道、有关电路、控制信号通路及其相应的逻辑电路
一个通道可以和一个以上的设备控制器相连,一个设备控制器可以控制若干台同一类型的设备
I/O 设备与主机的联系方式
I/O 设备的编址方式
将 I/O 设备码看作地址码
设备通过接口与主机相连时,CPU 可通过接口地址访问 I/O 设备
设备寻址
启动某一设备时,由 I/O 指令的设备码字段直接指出该设备的设备号
用设备选择电路识别设备是否被选中
CPU 给出的地址和设备中保存的自己的地址进行比较
传送方式
并行传送
定义:同一瞬间,n 位信息同时从 CPU 输出至 I/O 设备,或由 I/O 设备输入 CPU
特点:传送速度较快,要求数据线多
串行传送
定义:同一瞬间只传送一位信息,在不同时刻连续逐位传送一串信息
特点:传送速度较慢,只需一根数据线和一根地线
应用:I/O 设备与主机距离很远
电路接口
不同的传送方式需配置不同的接口电路
联络方式
I/O 设备与主机的连接方式
I/O 设备与主机信息传送的控制方式
程序查询方式
实现:CPU 通过程序不断查询 I/O 设备是否做好准备,从而控制 I/O 设备与主机交换信息
核心:每时每刻需不断查询 I/O 设备是否准备就绪
主要特点:CPU 有“踏步”等待现象,CPU 与 I/O 串行工作
优点:接口设计简单,设备量少
缺点:CPU 在信息传送过程中要花费很多时间用于查询的等待,而且在一段时间内只能和一台外设交换信息,效率大大降低
启动 I/O 设备后,CPU 不断查询 I/O 设备的准备情况,从而终止原程序的执行
I/O 准备就绪后,CPU 一个字一个字地从 I/O 设备取出,此刻 CPU 不能执行原程序
CPU 和 I/O 设备处于串行工作状态,CPU 的工作效率不高
程序查询流程
当 I/O 设备较多时,CPU 需按各个 I/O 设备在系统中的优先级别进行逐级查询
正确完成查询,需要执行的指令:
- 测试指令,用来查询 I/O 设备是否准备就绪
- 传送指令,当 I/O 设备已准备就绪时,执行传送指令
- 转移指令,若 I/O 设备未准备就绪,执行转移指令,转至测试指令,继续测试 I/O 设备的状态
接口电路
设备选择电路:识别本设备,当地址线上的设备号与本设备号相符时,SEL 有效,可用接收命令
数据缓冲寄存器:存放欲传送的数据
D:完成触发器
B:工作触发器
以输入设备为例,接口的工作工程:
- CPU 通过 I/O 指令启动输入设备,指令的设备码字段通过地址线送至设备选择电路
- 若该接口的设备码与地址线上的代码吻合,其输出 SEL 有效
- I/O 指令的启动命令经过“与非”门将工作触发器 B 置“1”,将完成触发器 D 置“0”
- 由 B 触发器启动设备工作
- 输入设备将数据送至数据缓冲寄存器
- 由设备发准备工作结束信号,将 D 置“1”,B 置“0”,表示外设准备就绪
- D 触发器以“准备就绪”状态通知 CPU,表示“数据缓冲满”
- CPU 执行输入指令,将数据缓冲寄存器中的数据送至 CPU 的通用寄存器,再存入主存相关单元
程序中断方式
启动 I/O 设备后,CPU 不查询 I/O 设备是否已经准备就绪,继续执行自身程序,当 I/O 设备准备就绪并向 CPU 发出中断请求后,CPU 予以响应,大大提高 CPU 的工作效率
CPU 启动 I/O 设备后继续执行原程序,在第 K 条指令执行结束后,CPU 响应 I/O 设备的请求,中断现行程序,转至中断服务程序,处理完后返回到原程序断点处,继续从第 K+1 条指令往下执行
CPU 和 I/O 部分的并行工作
接口电路
中断请求触发器和中断屏蔽触发器
每台外部设备都必须配置一个中断请求触发器 INTR,其为“1”,表示该设备向 CPU 提出中断请求
设备欲提出中断请求时,其设备本身必须准备就绪,即接口内的完成触发器 D 的状态必须为“1”
中断源:向 CPU 提出中断请求的各种因素
当多个中断源向 CPU 提出中断请求时,CPU 必须坚持在任何瞬间只能接受一个中断源的请求
当多个中断源同时提出请求时,CPU 必须对各中断源的请求进行排队,且只能接受级别最高的中断源的请求,不允许级别低的中断源中断正在运行的中断服务程序
在 I/O 接口设置一个屏蔽触发器 MASK,其为“1”,表示被屏蔽,即封锁其中断源的请求
中断请求触发器和中断屏蔽触发器在 I/O 接口中成对出现
仅当设备准备就绪(D=1),且该设备未被屏蔽(MASK=0)时,CPU 的中断查询信号可将中断请求触发器置“1”(INTR=1)
排队器
就 I/O 中断而言,速度越高的 I/O 设备,优先级越高,因为如果 CPU 不及时响应高速 I/O 的请求,去信息可能会立即丢失
硬件排队器的实现,既可以在 CPU 内部设置一个统一的排队器,对所有中断源进行排队,也可在接口电路内分别设置各个设备的排队器,称为链式排队器
是链式排队器的核心,每个接口有一个反相器和一个“与非”门
中断向量地址形成部件(设备编码器)
硬件向量法:通过向量地址寻找设备的中断服务程序入口地址
硬件电路产生向量地址,向量地址找到入口地址
(上图有点儿错误,中断向量地址形成部件的输出是中断向量而非向量地址)
中断向量地址形成部件的输入:来自排队器的输出 INTP1 ,INTP2 ,...,INTPn
中断向量地址形成部件的输出:中断向量(二进制代码表示),其位数与计算机可以处理中断源的个数有关,一个中断源对应一个向量地址
中断向量地址形成部件实质是一个编码器
优点:可动态的修改中断服务程序,只需修改向量地址中存放的中断向量
程序中断方式接口电路的基本组成
I/O 中断处理过程
CPU 响应中断的条件
允许中断触发器 EINT=1
用开中断指令将 EINT 置“1”
用关中断指令将 EINT 置“0”或硬件自动复位
CPU 响应中断的时间
当 D=1(随机)且 MASK=0 时【完成触发器 D,屏蔽触发器 MASK】
在每条指令执行阶段的结束前,CPU 发中断查询信号(将 INTR 置“1”)
I/O 中断处理过程
- 由 CPU 发启动 I/O 设备命令,将接口中的 B 置“1”,D 置“0”
- 接口启动输入设备开始工作
- 输入设备将数据送入数据缓冲寄存器
- 输入设备向接口发出“准备工作结束”信号,将 D 置“1”,B 置“0”,标志设备准备就绪
- 当设备准备就绪(D=1),且本设备未被屏蔽(MASK=0)时,在指令执行阶段的结束时刻,由 CPU 发出中断查询信号
- 设备中断请求触发器 INTR 被置“1”,标志设备向 CPU 提出中断请求。与此同时,INTR 送至排队器,进行中断判优
- 若 CPU 允许中断(EINT=1),设备又被排队选中,即进入中断响应阶段,由中断响应信号 INTA 将排队器输出送至编码器形成向量地址
- 向量地址送至 PC,作为下一条指令的地址
- 由于向量地址中存放的是一条无条件转移指令,故这条指令执行结束后,即无条件转至该设备的服务程序入口地址,开始执行中断服务程序,进入中断服务阶段,通过输入指令将数据缓冲寄存器的输入数据送至 CPU 的通用寄存器,再存入主存相关单元
- 中断服务程序的最后一条指令时中断返回指令,当其执行结束时,即中断返回至原程序的断点处。至此,一个完整的程序中断处理过程即告结束
一次中断处理过程简单归纳为中断请求、中断判优、中断响应、中断服务和中断返回5个阶段
中断服务程序的流程
中断服务程序的流程分四大部分:保护现场、中断服务、恢复现场、中断返回
保护现场
两个含义,一是保存程序的断点【由中断隐指令完成】,二是保存通用寄存器和状态寄存器的内容【由中断服务程序完成】
中断服务程序的起始部分安排若干条存数指令,将寄存器的内容存至存储器中保存,或用进栈指令将各寄存器的内容推入堆栈保存,即将程序中断时的“现场”保存起来
中断服务(设备服务)
中断服务是中断服务程序的主体部分,不同的中断请求源,其中断服务操作内容不同
恢复现场
恢复现场是中断服务程序的结尾部分,在退出程序前,将原程序中断时的“现场”恢复到原来的寄存器中
通过取数指令或出栈指令,将保存在存储器或堆栈中的信息送回到原来的寄存器中
中断返回
中断服务程序的最后一条指令通常是一条中断返回指令,使返回到原程序的断点处,以便继续执行原程序
多重中断、单重中断
多重中断:在处理中断的过程中出现新的中断请求,若 CPU 暂停现行的中断服务程序,转去处理新的中断请求,称为中断嵌套或多重中断
单重中断:CPU 执行中断服务程序时,对新的中断不予理睬,称为单重中断
区别:“开中断”的设置时间不同
多重中断的“开中断”设置在保护现场之后,意味着在保护现场后,若有级别更高的中断源提出请求,CPU 可以响应,即再次中断现行的服务程序,转至新的中断服务程序
单重中断的“开中断”设置在中断返回之前,意味着整个中断服务处理过程中,不能再响应其他中断源的请求
总结
DMA 方式
主存与 I/O 设备之家有一条数据通道,主存与 I/O 设备交换信息时,无须调用中断服务程序
DMA 和 CPU 同时访问主存,CPU 将总线占有权让给 DMA,把 DMA 的这种占有称为窃取或挪用。窃取的时间一般为一个存取周期,DMA 占用的存取周期称为窃取周期或挪用周期。在 DMA 窃取存取周期时,CPU 能继续做内部操作
CPU 和 I/O 并行工作
特点
工作速度比程序中断方式的工作速度高,适合高速 I/O 或辅存与主存之间的信息交换
高速 I/O 设备每次申请与主机交换信息,要等待 CPU 做出中断响应后再进行,可能因此丢失数据
高速 I/O(通过 DMA 接口) 和 CPU 同时访问主存,CPU 必须将总线占有权让给 DMA 接口使用,即 DMA 采用周期窃取的方式占用一个存取周期
传送方式
CPU 和 DMA 接口有效地分时使用主存
DMA 接口
功能
- 向 CPU 申请 DMA 传送
- 在 CPU 允许 DMA 工作时,处理总线控制权的转交,避免因进入 DMA 工作而影响 CPU 正常活动或引起总线竞争
- 在 DMA 期间管理系统总线,控制数据传送
- 确定数据传送的起始地址和数据长度,修正数据传送过程中的数据地址和数据长度
- 在数据块传送结束时,给出 DMA 操作完成的信号
基本组成
主存地址寄存器 AR
存放主存中需要交换数据的地址
DMA 传送数据前,通过程序将数据在主存中的首地址送到主存地址寄存器
DMA 传送过程中,每交换一次数据,将地址寄存器内容+1,直到一批数据传送完为止
字计数器 WC
记录传送数据的总字数
以交换字数的补码值预置,DMA 传送过程中,每传送一个字,字计数器+1,直到计数器为0,即最高位产生进位时,表示该批数据传送完毕
以交换字数的原码值预置,DMA 传送过程中,每传送一个字,字计数器-1,直到计数器为0,表示该批数据传送结束
该批数据传送结束后,DMA 接口向 CPU 发中断请求信号
数据缓冲寄存器 BR
暂存每次传送的数据
通常DMA 接口与主存之间采用字传送,DMA 与设备之间可能是字节或位传送,故 DMA 接口中可能包括有装配或拆卸字信息的硬件逻辑
DMA 控制逻辑
管理 DMA 的传送过程,由控制电路、时序电路及命令状态控制寄存器等组成
当数据准备好一个数据字或一个字传送结束时,向 DMA 接口提出申请 DREQ,DMA 控制逻辑向 CPU 请求 DMA 服务,发出总线使用权的请求信号 HRQ 。待收到 CPU 发出的响应信号 HLDA 后,DMA 控制逻辑开始负责管理 DMA 传送的全过程,包括对主存地址寄存器和字计数器的修改、识别总线地址、指定传送类型(输入或输出)以及通知设备已经被授予一个 DMA 周期 DACK 等
中断机构
当字计数器溢出(全“0”)时,表示一批数据交换完毕,由“溢出信号”通过中断机构向 CPU 提出中断请求,请求 CPU 作 DMA 操作的后处理
设备地址寄存器 DAR
存放 I/O 设备的设备码,表示设备信息存储区的寻址信息
具体内容取决于设备的数据格式和地址的编址方式
工作过程
DMA 传送过程
DMA 的数据传送过程分为预处理、数据传送和后处理 3 个阶段
预处理
在 DMA 接口开始之前,CPU 必须给其预置【程序的初始化阶段】:
- 给 DMA 控制逻辑指明数据传送方向是输入(写主存)还是输出(读主存)
- 向 DMA 设备地址寄存器送入设备号,并启动设备
- 向 DMA 主存地址寄存器送入交换数据的主存起始地址
- 对字计数器赋予交换数据的个数
I/O 设备准备好发送的数据(输入)或上次接收的数据已处理完毕(输出),通过 DMA 接口向 CPU 提出占用总线的申请,多个 DMA 同时申请,按轻重缓急由硬件排队判优逻辑决定优先 。I/O 设备得到主存总线的控制权后,数据的传送由该 DMA 接口进行管理
数据传送
DMA 方式以数据块为单位传送
后处理
DMA 的中断请求得到响应后,CPU 停止原程序的执行,转去执行中断服务程序,做一些 DMA 的结束工作:
- 校验送入主存的数据是否正确
- 决定是否继续用 DMA 传送其他数据块,若继续传送,则要对 DMA 接口进行初始化,若不需要传送,则停止外设
- 测试在传送过程中是否发生错误,若出错,则转错误诊断及处理错误程序
DMA 接口与系统的连接方式
具有公共请求线的 DMA 请求
若干个 DMA 接口通过一条公用的 DMA 请求线向 CPU 申请总线控制
CPU 发出响应信号,用链式查询方式通过 DMA 接口,首先选中的设备获得总线控制权,即可占用总线与主存传送信息
独立的 DMA 请求
每一个 DMA 接口各有一对独立的 DMA 请求线和 DMA 响应线,由 CPU 的优先级判别机构裁决首先响应哪个请求,并在响应线上发出响应信号,获得响应信号的 DMA 接口可控制总线与主存传送数据
DMA 方式与程序中断方式的比较
I/O 通道
I/O 处理机
I/O 接口
I/O 接口可以看作两个系统或两个部件之间的交接部分,既可以是两种硬件设备之间的连接电路,也可以是两个软件之间的共同逻辑边界
接口和端口是两个不同的概念,端口指接口电路中的一些寄存器,分别存放数据信息、控制信息和状态信息,相应的端口称为数据端口、控制端口和状态端口,若干个端口加上相应的控制逻辑组成接口,CPU 通过输入指令,从端口读出信息,通过输出指令,将信息写入端口
解决的问题
- 数据缓冲,达到速度匹配
- 实现 I/O 设备的选择
- 实现数据串-并格式转换
- 实现电平转换
- 传送控制命令
- 反映设备的状态
总线连接方式的 I/O 接口电路
每台 I/O 设备通过 I/O 接口挂到系统总线上
I/O 总线包括:数据线、设备选择线、命令线和状态线
数据线
作用:I/O 设备与主机之间数据代码的传送线
根数:一般等于存储字长的位数或字符的位数
传输方向:通常是双向的,也可以是单向的
采用单向数据总线,必须用两组才能实现数据的输入和输出功能
采用双线数据总线,用一组即可实现数据的输入和输出功能
设备选择线
作用:传送设备码
根数:取决于 I/O 指令中设备码的位数
别称:若将设备码看作地址号,设备选择线可称为地址线
组数:可以有一组,也可以有两组,一组用于主机向 I/O 设备发送设备码,另一组用于 I/O 设备向主机回送设备码,可以采用一组双向总线代替两组单向总线
命令线
作用:传输 CPU 向设备发出的各种命令信号
传输方向:单向
根数:与命令信号多少有关
状态线
作用:将 I/O 设备的状态向主机报告的信号线
传输方向:单向
功能
选址功能
设备选择线上的设备码决定 CPU 选择的电路
设备码送至所有设备的接口,则要求每个接口都必须具有选址功能,当设备选择线上的设备码与本设备码相符时,发出设备选中信号 SEL 通过设备选择电路完成
两个设备选择电路的具体路线可以不同,但是其分别能识别出自身的设备码,某接口设备选择电路有输出时,可控制这个设备通过命令线、状态线和数据线与主机交换信息
传送命令的功能
在 I/O 接口中设存放命令的命令寄存器及命令译码器
命令寄存器用来存放 I/O 指令中的命令码,受设备选中信号控制
命令线和所有接口电路的命令寄存器相连,只有被选中设备的 SEL 信号有效,命令寄存器才可接受命令线上的命令码
传送数据的功能
接口中具有数据通路,完成数据传送,这种数据通路具有缓冲能力,能将数据暂存在接口内
接口中设有数据缓冲寄存器,暂存 I/O 设备与主机准备交换的信息,与 I/O 总线中的数据线相连
每个接口的数据缓冲寄存器的位数可以不同,取决于各类 I/O 设备的不同需要
反映 I/O 设备工作状态的功能
为使 CPU 能及时了解各 I/O 设备的工作状态,接口内须设置反映设备工作状态的触发器
所有状态标志触发器都与 I/O 总线中的状态线相连,不同的 I/O 设备的接口电路中可根据需要增设一些其他状态标志触发器
现代计算机系统大多采用中断技术,接口电路一般设有中断请求触发器 INTR,为“1”,表示该 I/O 设备向 CPU 发出中断请求;接口还有屏蔽触发器 MASK,与中断请求触发器配合使用,完成设备的屏蔽功能