# 计算机系统概论
# 计算机的性能指标
- 吞吐量:表征一台计算机在某一时间间隔内能够处理的信息量。
- 响应时间:表征从输入有效到系统产生响应之间的时间度量,例如微秒、纳秒。
- 利用率:表示在给定的时间间隔内,系统被实际使用的时间所占的比率,一般用百分比表示。
- 处理机字长:指处理机运算器中一次能够完成二进制数运算的位数。当前处理机的字长有 8 位、16 位、32 位、64 位。字长越长,表示计算的精度越高。
- 总线宽度:一般指 CPU 中运算器与存储器之间进行互连的内部总线二进制位数。
- 存储器容量:存储器中所有存储单元的总数目,通常用 KB、MB、GB、TB 来表示。
- 存储器带宽:存储器的速度指标,单位时间内从存储器读出的二进制数信息量,一般用字节数 / 秒表示。
- 主频 / 时钟周期:CPU 的工作节拍受主时钟控制,主时钟不断产生固定频率的时钟,主时钟的频率(f)叫 CPU 的主频,主频的倒数称为 CPU 时钟周期(T),即 T=1/f 。
- MIPS:平均每秒执行多少百万条定点指令数。
- FLOPS:每秒执行浮点操作的次数。
-
# 计算机的硬件
# 运算器(ALU)
- 功能:完成算术运算和逻辑运算。
- 采用二进制的原因:
- 容易实现
- 运算规律简单
- 抗干扰能力强,可靠性高
- 为实现逻辑运算和逻辑判断提供了便利
# 存储器(Memory)
- 功能:存储程序和数据,是计算机的主要组成部分。
- 分类:
- 按存储介质分类:半导体存储器、磁存储器、光存储器
- 按存取方式分类:随机存储器(RAM)、只读存储器(ROM)、直接存储器(DMA)
- 按存储容量分类:主存储器、辅助存储器
# 控制器(Control Unit)
- 任务:从内存中取出解题步骤加以分析,然后执行某种操作。
- 计算程序:解决某一问题的一串指令序列称为该问题的计算程序。
- 指令形式 :一条指令必须明确指示出从哪个单元中取数,并进行何种性质的操作;即指令由操作码和地址码组成,分别指出操作的性质和操作数的地址。
- 控制器的基本任务:按照程序所排的指令序列,先从存储器中取出一条指令放到控制器中,对该指令的操作码由译码器进行分析判别,然后根据指令的性质,执行该指令,进行相应的操作;接着取出第二条指令,再执行第二条指令,依此类推。
- 指令流(Instruction Stream)和数据流(Data Stream):
# 适配器(adapter)和输入输出设备(I/O)
- 适配器:相当于一个转换器,保证外围设备用计算机系统特性所要求的形式收发信息。
常见有:网络适配器、显卡适配器等
# 总线(Bus)
- 是构成计算机系统的骨架,是多个系统部件之间进行数据传送的公共通路
# 冯。诺依曼结构计算机
- 存储程序控制:要求计算机完成的功能,需要事先编制成相应的程序,并输入到存储器中,在控制器的控制下,有条不紊地工作。
- 程序和数据都用二进制表示。
- 程序由指令序列构成,任何一条指令都包含操作码和地址码。
- 全机以 CPU 为中心,输入的信息在 CPU 控制下才能写入主存储器,输出的信息也只有在 CPU 控制下才能从主存储器中取出送至相应的输出设备。
# 计算机软件
- 机器语言:使用 1 和 0 编制。计算机直接可以识别和执行。缺点:要熟悉指令系统、繁杂、容易出错、不易调试、只有专家使用。
- 汇编语言:对机器指令采用助记符表示,能够用符号语言编写。简单直观、便于记忆。不能为计算机识别,使用汇编程序,把符号语言编写的程序翻译为机器代码。
- 高级语言:按照实际需求规定一套基本符号以及由基本符号构成程序的规则。更加接近自然语言,直观通用、与具体机器无关。
- 编译程序:把整个源程序翻译为机器代码或汇编代码的程序,它和运行系统一起组成编译系统。
- 解释程序:对源程序逐行解释并立即执行的程序。
- 操作系统:管理整个系统的软硬件资源,提高资源使用率,方便用户对计算机的使用。
- 数据库管理系统:数据存储、处理、传输、查询、共享的管理程序
# 计算机系统的层次结构
- 微程序设计级 -> 一般机器级 -> 操作系统级 -> 汇编语言级 -> 高级语言级
# 运算方法和运算器
# 数据与文字的表示方法
# 数据格式
# 定点数的表示方法
- 小数点的位置固定,通常有纯小数和纯整数两种。
# 浮点数的表示方法
- 对于任意进制数 N 可表示:(科学计数法),其中 m 是浮点数的尾数 (纯小数、有效数字位数,精度), e 称为指数,为阶码 (纯整数,小数点位置,范围) ,比例因子 R 为基数。在计算机中常为 2、8、16。
- 浮点数规格化表示 (尾数): 绝对值为 >=0.5 (0 除外)。形式为:0.1…,最高位 1 视为隐藏在小数点左侧,提高数据表示精度。
- 指数表示:采用移码方式(加上一个固定的偏移值)。一个规格化的 32 位浮点数 x 的真值为:
- 机器零:当一个浮点的尾数为 0,不论阶码为何值;或当阶码的值比阶码的最小值还小,不论尾数为何值,视为机器零
# 十进制数串的表示方法
- 字符串的形式:一个字节存放一个十进制的数位或符号位。为了指明这样一个数,需要给出该数在主存中的起始地址和位数 (串的长度)。主要用于非数值计算。
- 压缩的十进制数串形式:一个字节存放两个十进制的数位。既节省存储空间,又便于直接完成算术运算,是广泛采用的较为理想的方法。
# 数的机器码表示
# 原码表示法
- 定点小数原码定义:若,则
- 定点整数原码定义:若,则
- 浮点数原码定义:阶码部分按照定点整数的方法进行编码,尾数部分按照定点小数的方法进行编码
# 补码表示法
- 定点小数补码定义:若,则
- 定点整数补码定义:若,则
- 补码的表示范围
- n+1 位补码小数的表示范围:
- n+1 位补码整数的表示范围:
- 浮点数补码定义:阶码部分按照定点整数的方法进行编码,尾数部分按照定点小数的方法进行编码
- 已知,求的方法:
- 对于正数:
- 对于负数:
- 已知,求,的方法:对 [x] 补连同符号位一起右移一位或二位,左边补一位或二位与原符号位相同的位。
- 已知,求, 的方法:对连同符号位一起左移一位或二位,右边补一位或二位 “0”
# 反码表示法
- 定点小数反码定义:若,则
- 定点整数反码定义:若,则
- 浮点数反码定义:阶码部分按照定点整数的方法进行编码,尾数部分按照定点小数的方法进行编码
# 移码表示法
- 设,则
# 字符和字符串的编码
# 汉字的编码表示
- 输入编码:数字编码、拼音码、字型编码等
- 机内编码:一般用两个字节来实现
- 输出编码:字模码
# 校验码
- 奇偶校验码:在每个字符的最高位加一个奇偶校验位,使得每个字符的 1 的个数为奇数或偶数。
- 循环冗余校验码:在每个字符的最高位加一个校验位,使得每个字符的 1 的个数为奇数或偶数。
- 海明码:在每个字符的最高位加一个校验位,使得每个字符的 1 的个数为奇数或偶数。
# 定点加减法
# 定点补码加减法
- 加法:
- 减法:
# 溢出概念与检测方法
# 溢出
- 上溢:两个正数相加,结果大于机器所能表示的最大正数
- 下溢:两个负数相加,结果小于机器所能表示的最小负数
# 检测方法
- 双符号位检测法:溢出表达式
- 溢出表达式:
- 不论溢出与否,最高符号位始终指示正确的符号 - 单符号位检测法:溢出表达式
- 溢出表达式:
- 当运算中,最高有效位有进位而符号位无进位,称为上溢;最高有效位无进位而符号位有进位,称为下溢
# 定点乘法
# 原码并行乘法
# 不带符号的阵列乘法器
- 首先用 “与” 门,产生 个被加数 ,其中 和 ;再用阵列全加器,快速相加,实现乘法。
- 实现 n 位乘 n 位时,需要 个全加器(FA)和 个 “与” 门
# 带符号的阵列乘法器
- 带符号的阵列乘法器仍然以不带符号的阵列乘法器为基础;使用两个算前求补器,运算前把操作数变为正整数,而算后求补器则是:当两个输入操作数的符号不一致时,把运算结果变换成带符号的数。
# 定点除法
# 原码除法
- 不恢复余数法(加减交替法)
- 若, 则商 “1”,下次做
- 若,则商为 “0”,下次做
# 并行除法器
- 可控加法 / 减法(CAS)单元
# 定点运算器的组成
# 逻辑运算
# 多功能算术 / 逻辑运算单元
# 先行进位发生器(CLA)
# 内部总线
- 根据总线所处的位置,总线分为内部总线和外部总线
- 按照总线的逻辑结构,总线分为单向、双向传输总线
# 定点运算器的基本结构
- 运算器包括:ALU、阵列乘除器、寄存器、多路开关、三态缓冲器、数据总线等
- 单总线结构的运算器:所有的部件都连接到同一总线上。所有的数据传输都是采用分时方式。
- 双总线结构的运算器:两个操作数同时加到 ALU 进行运算,只需要一次操作控制,而且马上可以得到运算结果。
- 三总线结构的运算器:ALU 的两个输入端分别由两条总线供给,而 ALU 的输出则与第三条总线相连,因此,算术逻辑操作可以在一步的控制之内完成。
# 浮点运算方法和浮点运算器
# 浮点数的加减法
# 对阶
- 先求两数阶码 和 之差,即
- 对阶原则:阶码小的数向阶码大的数对齐;小阶的尾数右移 位
# 尾数求和运算
- 尾数求和方法与定点加减法运算完全一样
# 规格化
- 定义:
- 正数:
- 负数:
- 向左规格化:左移一位,阶码减 1
- 向右规格化:两符号位不等,即结果的绝对值大于 1。此时,将尾数运算的结果右移一位,阶码加 1
# 舍入
- “0 舍 1 入” 法:如果右移时被丢掉数位的最高位为 0 则舍去,反之则将尾数的末位加 “1”
- “恒置 1” 法:只要数位被移掉,就在尾数的末位恒置 “1”
# 溢出处理
- 浮点数的溢出是以其阶码溢出表现出来的
- 阶码上溢 —— 超过了阶码可能表示的最大值的正指数值,一般将其认为是+∞和-∞。
- 阶码下溢 —— 超过了阶码可能表示的最小值的负指数值,一般将其认为是 0。
- 尾数上溢:两个同符号尾数相加产生了最高位向上的进位,进行 “右规”
- 尾数下溢:在尾数右移时,最低有效位从右端流出,要进行舍入处理
# 浮点乘、除法运算
# 浮点乘法
- 阶码相加
- 尾数相乘
- 规格化:当 Mx 和 My 都不为 0 时,相乘后结果一定在下列范围内:
- 时,尾数已经是规格化数。
- 时,需要左规一次
# 浮点除法
- 尾数调整:为保证商的尾数是一个定点小数,首先需要检测,如果不小于,则 需要右移一位,由于 x 和 y 都是规格化的数,最多调整一次。
- 阶码相减
- 尾数相除
# 浮点运算流水线
- K 级线性流水线的加速比:
- 建立时间:在流水线开始时有一段流水线填入时间,使得流水线填满。
- 正常流动时间:流水线正常工作,各功能段源源不断满载工作。
- 排空时间:在流水线第一条指令结束时,其他指令还需要一段释放时间。
# 多层次的存储器
# 存储器概述
# 存储器的分类
- 按存储介质分类:半导体存储器、磁存储器、光存储器
- 按存取方式分类:随机存储器、顺序 / 半顺序存储器
- 按读写功能分类:只读存储器、读写存储器
- 按信息可保存性分类:非永久性存储器、永久性存储器
- 按系统作用分类:主 / 辅助存储器、高速缓冲 / 控制存储器
# 存储器的分级结构
- 存储器的分级结构:高速缓冲存储器、主存储器、外存储器
- TTL 存取速度快,集成度较低,功耗较大,成本较高,适于 cache。
- MOS 集成度高,功耗较低,价格便宜,适于主存。
- 主存储器:简称 “主存”,由 MOS 半导体存储器组成,存放处于活动状态的程序和有关数据。包括 OS 的常驻部分和当前在运行的程序和要处理的数据。容量在几百 KB 到几百 MB,存取时间为几十到几百 ns。
- 外存储器:简称 “外存”,大容量辅助存储器;磁表面存储器或光盘存储器;存放需联机保存但暂时不需要的程序和数据。容量从几十 MB 到几百 GB,甚至更大。存取速度为若干 ms。
- 其他功能的存储器:如微程序控制器的控存、在显示和印刷输出设备中的字库和数据缓冲存储器。
# 主存储器的技术指标
- 存储容量:存储器中可容纳的存储单元总数;单位:B (Byte), KB, MB, GB, TB, PB
- 存取时间:又称访问时间,从启动一次存储器操作到完成该操作所经历的时间。
- 存储周期:连续两次启动同一存储器操作需要的最小时间间隔。
- 存储器带宽:单位时间存储器所存取的信息量;度量单位:位 / 秒、字节 / 秒;
- 可靠性:在规定的时间内,存储器无故障的概率。用平均无故障时间 MTBF
- 功耗与集成度:耗电的多少;单个芯片存储容量;
- 性能 / 价格比:衡量存储器经济性能好坏的综合性指标。性能包括前述的各项指标。
# SRAM 存储器
# SRAM 存储器的组成
- 存储体
- 地址译码器:把用二进制代码表示的地址转换成输出端的高电位,用来驱动相应的读写电路,以便选择所要访问的存储单元。地址译码器的输入信息来自 CPU 的地址寄存器(AR)
- 单译码结构:地址译码器只有一个,译码器输出为字选线
- 双译码结构:两个地址译码器,可减少选择线条数
- 驱动器:一条 X 选择线要控制挂其上所有存储元电路,其所带的电容负载很大,为此需加驱动器。
- I/O 电路:处于数据总线和被选用的单元之间,用于控制被选中的单元读出或写入,并具有放大信息作用。
- 片选与读 / 写控制电路:当需要大容量的存储器时,需把存储器芯片按照一定方式连接而成。在地址选择时,首先要选片,此片所连接的地址线才有效。通常用地址译码器的输出和一些控制信号来形成片选信息。
# 存储器的读写周期
- 读周期:读周期与读出时间是两个不同的概念。读出时间是从给出有效地址到外部数据总线上稳定地出现所读出的数据信息所经历的时间。读周期时间则是存储片进行两次连续读操作时所必须间隔的时间,它总是大于或等于读出时间。
- 写周期:实现写操作,要求 和 同时有效,有效期间地址和数据信号不能变化;为了保证 和 变为无效前能把数据可靠的写入,数据必须提前一段时间在数据总线上稳定存在;而在 变为高电平后再经过一段时间地址信号才允许改变。
# 存储器与 CPU 连接
# 存储容量扩充的方法
- 位扩展法:只加大字长,而存储器的字数与存储器芯片字数一致,即字变长,字数不变。数据线条数增加,地址线条数不变。
- 字扩展法:字数变多,字长不变,地址线增加,数据线不变; 芯片的地址线、数据线、读写控制线并联,由片选信号区分各片地址。
- 字位同时扩展法:需要容量 存储器,使用的芯片为,则需要芯片个数为
# 地址分配与片选逻辑
- 存储器寻址逻辑
- 芯片内的寻址系统 (二级译码)
- 芯片外的地址分配与片选逻辑
# 连接方式
- 扩展位数
- 扩展单元数
- 连接控制线
# DRAM 存储器
# DRAM 芯片的逻辑结构
- 增加了行地址锁存器和列地址锁存器。由于 DRAM 存储器容量很大,地址线宽度相应要增加,这势必增加芯片地址线的管脚数目。为避免这种情况,采取的办法是分时传送地址码。若地址总线宽度为 10 位,先传送地址码 A0~A9,由行选通信号 打入到行地址锁存器;然后传送地址码 A10~A19,由列选通信号 打入到列地址锁存器。芯片内部两部分合起来,地址线宽度达 20 位,存储容量为 1M×4 位。
- 增加了刷新计数器和相应的控制电路。DRAM 读出后必须刷新,而未读写的存储元也要定期刷新,而且要按行刷新,所以刷新计数器的长度等于行地址锁存器。刷新操作与读 / 写操作是交替进行的,所以通过 2 选 1 多路开关来提供刷新行地址或正常读 / 写的行地址。
# DRAM 的读 / 写周期
# DRAM 的刷新
- 刷新周期:从上一次对整个存储器刷新结束到下一次对整个存储器全部刷新一遍为止,这一段时间间隔称为~。
- 集中刷新方式:把刷新间隔分为两部分,前一部分进行读 / 写周期或维持周期,后一部分只进行刷新操作。因为刷新时期不能进行读写操作,称为死时间。本方式适用于高速存储器。
- 分散刷新方式:
- 各刷新周期分散安排在 2ms 内
- 每隔一段时间刷新一行
# 高级的 DRAM 结构
- FPM-DRAM:快速页模式动态存储器,它是根据程序的局部性原理来实现的。读周期和写周期中,为了寻找一个确定的存储单元地址,首先由低电平的行选通信号 确定行地址,然后由低电平的列选信号 确定列地址。下一次寻找操作,也是由 选定行地址, 选定列地址,依此类推。快速页模式允许在选定的行中对每一个列地址进行连续快速的读操作或写操作。
- CDRAM(Enhanced DRAM)芯片:在 DRAM 芯片上集成一个 SRAM 实现的小容量高速缓冲器,以改善芯片性能
# DRAM 主存读 / 写的正确性校验
- DRAM 通常用做主存储器,其读写操作的正确性与可靠性至关重要。为此除了正常的数据位宽度,还增加了附加位,用于读 / 写操作正确性校验。增加的附加位也要同数据位一起写入 DRAM 中保存。
# 只读存储器和闪速存储器
# 只读存储器(Read Only Memory)
# 掩模 ROM
# 可编程 ROM
- EPROM
- EPROM
# FLASH 存储器(Flash Memory)
# FLASH 存储器的基本操作
- 编程操作:所有存储元的原始状态均为 “1”,要写 0,就在控制栅上加正电压,为浮空栅补充电子;
- 读取操作:当 MOS 晶体管导通时,电源 VD 提供从漏极 D 到源极 S 的电流,读出电路检测到电流则表示 “1”,无电流,表示 “0”;
- 擦除操作:采用电擦除,在源极加上正电压。
# 并行存储器
# 双端口存储器 DPRAM (Dual-Port RAM)
- 同一个存储器具有两组相互独立的读写控制线路。
- 当两个端口的地址不同时,在两个端口上进行读写操作,一定不会发生冲突。
- 当两个端口同时存取同一存储单元时,便发生读写冲突,为此设置 标志。由存储器的仲裁逻辑决定对哪个端口优先进行读写操作,而对另一个被延迟的端口置 标志,即暂时关闭此端口。
# 多模块交叉存储器
# 存储器的模块化组织
- 顺序方式:
- 优点:某个模块出现故障时,不影响其他模块工作;存储器的容量扩充比较方便
- 缺点:各个模块串行工作,存储器的带宽受到限制
- 交叉方式:连续地址分布在相邻不同模块内,而同一个模块内的地址不连续
- 优点:对连续字的成块传送,容易实现多模块流水式的并行存取,能大大提高存储器带宽
- 缺点:某个模块出现故障时,会影响其他模块工作;存储器的容量扩充比较困难
# 多模块交叉存储器的基本结构
- 四个模块都有自己的读写控制电路、地址寄存器和数据寄存器,各自以等同的方式与 CPU 传送信息
- CPU 同时访问四个模块,由存储器控制部件控制它们分时使用数据总线。对于一个存储模块,从 CPU 给出访存命令直到读出信息仍然使用一个存储周期,而对于 CPU 来说,可以在一个存取周期内连续访问四个模块,各个模块的读写过程将重叠进行,使存储器成为并行存储器结构。
# 定量分析
- 设模块字长等于数据总线宽度,模块存取一个字的存储周期为 T,总线传送周期为 τ,存储器的交叉模块数为 m,为了实现流水线方式存取,应满足:( 为交叉存取度),交叉存储器要求其模块数必须大于或等于 m,以保证启动某模块后经 mτ 时间再次启动该模块时,它的上次存取操作已经完成。
- 以交叉方式连续读取 n 个字所需的时间为:
- 而顺序方式存储器连续读取 n 个字所需时间为:
# cache 存储器
# cache 的基本原理
- CPU 与 cache 间的数据交换是以字为单位
- cache 与主存间的数据交换是以块为单位
- 当 CPU 读取主存的一个字时,便发送字的内存地址给 cache 和主存,此时 cache 的控制逻辑依据地址判断此字当前是否在 cache 中:若是,则此字立即传送给 CPU,若非,则用主存读周期把此字从主存中读出送到 CPU,同时将含有这个字的整个数据块从主存读出送到 cache 中
# 相联存储器(CAM)
- 定义:按内容寻址的存储器 CAM(Content Addressed Memory)亦称相联存储器,除按地址随机读写外,还有比较功能,可按信息内容寻址,存储器查询速度快。
- 特点:根据任一存储项内容作为地址来进行存取。用来寻址存储器的字段叫做关键字(键)。
# cache 的命中率
- 设在一段程序执行期间,cache 完成存取次数为,主存完成存取次数为,h 定义为命中率,则有:
- 平均访问时间:
- 访问效率:
- :命中时 cache 的访问时间
- :未命中时主存的访问时间
- :主存慢于 cache 的倍率
# 主存与 cache 的地址映射
# 全相联方式
- 全相联的地址映射规则:
- 主存与缓存分成相同大小的数据块。
- 主存的某一数据块可以装入缓存的任意一块的空间中。
- 转换公式
- 主存地址长度=(s+w) 位
- 寻址单元数= 个字或字节
- 块大小=行大小= 个字或字节
- 主存的块数=
- 标记大小=s 位
- cache 的行数=不由地址格式确定
- 特点:
- 优点:冲突概率小,Cache 的利用高。
- 缺点:比较器难实现,需要一个访问速度很快代价高的相联存储器
- 适用于小容量的 Cache
# 直接相联方式
-
直接相联的地址映射规则
- 主存第 块内容拷贝到 Cache 的 行
- i = j mod m
- m = n =
-
转换公式
- 主存地址长度=(s+w) 位
- 寻址单元数= 个字或字节
- 块大小=行大小= 个字或字节
- 主存的块数=
- cache 的行数=m=
- 标记大小=(s-r) 位
-
特点:
- 优点:硬件实现很简单,不需要相联访问存储器;访问速度也比较快,实际上不进行地址变换
- 缺点:块的冲突率比较高
-
适用于大容量的 Cache
# 组相联映射方式
- 组相联的映象规则
- 将 cache 分成 u 组,每组 v 行,
- 主存块存放在哪个组是固定的,存到该组哪一行是灵活的,组号
- 组间采用直接相联方式,组内采用全相联方式
- 转换公式
- 主存地址长度=(s+w) 位
- 寻址单元数= 个字或字节
- 块大小=行大小= 个字或字节
- cache 的组数=u=
- 标记大小=(s-d) 位
# cache 的替换算法
# 最不经常使用算法 LFU(Least Frequently Used)
- 将一段时间内被访问次数最少的那行数据换出。
- 每行设置一个计数器,新行从 0 开始计数,每访问一次,计数器增 1;替换时,把计数值最小的行换出,同时将这些特定行的计数器清零。
- 缺点:计数周期是特定行两次替换之间的间隔,不能严格反映近期访问的情况。
# 近期最少使用算法 LRU(Least Recently Used)
- 将近期内长久未被访问过的行换出。
- 每行设置一个计数器,每命中一次,命中行计数器清零,其它各行计数器增 1;替换时,将计数值最大的行换出。保护了刚拷贝到 cache 的新数据行。
# 随机替换
- 从特定的行位置中随机(Random)地选出一行换出即可。
- 优点:硬件上容易实现,速度快。
- 缺点:可能刚替换出的行马上又要使用,命中率低。
# cache 的写操作策略
# 写回法
- 当写 cache 命中时,只修改 cache 的内容,而不立即写入主存;当写 cache 未命中时,把此块替换到 cache 中修改;写主存统一留到此行被换出时进行。
- 实现:每行设置一个修改位,标示是否被修改过。
- 本方式可明显减少写主存次数,提高存取速度,但存在不一致性的隐患。
# 全写法
- 当写 cache 命中时,cache 和主存同时写修改;当写 cache 未命中时,直接写入主存。但是否把修改过的主存块取到 cache 中,有两种选择:一是取主存块到 cache 并为它分配一行位置;另一是不取主存块到 cache。
- 特点:cache 和主存的内容一致,且不需设置修改位和判断逻辑,但写操作没有高速缓冲功能,效率低。
# 写一次法
- 写 cache 命中与未命中时和写回法基本相同,只是在第一次写命中时要同时写入主存。因第一次写 cache 命中时要启动一个存储写周期。
# 指令系统
# 指令系统的发展与性能要求
# 复杂指令集计算机(CISC)
- CISC 是通过减少 值来减少 的
- CISC 的主要特点:
- 指令系统复杂,表现在:指令数多,一般大于 100 条;寻址方式多,一般大于 4 种;指令格式多,一般大于 4 种
- 绝大多数指令需要多个机器时钟周期方可完成
- 各种指令都可访问存储器
- 采用微程序控制
- 有专用寄存器
- 难以用优化编译生成高效的目标代码程序
# 精简指令集计算机(RISC)
- RISC 是通过减少 值,简化结构来减少 的
- RISC 的主要特点:
- 精简指令系统:指令条数少,一般小于 100 条,基本寻址方式少,一般 23 种,指令格式少,一般 23 种,指令长度一致 (32 位)
- 以寄存器 - 寄存器方式工作,除了 Load/Store 指令访问存储器外,其余指令只访问寄存器
- 除了 Load/Store 指令访问存储器外,所有指令在一个机器时钟周期完成,并采用流水线技术
- 使用较多的通用寄存器,一般至少 32 个,不允许有专用寄存器
- 大多采用硬联线控制,少用或不用微程序实现
# 指令格式
# 指令字长度
- 指令的长度是指一条指令所包含二进制代码的位数,取决于操作码长度和操作数地址个数及每个地址的长度。
- 机器字长:计算机能直接处理的二进制数据的位数。
# 操作码
- 作用:指定指令是执行什么性质的操作。不同的指令用操作码字段的不同编码表示。
- 定长编码:便于译码,扩展性差
- 变长编码:能缩短指令平均长度
# 地址码
- 作用:常用于指定参与操作的操作数地址。
- 根据指令中操作数地址的个数,将指令划分为:
- 零地址指令:指令中只有操作码,没有地址码。
- 一地址指令:单操作数指令。该指令常以 AC 中数作为被操作数,指令中地址码字段所指明的数为操作数,操作结果又放回 AC:(AC) OP (A) -> AC
- 二地址指令:双操作数指令,两地址指明被操作数和操作数地址,其中 A1 兼做结果地址:(A1) OP (A2) -> (A1)
- 三地址指令:三个地址分别指明被操作数、操作数以及结果存放地址:(A1) OP (A2) -> (A3)
# 操作数类型
- 地址数据:地址实际上也是一种形式的数据。
- 数值数据:计算机中普遍使用的三种类型的数值数据。
- 字符数据:文本数据或字符串,目前广泛使用 ASCII 码。
- 逻辑数据:一个单元中由几位二进制 bit 项组成,每个 bit 的值可以是 1 或 0。当数据以这种方式看待时,称为逻辑型数据。
# 指令和数据的寻址方式
# 指令的寻址方式
# 顺序寻址方式
- 程序指令按顺序存放在内存中,执行时按顺序从内存中取出所要执行的指令。
- 程序计数器(指令指针寄存器,指令计数器)PC(Program Counter)存放正在执行的指令地址(要执行的下一指令地址)。
# 跳跃寻址方式
- 程序要执行的下条指令地址不是由 PC 给出,而是由本指令的地址码给出。
- 用途:实现程序转移或构成循环程序。
# 操作数寻址方式
# 隐含寻址(Implied Addressing)
- 不明显指定操作数的地址,而是在指令中隐含着操作数的地址。比如单地址指令格式的第二操作数由 AC 隐含指定。
# 立即寻址(Immediate Addressing)
- 特点:地址字段指出的不是操作数地址,而是操作数本身。
- 优点:无需访问内存,指令的执行时间很短。
- 缺点:操作数的范围受限。
- 适用范围:用于操作数固定的指令中,主要用于给寄存器或存储器赋初值。
# 直接寻址(Direct Addressing)
- 特点:地址字段直接指出操作数在内存中地址。
- 优点:简单。
- 缺点:寻址空间受限。
# 间接寻址(Indirect Addressing)
- 特点:地址字段中的 D 是操作数地址的指针
- 优点:寻址空间大。
- 缺点:需多次访问主存。
- 说明:两次访存影响执行速度,现已不大使用。
# 寄存器寻址(Register Addressing)和寄存器间接寻址(Register Indirect Addressing)
- 寄存器寻址方式:寄存器中存放的是操作数。
- 寄存器间接寻址方式:寄存器中存放的不是操作数,而是操作数在内存中的地址。
- 区别:
- 寄存器中前者存的是操作数,后者是操作数地址。
- 前者不需要访问内存,速度相对快;寻址空间小;后者需要访问内存,速度相对慢;寻址空间大。
- 联系:地址字段中给出的都是寄存器的编号。
# 相对寻址方式(Relative Addressing)
- 特点:把 PC 的内容加上指令格式中形式地址 D 而形成操作数的有效地址 E。
# 基址寻址方式(Base-Register Addressing)
- 特点:把基址寄存器的内容加上指令格式中 D 而形成操作数的 E。
- 用途:可用于扩大寻址能力。
# 变址寻址方式(Index Addressing)
- 特点:把某个变址寄存器的内容加上指令格式中 D 而形成操作数的 E。
- 用途:用于实现程序块的有规律变化。
# 块寻址方式(Block Addressing)
- 用途:用在 I/O 指令中,以实现外存储器或外围设备同内存之间的数据块传送,还适用于内存的数据块搬家。
- 指定数据块长度的三种方法:
- 指令中划出字段指出长度;
- 指令中指出数据块的首尾地址;
- 由块结束字符指出数据块的长度。
# 段寻址方式(Segment Addressing)
- 方法:E 由段寄存器的内容加上段内偏移地址而形成。
- 应用:微型机采用段寻址方式,20 位物理地址为 16 位段地址左移四位加上 16 位偏移量。
- 分类:
- 段内直接寻址;
- 段内间接寻址;
- 段间直接寻址;
- 段间间接寻址;
# 堆栈寻址方式
- 堆栈:是一组能存入和取出数据的暂时存储单元。
- 区别:对数据的存取方法或寻址方式不同。
- 分类:串联堆栈和存储器堆栈。
- 串联堆栈(硬堆栈,下压堆栈):由 CPU 中的一组专门寄存器组成,容量有限、读出具有破坏性;
- 存储器堆栈(软堆栈):在主存储器中划分出一部分区域来作为堆栈。容量可任意、可同时建立多个堆栈、可用对存储器寻址的任一指令来对堆栈中数据寻址
# 典型指令
# 指令的分类
- 数据传送指令:主要用于主存和寄存器、寄存器和寄存器之间的数据传送。主要有:取数、存数、传送、成组传送、字节交换、清除累加器和堆栈操作指令等。
- 算术运算指令:主要用于定点或浮点的算术运算、向量运算。主要有:二进制定点加、减、乘、除指令;浮点加、减、乘、除指令,求反、求补、算术移位指令。
- 逻辑运算指令:主要用于无符号数的位操作、代码转换、判断及运算。主要有:逻辑加、乘、异或、移位等。
- 程序控制指令:转移指令一般分为:条件转移、无条件转移、转子程序、返回主程序、中断返回指令等。条件转移的条件有进位标志位 (C)、结果为零标志 (Z) 、负标志 (N) 、溢出标志 (V) 和奇偶标志 (P) 等。
- 输入输出指令:主要用来启动外围设备,检查测试外围设备的工作状态,并实现外围设备和 CPU 之间、外围设备与外围设备之间的信息传送。
- 字符串处理指令:常用在文字编辑中对字符串进行处理。包括:字符串传送、转换、比较、查找、抽取和替换等。
- 特权指令:是具有特殊权限的指令,只用于操作系统或其他系统软件,一般不直接提供用户使用。主要用于系统资源的分配和管理:改变系统工作方式,检测用户的访问权限、修改虚拟存储器管理的段表、页表,完成任务的创建和切换。
- 其他指令:状态寄存器置位、复位、测试、暂停、空操作,以及其它系统控制用的特殊指令。
# 中央处理器
# CPU 的功能
- 指令控制:程序的顺序控制。
- 操作控制:管理并产生每条指令的操作信号,并把它们送到相应部件,控制这些部件按要求进行动作。
- 时间控制:对各种操作实施时间上的定时。
- 数据加工:对数据进行算术和逻辑运算处理。
# CPU 的基本组成
# 运算器
- 由 ALU、AC、DR 和 PSW 组成;是数据加工处理部件;在控制器的指挥下运行。
- 运算器的主要功能:
- 执行算术运算;
- 执行逻辑运算,并进行逻辑测试。
- 定点运算器的结构:
- 单总线结构的运算器
- 双总线结构的运算器
- 三总线结构的运算器
# 控制器
- 组成:PC、指令寄存器(IR) 、指令译码器(ID)、时序产生器和操作控制器;
- 作用: “决策机构” ,协调和指挥整个系统的操作。
- 功能:
- 取指令,并指出下一条指令的位置。
- 对指令译码或测试,产生相应操作控制信号,以启动规定的动作。
- 指挥并控制 CPU、内存和 I/O 设备之间数据流动的方向。
# 操作控制器(微命令发生器)
- 组合逻辑型:常规控制器或硬布线控制器,采用组合逻辑技术实现。
- 优点:速度快;
- 缺点:设计、调试、维修困难,难实现设计自动化。
- 存储逻辑型:微程序控制器,采用存储逻辑来实现,即微操作信号代码化,使得每条指令转化为一段微程序并存入一个专门的存储器中。
- 优点:设计规整,调试、维修以及更改、扩充指令方便,易于设计自动化。
- 缺点:指令执行速度比组合逻辑型慢。
# 指令计数器 PC
- 功能:指示指令在 M 中的位置
- 顺序执行:PC+1
- 转移执行:PC 先加 1,再加上转移地址
# 指令寄存器 IR
- 功能:存放当前指令的操作码和地址码
# 状态寄存器 PSW
- 功能:指示程序运行方式,反映程序运行结果。
# 时序线路
- 功能:控制操作时间和操作时刻。
# 指令周期
# 指令周期的基本概念
- 指令周期:取出并执行一条指令的时间。
- CPU 周期 / 机器周期(工作周期):常用从内存中读取一个指令字的最短时间来规定机器周期。
- T 周期 / 节拍脉冲 处理操作的最基本单位。
# 用方框图语言表示指令周期
- 方框:代表一个 CPU 周期,方框中的内容表示数据通路的操作或某种控制操作;
- 菱形:表示某种判别或测试,在时间上不单占一个 CPU 周期,而是依附于紧接它的前面一个方框的 CPU 周期;
- 箭头:表示 CPU 执行顺序;
~
:公操作符号,表示一条指令执行完毕后,CPU 所开始执行的一些操作 —— 如中断处理、通道处理等,其中取指令也可认为是公操作。
# 时序产生器和控制方式
# 时序信号的作用和体制
- 作用:控制操作时间和操作时刻。
- 基本体制:电位 - 脉冲制。
# 时序信号产生器
- 时钟源(主时钟):通常由石英晶体震荡器和与非门组成的正反馈振荡电路组成。
- 作用:提供频率稳定且电平匹配的方波时钟脉冲信号,为整个机器提供基准信号。
- 时钟源在机器上电后立即开始产生具有一定占空比的时钟脉冲序列,直到关电源为止,中间不允许有任何间断。
- 环形脉冲发生器(节拍信号发生器):产生一组有序的间隔相等或不等的脉冲序列,以便通过译码电路产生最后所需要的节拍脉冲。
- 节拍脉冲和读写时序译码逻辑:根据环形脉冲发生器产生的脉冲,通过与门和与非门电路产生节拍。同时和微程序控制器中产生的读 / 写 / 对内存 / 对 I/O 设备等操作信号融合,实现对内存和外设的读写操作。(时序信号还不是微操作信号,而只是协调各部件工作的同步信号)
- 启停控制逻辑:根据计算机的需要,可靠地开放和封锁脉冲,控制时序信号的发生和停止,实现对整个机器的正确启动与停止。必须保证启动时输出的第一个脉冲和停止时输出的最后一个脉冲都是完整的脉冲。
# 控制方式
# 同步控制方式 (固定时序控制方式)
- 已定的指令在执行时所需的机器周期和时钟周期数都是固定不变的。
- 采用完全统一的机器周期执行各种不同的指令;一刀切
- 采用不定长机器周期;
- 中央控制与局部控制相结合。
- 特点:有明显时序划分,时钟周期固定,各步操作的衔接、各部件之间的数据传送受严格同步定时控制。
- 优点:时序关系简单,时序划分规整,控制不复杂;控制逻辑易于集中,容易实现,便于管理。
- 缺点:时间安排不合理,会造成简单指令较多的空闲时间,影响指令执行速度,不利于发挥计算机高速运算的潜力。
- 应用场合:用于 CPU 和设备内部、系统总线操作 (各挂接部件速度相近,传送时间确定,传送距离较近)。
# 异步控制方式(可变时序控制方式)
- 各项操作按需安排时间,不受统一时序控制
- 特点:无统一时钟周期划分,各操作间的衔接和各部件之间的信息交换采用异步应答方式。
- 优点:时间安排紧凑、合理、效率高;
- 缺点:控制复杂,不容易实现。
- 应用场合:用于异步总线操作 (各挂接部件速度差异大,传送时间不确定,传送距离较远)。
# 联合控制方式
- 大部分操作安排在固定的机器周期中,对某些时间难以确定的操作则以执行部件的 “回答” 信号作为本次操作的结束。
- 特点:同步方式引入异步应答。
- 优点:不浪费很多时间,控制上又不是很复杂。
# 微程序控制器
# 基本术语
- 微操作:一条指令的功能是通过执行一系列操作控制步完成的;这些控制步中的基本操作称为微操作。
- 微命令:微命令是微操作的控制信号,而微操作是微命令的操作内容。
- 微指令:可以同时执行的一组微命令组成一条微指令,完成一个基本运算或传送功能。也将微指令称作控制字(CW),其中每一位代表一个微命令。
- 微程序:完成指定任务的微指令序列称为微程序。一条机器指令其功能可由一段微程序解释完成。
- 微地址:微指令在控制存储器中的单元地址
# 组成原理
# 主要部件
# 控制存储器 CM
- 功能:存放微程序,是微程序控制器的核心部件。
- CM 属于 CPU,不属于主存储器
# 微指令寄存器 µIR
- 功能:存放当前微指令的内容。
- 微命令字段:提供一步操作所需的微命令。
- 微地址字段:
- 指明后续微地址的形成方式
- 提供微地址的给定部分
# 微地址形成电路
- 功能:提供两类微地址
- 微程序入口地址:由机器指令操作码形成。
- 后续微地址:由微地址字段、现行微地址、运行状态等形成
# 工作过程
- 取机器指令:
- 转微程序入口:
- 执行首条微指令:
- 取后续微指令:
- 执行后续微指令:同 3.
- 返回(微程序执行完,返回 CM(存放取指微指令的固定单元))
# 微指令
- 操作控制部分:又称 “微操作码字段”,用来发出管理和指挥全机工作的控制信号,其中每一位都表示一个微命令。
- 顺序控制部分:又称 “微地址码字段”,用来决定产生下一条微指令的地址
# 总结:
- 微程序控制器的工作过程实质就是:在微程序控制器的控制下,计算机执行机器指令的过程。具体可分为:
- 执行取指令的公操作机器开始运行时,自动地将取指微程序的入口微地址送入 µAR,并从 CM 中读出微指令,送往 µIR,当取指微程序执行完以后,从主存中取出的机器指令就已经存入 IR 中了。
- 由机器指令的操作码字段 OP 通过 “地址转移逻辑” 产生出该机器指令所对应的微程序的入口微地址,并送入 µAR。
- 从 CM 中逐条取出相应的微指令并执行。
- 执行完对应于一条机器指令的一段微程序之后,又回到取指微程序的入口地址,继续第(1)步,以完成取下一条机器指令的公操作。
# 微程序时序安排
- 为了保证整个机器控制信号的同步,可以将一个微指令周期时间设计得恰好和 CPU 周期时间相等。
# 机器指令与微指令的关系
- 一条机器指令对应一段微程序,此微程序是由若干条微指令序列组成的。
- 指令、程序、地址对应于内存储器;微指令、微程序、微地址对应于控制存储器。
- 一个 CPU 周期对应于一条微指令指令周期。方框图就是微程序流程图。
# 微程序设计技术
# 微指令格式
# 垂直型微指令
- 一条微指令定义并执行一种基本操作
- 优点:微指令短、简单、规整,便于编写微程序。
- 缺点:微程序长,执行速度慢;工作效率低。
# 水平型微指令
- 一条微指令定义并执行几种并行的基本操作
- 优点:微程序短,执行速度快。
- 缺点:微指令长,编写微程序困难。
# 混合型微指令
- 在垂直型的基础上增加一些不太复杂的并行操作
- 微指令不长,便于编写
- 微程序不长,执行速度加快
# 编码方法
# 直接编码
- 微命令按位给出
- 不需译码,产生微命令的速度快
- 信息的表示效率低
- 微指令中通常只有个别位采用直接控制法
# 分段直接编译法
- 微命令由字段编码直接给出
- 微命令分组原则:同类操作中互斥的微命令放同一字段
- 微操作分类:
- 相容性:在同时或同一 CPU 周期内可以并行执行。
- 相斥性:在同时或同一 CPU 周期内不能并行执行。
- 编码较简单
- 操作唯一
- 一条微指令能同时提供若干微命令,便于组织各种操作
# 微地址形成方式
# 增量方式
- 以顺序执行为主,辅以各种常规转移方式
- 顺序:现行微地址 + 1
- 跳步:现行微地址 + 2
- 无条件转移:现行微指令给出转移微地址
- 条件转移:现行微指令给出转移微地址和转移条件
# 多路转移方式(断定方式)
- 由直接给定和测试断定相结合形成微地址
# 流水线 CPU
# 并行处理技术
- 时间并行:时间重叠,让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度。
- 空间并行:资源重复,以 “数量取胜” 来提高计算机的处理速度。当前的空间并行主要体现在多 CPU 和多计算机系统,在单处理机系统中也得到广泛的应用。
- 时间 + 空间并行:时间重叠和资源重复的综合应用。
# 流水 CPU 的结构
# 流水计算机的系统组成
- 程序和数据存放在主存中:主存采用多体交叉存储器,CPU 与主存之间添加一个高速 cache 来弥补两者速度差异。
- 指令部件本身构成一个流水线:取指令、指令译码、计算操作数地址、取操作数等几个过程段组成;
- 指令队列:一个 FIFO 的寄存器队列,用来存放经过译码的指令和取来的数据,也是一条流水线;
- 执行部件:具有多个算术逻辑运算部件,这些部件本身又用流水线方式构成,一般采用的实现方法:
- 将执行部件分为定点执行部件和浮点执行部件两个可并行执行部分,分别处理定点运算指令和浮点运算指令;
- 在浮点执行部件中,又有浮点加法部件和浮点乘 / 除部件,它们可同时执行不同的指令;
- 浮点运算部件都以流水线方式工作。
# 流水线分类
- 指令流水线:指令步骤的并行,将指令流的处理过程划分为取指令、指令译码、取操作数、执行、写回等几个并行处理的过程段。
- 算术流水线:运算操作步骤的并行,如流水加法器、流水乘法器、流水除法器等。
- 处理机流水线:宏流水线,指程序步骤的并行;由一串级联的处理机构成流水线的各个过程段,每台处理机负责某一特定的任务。
# 流水线中主要问题
# 资源相关冲突
- 多条指令进入流水线后在同一机器时钟周期内争用同一个功能部件所发生的冲突。
- 解决方法:
- 后继指令停顿一拍后再启动。
- 增加相应资源。
# 数据相关冲突
- 有
i
和j
两条指令,i
指令在前,j
指令在后,则三种不同类型的数据相关的含义为RAW
读写(先写后读):指令j
试图在指令i
写入寄存器前就读出该寄存器内容,这样,指令j
就会错误地读出该寄存器旧的内容。WAR
写读(先读后写):指令j
试图在指令i
读出寄存器之前就写入该寄存器,这样,指令i
就错误地读得该寄存器新的内容。WAW
写写(先写后写):指令j
试图在指令i
写寄存器之前就写入该寄存器,这样,两次写的先后次序被颠倒,就会错误地使由指令i
写入的值成为该寄存器内容。
- 解决办法主要用软件和硬件技术:
- 时间推后法
- 旁路技术或相关专用通路技术:定向传递(设置若干运算结果缓冲寄存器,暂时保留运算结果,便于后续指令直接使用,称为 “向前” 或定向传送技术)
# 控制相关冲突
- 由转移指令引起。当执行转移指令时,依据转移条件的产生结果,可能为顺序取下条指令;也可能转移到目标地址取指令,从而使流水线断流。
- 解决方法:
- 延迟转移法:由编译程序重排指令序列来实现。基本思想是 “先执行再转移”;在不转移时,使延迟的时间得到有效利用。
- 转移预测法:用硬件方法实现,依据指令过去的行为来预测将来的行为。通过使用转移取和顺序取两路指令预取队列以及目标指令 cache,可将转移预测提前到取指阶段进行,以获得良好的效果。
# RISC CPU
# RISC CPU 的特点
- RISC 的三个要素是:
- 一个有限的简单的指令集;
- CPU 配备大量的通用寄存器;
- 强调对指令流水线的优化。
- 基于三要素的 RISC 机器的特征是:
- 使用等长指令,目前的典型长度是 4 个字节。
- 寻址方式少且简单,一般为 2—3 种,最多不超过 4 种,绝不出现存储器间接寻址方式。
- 只有取数指令、存数指令访问存储器。指令中最多出现 RS 型指令,绝不出现 SS 型指令。
- 指令集中的指令数目一般少于 100 种,指令格式一般少于 4 种。
- 指令功能简单,控制器多采用硬布线方式,以期更快的执行速度。
- 平均而言,所有指令的执行时间为一个处理时钟周期。
- 指令格式中用于指派整数寄存器的个数不少于 32 个,用于指派浮点数寄存器的个数不少于 16 个。
- 强调通用寄存器资源的优化使用。
- 支持指令流水并强调指令流水的优化使用。
- RISC 技术的复杂性在于它的编译程序,因此软件系统开发时间比 CISC 机器长。
# CPU 性能评价
- CPU 性能:CPU 执行程序所用的时间
- 速度评价标准:MIPS 和 MFLOPS
# 总线系统
# 总线的概念和结构形态
# 总线的概念
- 是构成计算机系统的互联机构,是多个系统功能部件(运算器、控制器、存储器、输入 / 输出设备)之间进行数据传送的公共通路。
- 由传输信息的电路和管理信息传输的协议组成。
- 总线往往是计算机数据交换的中心,总线的结构、技术和性能都直接影响着计算机系统的性能和效率。
# 总线分类
- 内部总线:CPU 内部连接各寄存器及运算部件之间的总线。
- 系统总线:CPU 同计算机系统的其他高速功能部件 (存储器、通道等) 间互相连接的总线。
- I/O 总线:中、低速 I/0 设备间互相连接的总线。
# 总线结构
# 总线通道
- 按照信号类型可分为数据总线、控制总线和地址总线。只是逻辑上的划分。
- 数据总线宽度是决定连接到总线上的设备可能获得的最大性能的决定因素之一,也是影响系统性能的关键因素之一。
- 地址总线是标明发送或接收数据的设备编号信号线。其宽度决定了总线上连接设备的能力。
- 控制总线用于控制总线设备对数据线和地址线的使用控制信号主要完成设备之间进行信息交换时的定时和命令。其中定时信号表明有效地址和数据出现在总线上的时间。命令信号定义总线上所要完成的操作。
# 总线上的设备
- 主设备能够申请总线使用权,而从设备不具有总线使用权。
# 总线接口
- 是连接功能部件和总线的桥梁,它完成功能部件的信号和总线信号之间的协调和转换,因此具有对总线和设备两个方面的工作。
# 总线连接的主要优点
- 多个部件之间采用总线连接方式,可大大降低部件间互连的复杂性,大幅度减少连线数量。
- 由于多个部件之间连接的多个控制接口变成了每个部件与总线间的一个连接接口,连接接口的器材量大幅度减少。
- 如果设备之间没有或者很少有多个部件同时进行信息交换,采用总线方式连接这些部件可有效发挥总线连接的优点。
# 总线特性
- 物理特性:总线的物理连接方式,包括总线的根数、总线的插头、插座形状、引脚线排列方式等。
- 功能特性:描述总线中每一根线的功能。
- 电气特性:定义每一根线上信号的传递方向及有效电平范围。一般规定送入 CPU 的信号叫输入信号、从 CPU 发出的信号叫输出信号。
- 时间特性:定义每根线在什么时间有效,即规定总线上各信号有效的时序关系。
# 总线的连接方式
# 单总线结构
- 特点:使用一条单一的系统总线来连接 CPU、主存和 I/O 设备。
- 要求:连到总线上的逻辑部件必须高速运行。
- 单总线系统中,对输入 / 输出设备的操作,完全和主存的操作方法一样来处理。
- 某些外围设备也可以指定地址。此时外围设备通过与 CPU 中的控制部件交换信息的方式占有总线。
# 双总线结构
- 在 CPU 和主存之间专门设置了一组高速的存储总线,使 CPU 通过专用总线与内存交换信息,减轻了系统总线负担;同时内存与外设之间仍使用系统总线实现 DMA 操作,而不必经过 CPU。
# 三总线结构
- 在双总线的基础上增加了 I/O 总线形成的。其中系统总线是 CPU、主存和通道 (IOP) 之间进行数据传送的公共通路;而 I/O 总线是多个外部设备与通道进行数据传送的公共通路。
- 通道 (Channel) 是一台具有特殊功能的处理器 (IOP),分担了一部分 CPU 的功能,以实现对外设的统一管理及外设与主存之间的数据传送,提高了 CPU 的效率,但以花费更多的硬件为代价。
# 总线结构对计算机系统性能的影响
- 最大存储容量:单总线系统中,必须为外围设备保留某些地址,最大存储容量小于由计算机地址总线宽度所决定的可能的地址总数;而双总线的存储容量不受外围设备多少的影响。
- 指令系统:双总线系统中对存储总线和系统总线必须有不同的指令系统;而在单总线系统中对内存和外设采用相同的指令,不同之处仅在于使用不同的地址。
# 总线的内部结构
- 数据传送总线:由地址线、数据线、控制线组成;为减少布线,数据线和地址线常采用多路复用方式。
- 仲裁总线:总线请求线和总线授权线。
- 中断和同步总线:用于处理带优先级的中断操作,包括中断请求线和中断认可线。
- 公用线:包括时钟信号线、电源线、地线、系统复位线以及加电或断电的时序信号线等。
# 总线接口
# 信息的传送方式
# 基本概念
- 码元:信息传输通道中,携带数据信息的信号单元。
- 波特率(码元传输率):每秒钟通过信道传输的码元数。是传输信道频宽的指标。
- 码元时间:波特率的倒数,即传输一位码元的时间。
# 串行传送
- 只用一条传输线,且采用脉冲传送。
- 在串行传送时,按照顺序来传送表示一个数码的所有二进制位的脉冲信号,每次一位。
- 当使用脉冲信号传递连续的 “1” 或 “0” 数码时,必须采用某种时序格式,以便使接收设备能加以识别,通常采用 “位时间”(即一个二进制位在传输线上占用的时间长度),一般低位在前,高位在后。
- 在串行传送时,被传送的数据需要在发送部件进行并 — 串变换,即拆卸,在接收部件进行串 — 并变换,称为装配。
# 并行传送
- 每个数据位单独占用一条传输线。这样每一条线分别代表了二进制数的不同位值。
- 一般采用电位传送。出于速度和效率上的考虑,系统总线都采用 “并行传送” 方式。
# 分时传送
- 一是采用总线复用方式,如在传输线上既传输数据又传送地址,为此必须划分时间片来实现传送任务;
- 二是共享总线的部件分时使用总线。
# 接口的基本概念
- I/O 设备适配器,广义上讲,接口指 CPU 和主存、外围设备之间通过总线进行连接的逻辑部件。接口在它动态连接的部件间起 “转换器” 的作用,以实现彼此间的信息传送。
- 接口通常具有的功能:
- 控制:靠程序的指令信息来控制外围设备的动作。
- 缓冲:作为缓冲器,用以补偿各种设备在速度上的差异。
- 状态:监视外围设备的工作状态并保存状态信息,供 CPU 询问外围设备时进行分析。
- 转换:完成任何要求的数据转换。
- 整理:完成一些特别的功能,如修改字计数器或当前 AR。
- 程序中断:外围设备向 CPU 请求某种动作时,接口即发生一个中断请求信号到 CPU。
- 适配器必须有的两个接口:
- 和系统总线的接口,其数据交换一定是并行方式;
- 和外设的接口,可能是并行或串行;
# 总线的仲裁、定时和数据传送模式
# 总线的仲裁
# 集中式仲裁
- 仲裁电路集中在一起,通常由一个模块实现。每功能模块有两条线连到中央仲裁器:一条为送往仲裁器的总线请求信号线 BR,一条是仲裁器送出的总线授权信号线 BG。
# 链式查询方式
- 特点: 共用一条总线授权线,总线授权信号 BG 串行地从一个 I/O 接口传送到下一个 I/O 接口,如果该接口没有请求,则继续往下查询;如果有总线请求,则 BG 信息不再向下查询,该接口获得总线控制权。
- 共用一个 BS 线表示当前总线是否被使用着。各设备的优先级是按照 BG 线上离中央仲裁器的远近来确定。
- 优点:只用很少几根线就能按一定优先次序实现总线仲裁,且可方便地扩充设备。
- 缺点:对询问链电路故障敏感,优先级固定而不能调整、速度慢。
# 计数器定时查询方式
- 总线上任一设备要求使用总线时,通过 BR 线发出总线请求。中央仲裁器接到请求信号以后,在 BS 线为 “0” 的情况下让计数器开始计数,计数值通过一组地址线发向设备,每个设备接口都有一个设备地址判别电路,当地址线上的计数值与请求总线的设备地址一致时,该设备置 “1” BS 线,获得总线使用权,此时中止计数查询。
- 比较:少了一条 BG 线,可改变优先次序,对电路的故障不如链式敏感,但增加了主控线数,控制较复杂。
- 优点:设备优先级可以改变,仲裁策略灵活性高。
# 独立请求方式
- 每一共享总线的设备均有一对 BR 和 BG,当设备要使用总线时,便发出总线请求信号,中央仲裁器有一个排队电路,根据一定的优先次序决定首先响应哪个设备的请求,给设备以授权信号。
- 优点:响应时间最快;对优先次序的控制相当灵活(可以预先固定、也可以通过程序来改变,还可屏蔽某个设备的总线请求)。
- 对于单 CPU 系统总线,中央仲裁器又称总线控制器,是 CPU 的一部分,而按照目前的总线标准,中央仲裁器一般是单独功能模块。
# 分布式仲裁
- 不需要中央仲裁器,每个主方都有自己的仲裁号和仲裁器;当总线申请时,把各自唯一的仲裁号发到共享的总线上,每个仲裁器把仲裁线上的号和自己的号比较,如果总线上的号大,则它的总线请求不予响应,并撤销它的仲裁号。最后,获胜的仲裁号留在仲裁总线上。
# 总线的定时
# 同步定时
- 事件出现在总线上的时刻由总线时钟信号来确定
- 优点:规定明确、统一、模块间配合简单一致。
- 缺点:主从模块时间配合属强制性同步,必须在限定时间内完成规定的要求,并且对所有模块都用同一限时,势必造成对不相同速度的部件而言,必须按最慢的速度部件来设计公共时钟,严重影响总线工作效率
- 适用范围:仅适合总线长度较短、各个功能模块存取时间比较接近的情况。
# 异步定时
- 建立在应答式或互锁机制基础之上,后一事件出现在总线上的时刻取决于前一事件的出现。
- 优点:不需要统一的公共时钟,总线周期的长度可变,不把响应时间强加到功能模块上,允许快速和慢速的功能模块都能连接到同一总线上,给设计者以充分的灵活和选择余地。
- 缺点:增加了总线的复杂性和成本。
# 总线数据传送模式
- 读、写操作:读操作是由从方到主方的数据传送;写操作是由主方到从方的数据传送。一般,主方先以一个总线周期发出命令和从方地址,经过一定的延时再开始数据传送总线周期。为了提高总线利用率,减少延时损失,主方完成寻址总线周期后可让出总线控制权,以使其他主方完成更紧迫的操作。然后再重新竞争总线,完成数据传送总线周期。
- 块传送操作:只需给出块的起始地址,然后对固定块长度的数据一个接一个地读出或写入。对于 CPU(主方)— 存储器(从方)而言的块传送,常称为猝发式传送,其块长一般固定为数据线宽度(存储器字长)的 4 倍。例如一个 64 位数据线的总线,一次猝发式传送可达 256 位。这在超标量流水中十分有用。
- 写后读、读修改写操作:这是两种组合操作。只给出地址一次(表示同一地址),或进行先写后读操作,或进行先读后写操作。前者用于校验目的,后者用于多道程序系统中对共享存储资源的保护。这两种操作和猝发式操作一样,主方掌管总线直到整个操作完成。
- 广播、广集操作:一般而言,数据传送只在一个主方和一个从方之间进行。但有的总线允许一个主方对多个从方进行写操作,这种操作称为广播。与广播相反的操作称为广集,它将选定的多个从方数据在总线上完成 AND 或 OR 操作,用以检测多个中断源。
# HOST 总线和 PCI 总线
# 多总线结构
- PCI 是一个与处理器无关的高速外围总线,是一个层间总线,采用同步时序协议和集中式仲裁策略,并具有自动配置能力。
- 系统中一般有三种总线:
- HOST 总线:有 CPU 总线、系统总线、主存总线等多种名称。不仅用来连接主存,还用来连接多个 CPU。
- PCI 总线:连接各种高速的 PCI 设备,设备可以是主、从或主从。允许有多条 PCI 总线,使用 HOST 桥和 HOST 总线相连,使用 PCI/ PCI 桥和 PCI 总线相连,用于扩充整个系统的 PCI 总线负载能力。
- LAGACY 总线:ISA、EISA、MCA 等性能较低的传统总线,支持中、低速 I/O 设备。
- 桥:用来连接两条总线,使彼此间相互通信,又是一个总线转换部件,可以把一条总线的地址空间映射到另一个总线的地址空间上,从而使系统中任意一个总线主设备都能看到同样一份地址表。
# 外围设备
# 外围设备概述
# 外围设备的一般功能
- 外围设备的定义:计算机系统中,除 CPU 和主存之外的部件都可看作外设;
- 外围设备的功能:在计算机和其他机器或与用户之间提供联系。
- 外围设备的基本组成:
- 存储介质:用于信息的保存;
- 驱动装置:用于移动存储介质,使之正常工作;
- 控制电路:用于使该外设与外界(如 CPU)的信息传递
# 外围设备的分类
- 输入 / 出设备;
- 外存设备;
- 数据通信设备;
- 过程控制设备;
# 磁盘存储设备
# 磁记录原理
- 磁表面存储器:用磁性材料薄薄地涂在金属铝或塑料表面作载磁体来存储信息。
- 磁表面存储器的优点:
- 存储容量大,位价格低;
- 记录介质可以重复使用;
- 记录信息可以长期保存而不丢失;
- 非破坏性读出,读出时不需要再生信息。
- 磁表面存储器的缺点:
- 存取速度较慢,机械结构复杂;
- 非接触式读写,对工作环境要求较高。
- 在磁表面存储器中,信息的读写是利用磁头来进行的;
- 磁头:由软磁材料做铁芯,绕有读写线圈的电磁铁。
- 写操作
- 原理:电 - 磁变换;
- 利用磁头写线圈中的脉冲电流,在磁表面每个存储元上形成不同的磁化状态;
- 读操作
- 原理:磁 - 电变换;
- 利用磁头读线圈,将磁表面每个存储元上的不同剩磁状态转换成电信号读出
# 磁盘的组成
- 硬盘的逻辑结构组成
- 磁记录介质
- 磁盘控制器
- 磁盘驱动器
# 硬磁盘的分类
- 按盘片结构分
- 可换盘片式
- 固定盘片式
- 按磁头分
- 可移动磁头
- 固定磁头
- 温彻斯特磁盘机
- 可移动磁头固定盘片的磁盘机;
- 密封组合式的硬磁盘;磁头、盘片、电机等部件组装成一个不可随意拆卸的整体。
- 工作时,高速旋转在盘面上形成的气垫将磁头平稳浮起。
- 优点:防尘性能好,可靠性高,对使用环境要求不高。
# 硬磁盘驱动器和控制器
- 磁盘驱动器
- 定位驱动系统
- 主轴系统
- 数据转换系统
- 磁盘控制器:主机与磁盘驱动器之间的接口
# 磁盘上信息的分布
- 记录面
- 磁盘片表面;
- 一个盘片有上下两个记录面。
- 磁道
- 记录面上一系列同心圆;
- 最外圈为 0 磁道 ,依次为 1、2、……、N 磁道;
- 每个磁道的存储容量均相同;
- 不同盘片的相同磁道构成一个柱面;
- 扇区
- 同心圆上的一段磁道区域;
- 每个扇区的存储容量也相同。
- 一个硬盘由多个盘片构成的磁盘组来记录信息;
- 每个盘片包括两个记录面;
- 每个记录面表面通常有几十到几百个磁道来记录信息;
- 每个磁道又分为若干个扇区。
- 磁盘组的信息记录顺序是按照柱面来组织的:第 0 面第 0 道 -> 第 1 面第 0 道 ->……-> 第 N 面第 0 道 -> 第 0 面第 1 道 -> 第 1 面第 1 道 ->……-> 第 N 面第 1 道 ->……
- 硬盘上信息地址由记录面号、磁道号、扇区号三个部分组成。
- 索引 :磁道的起始位置。为便于进行读 / 写操作
# 磁盘存储器的技术指标
# 存储密度
- 道密度
- 沿磁盘半径方向单位长度上的磁道数;
- 单位:道 / 英寸。
- 位密度
- 磁道单位长度上能记录的二进制代码位数;
- 单位:位 / 英寸。
- 注意:每个磁道的位密度均不相同,有最高、最低位密度。
- 0 磁道的位密度为最低位密度;
- 面密度
- 位密度和道密度的乘积;
- 单位:位 / 平方英寸。
# 存储容量
- 存储容量 = 记录面数 × 每面磁道数 × 磁道容量
- 非格式化容量:磁记录表面可以利用的磁化单元总数。
- 格式化容量
- 按照某种特定的记录格式所能存储信息的总量,也就是用户可以真正使用的容量。
- 格式化容量一般是非格式化容量的 60%—70%。
# 平均存取时间
- 平均存取时间等于平均找道时间与平均等待时间之和;
- 定位时间(找道时间):将磁头定位至所要求的磁道上所需的时间;
- 等待时间:找道完成后,盘片将所要访问信息转到磁头下方的时间;
- 平均找道时间:最大与最小找道时间的平均值,约为 10~20ms;
- 平均等待时间
- 与磁盘转速有关,是磁盘旋转一周时间的一半。
- 硬盘转速为 7200 转 / 分,故平均等待时间约为 4ms。
# 数据传输率
- 数据传输率与存储设备和主机接口逻辑有关。
- 设磁盘旋转速度为每秒 n 转,磁道容量为 N 个字节,数据传输率(字节 / 秒)
- 设某磁道位密度为 D 字节 / 英寸,磁盘转速为 v 英寸 / 秒,则数据传输率(字节 / 秒)
# 光盘和磁光盘存储设备
- 光盘存储器
- 采用聚焦激光束在盘式介质上非接触地记录高密度信息;
- 以介质材料光学性质的变化来表示所存储信息的 “1” 或 “0”。
- 光盘存储器是以光道来记录信息的;光道是一条始于盘片中心的螺旋线。
- 光盘的优点:存储容量大;
- 光盘的缺点:存取时间长,数据传输率低。
# 显示设备
# 显示设备的分类
- 按显示器件分类
- 阴极射线管 (CRT) 显示器
- 液晶显示器 (LCD)
- 等离子显示器等;
- 按显示的内容分类
- 字符显示器
- 图形显示器
- 图像显示器;
- CRT 显示设备
- 以扫描方式不同,分成光栅扫描和随机扫描两种显示器;
- 以分辨率不同 ,分成高分辨率显示器和低分辨率显示器;
- 以显示的颜色分类,有单色 (黑白) 显示器和彩色显示器;
- 以荧光屏对角线长度分类,有 14 英寸、16 英寸、19 英寸等多种。
# 随机扫描和光栅扫描
- 随机扫描
- 电子束只在需要做图的地方扫描,而不必扫描全屏幕;
- 这种扫描方式画图速度快,图像清晰;
- 高质量的图形显示器 (如分辨率为 4096×4096) 采用;
- 其偏转系统与电视标准不一致,驱动系统较复杂,价格较贵。
- 光栅扫描
- 电子束从上至下顺序扫描整个屏幕;又可分为逐行扫描和隔行扫描两种方式;
- 电视中采用的扫描方法;
- 缺点是冗余时间多,分辨率不如随机扫描方式。
# 分辨率
- 分辨率是指显示器所能表示的像素个数;
- 像素是指组成图像的最小单位;
- 像素越密,分辨率越高,图像显示越清晰;
- CRT 显示器的分辨率取决于显象管荧光粉的粒度、荧光屏的尺寸和 CRT 电子束的聚焦能力;
# 灰度级
- 灰度级
- 在黑白显示器中所显示的像素点的亮暗差别;
- 在彩色显示器中则表示为颜色的不同;
- 灰度级越多,图像层次越清楚逼真;
- 灰度级取决于每个像素对应刷新存储器单元的位数和 CRT 本身的性能。
- 只有两级灰度的显示器称为单色显示器。
- 图像显示器的灰度级一般在 256 级以上。
# 刷新和刷新存储器
- 刷新:CRT 显示器的电子束不断地重复扫描整个屏幕以稳定图像;
- 刷新频率
- 显示器每秒能够对整个屏幕的刷新次数。
- 一般设置刷新频率为 70Hz 以上;
- 电视中的标准是每秒刷新 50Hz;
- 刷新存储器
- 存放图像信息用于刷新的存储器,也叫显示存储器;
- 其存储容量由图像分辨率和灰度级决定;
- 刷新存储器的存取周期必须满足刷新频率的要求。
- 刷新存储器带宽 = 分辨率 × 颜色深度 × 刷新频率
# 显示适配器
- 显示适配卡,也叫显卡
- 显示器与主机之间的接口电路;
- 负责将主机发送的待显示的信号送给显示器。
- 显卡的主要构成部件
- 图形处理器 GPU:处理显示信息;
- 显存:暂存显示芯片要处理的数据和处理完毕的数据;
- 显卡 BIOS:存放显示芯片与驱动程序之间的控制程序;
- 印刷电路板(PCB)
- 显卡不同标准:VGA、XGA、SVGA
# 输入设备和打印设备
- 输入设备
- 图形输入设备:键盘、鼠标、图形板和游动标
- 图像输入设备 :数码照相机、数码摄像机、扫描仪
- 语音输入设备 :语音识别器
- 打印设备
- 针式打印机、喷墨打印机、激光打印机
# 输入输出系统
# 外围设备的速度分级与信息交换方式
# 输入输出系统的功能
- 为了得到高效可靠的数据传输,选择输入输出设备。
- 在选定的输入输出设备和 CPU 之间进行数据交换。
# 输入输出设备和 CPU 交换数据的过程
- 输入过程:
- CPU 把一个地址值放在地址总线上,这一步将选择一个输入设备
- CPU 等候输入设备的数据成为有效
- CPU 从数据总线上读入数据,并放在一个相应的寄存器中
- 输出过程:
- CPU 把一个地址值放在地址总线上,这一步将选择一个输出设备
- CPU 把数据放在数据总线上
- 输出设备认为数据有效,从而把数据取走
# CPU 和外围设备的定时
- 速度极慢或简单的外围设备:对于这类设备 CPU 总是能足够快地作出响应,也可以说,CPU 认为输入的数据一直有效,在这种情况下,CPU 只要接受和发送数据就可以了。常用的有:机械开关,显示二极管等。
- 慢速或中速的外围设备:CPU 与这类设备之间的数据交换通常采用异步定时方式。在这种情况下,CPU 和外设之间用问答信号进行定时的方式叫做应答式数据交换。
- 高速外围设备:CPU 和这类设备之间通常采用同步定时方式,一旦 CPU 和外设发生同步,他们之间的数据交换用时钟控制来进行。
- 同步定时方式:CPU 以等间隔的速率执行 I/O 指令。靠时钟脉冲控制进行。
- DMA 方式
# CPU 对外围设备的管理方式
- 程序查询方式
- 程序中断方式
# 程序查询方式
# 外设状态
- 在接口中设置状态字表示这些状态。
- 空闲:调用前,设备不工作;
- 结束:调用后,设备完成工作。
# 优缺点
- 优点:硬件开销小;
- 缺点:实时处理能力差,并行程度低。
# 应用场合
- 对 CPU 效率要求不高的场合,或诊断调试过程。
# 程序中断方式
# 中断基本概念
# 定义
- CPU 暂时中止现行程序的执行,转去执行为某个随机事态服务的中断处理程序。处理完毕后自动恢复原程序的执行。
# 实质与特点
- 实质:程序切换
- 方法:保存断点,保护现场;恢复现场,返回断点
- 时间:一条指令结束时切换。保证程序的完整性。
- 特点:随机性
# 中断分类
- 硬件中断与软中断
- 内中断与外中断
- 可屏蔽中断与非屏蔽中断
- 向量中断与非向量中断
# 中断系统的组成
- 软件:服务程序、中断向量表
- 硬件:
- 接口方面:请求、传递、判优逻辑
- CPU 方面:响应逻辑
# 工作原理
- 采用中断的方式可以使 CPU 和外围设备在一些操作上并行工作,来提高 CPU 效率。但是中断方式的操作复杂,并需要硬件支持。
# 在中断处理过程中需要注意的
- CPU 只有在当前一条指令执行完毕后,才能响应中断,
- 中断时的现场保存和返回时的现场恢复
- “中断屏蔽” 触发器
IM
:0 允许中断,1 不接受中断 - 中断处理过程由硬件和软件协作完成;中断周期和服务程序
# 中断全过程(外中断)
# 中断请求的提出与传递
# 如何产生中断请求
- 外设工作完成:“完成” 标志为 1
- CPU 允许请求:“屏蔽” 标志为 0
# 如何传送中断请求
- 使用单独请求线
- 使用公共请求线
# 中断判优
# 优先顺序
- 故障、DMA、外中断
# CPU 现行程序与外设请求的判优
- CPU 设置允许中断标志
- 1,开中断
- 0,关中断
- CPU 设置程序状态字的优先级字段
- <外设请求优先级,响应
- ≥外设请求优先级,不响应
- 各外设请求的判优
- 软件判优:由程序查询顺序确定优先级。可灵活修改优先级。
- 硬件判优
# 中断响应
# 响应条件
- 外设有请求,且未被屏蔽;
- CPU 开中断;
- 一条指令 (非停机指令) 结束;
- 无故障、DMA 等优先级更高的请求
# 如何获取中断服务程序的入口地址
- 非向量中断:将服务程序入口组织在查询程序中;CPU 响应时执行查询程序,查询中断源,转入相应服务程序。
- 向量中断:将服务程序入口 (中断向量) 组织在中断向量表中;CPU 响应时由硬件直接产生相应向量地址,按地址查表,取得服务程序入口,转入相应服务程序。
- 中断向量:服务程序入口地址、服务程序状态字
- 中断向量表:存放中断向量的表(一段存储区)
- 向量地址:访问向量表的地址(指向中断向量的首址)
# 响应过程
- 发响应信号 INTA,进入中断周期
- 关中断,保存断点
- 获得中断号,转换为向量地址,查向量表
- 取中断向量,转中断服务程序
# 中断处理
- 单级中断:CPU 响应后只处理一个中断源的请求,处理完毕后才能响应新的请求。
- 多重中断:在某次中断服务过程中,允许响应处理更高级别的中断请求。
# 程序中断方式的标志触发器
- 准备就绪的标志(
RD
):一旦设备做好一次数据的接收或发送工作,便发出一个设备动作完毕信号,使RD
标志为 “1”,它就是程序查询方式中的 Ready(就绪)标志。在中断方式中,该标志用作为中断源触发器,简称中断触发器。 - 允许中断触发器(
EI
):可以用程序指令来置位。EI
为 “1” 时,某设备可以向 CPU 发出中断请求;EI
为 “0” 时,不能向 CPU 发出中断请求,这意味着某中断的中断请求被禁止。设置EI
标志的目的就是通过程序来控制是否允许某设备发出中断请求。 - 中断请求触发器(
IR
)它暂存中断请求线上由设备发出的中断请求,当IR
标志为 “1” 时,表示设备发出了中断请求。 - 中断屏蔽触发器(
IM
)CPU 是否受理中断的标志。IM
标志为 “0” 时,CPU 可以受理外界的中断请求,反之,IM
标志为 “1” 时,CPU 不受理外界的中断请求。
# DMA 方式
# DMA 的基本概念
# 定义
- 直接依靠硬件实现主存与 I/O 间的数据传送,传送期间不需 CPU 程序干预
- I/O 与主存,而不是 I/O 与 CPU。
- 早期由 CPU 控制传送;现在由 DMA 控制器控制传送,DMA 控制器接管总线权,传送完毕再交还总线权。
- 传送期间只要 CPU 不访存,可并行操作
- 传送前和传送后需要程序干预。
# DMA 流程
- 程序准备:主程序实现初始化。
- DMA 传送:硬件实现 MI/O 的数据传送。
- 善后处理:中断处理程序判断传送的正误。
# 应用场合
- 用于高速、简单、批量数据传送
# DMA 传送方式
# 停止 CPU 访问内存
- 优点:控制简单,它适用于数据传输率很高的设备进行成组传送。
- 缺点:在 DMA 控制器访内阶段,内存的效能没有充分发挥。
# 周期挪用方式
- I/O 有 DMA 请求时,由 DMA 控制器挪用一个或几个主存周期来完成数据的传输,即在 CPU 指令周期中插入了 DMA 操作,有冲突时 DMA 优先。(用于 I/O 设备读写周期大于内存存储周期的情况)
# CPU 与 DMA 交替访问存储器
- 将一个 CPU 周期分为两个分周期,由 CPU 与 DMA 控制器轮流使用总线,也称为透明的 DMA 方式(硬件逻辑复杂)
# 基本的 DMA 控制器
# DMA 控制器的基本组成
- 内存地址计数器:用于存放内存中要交换的数据地址。在 DMA 工作前由程序设定,每传输一次地址自动加 “1”
- 字计数器:用于记录传送数据块的长度,通常用补码表示,在 DMA 工作前由程序设定,每传输一次字计数器自动加 “1”,当计数器溢出时,表示传送完毕,向 CPU 发出中断
- 数据缓冲寄存器:用于暂存每次传送的数据
- DMA 请求标志:每当设备准备好一次传输时发出的一个控制信号,使 DMA 请求标志位置 “1”,向 “控制 / 状态” 逻辑发出 DMA 请求,“控制 / 状态” 逻辑向 CPU 发出总线使用权的请求 HOLD;CPU 响应该请求时,发回响应信号 HLDA, “控制 / 状态” 逻辑接收到此信号后发出 DMA 响应信号,使 DMA 请求标志复位,为交换下一个字作好准备。
- “控制 / 状态” 逻辑:由控制和时序电路以及状态标志组成。用于修改内存地址计数器和字计数器,指定传送类型,并对 DMA 请求信号和 CPU 响应信号进行协调和同步。
- 中断机构:当字计数器溢出时,一组数据交换完毕,由溢出信号发出中断申请。
# DMA 数据传送过程
- 可分为三阶段:传送前预处理、正式传送和传送后处理
- 传送前预处理:执行几条 I/O 指令,完成设备状态测试、初始化地址计数器和字计数器,CPU 返回原来的主程序继续执行
- 当外设准备好时,发送 DMA 请求,由 DMA 控制器向 CPU 发出总线使用权的请求 HOLD。CPU 接受请求,根据不同的传递方式实现以数据块为单位的数据传输。
- DMA 传送后处理进行的工作:结束时,DMA 发送中断请求,CPU 处理中断服务程序,处理 DMA 结束需要处理的工作 —— 校验送入内存的数据是否正确、决定是否继续进行 DMA 传送、测试在传送过程中是否发生了错误。
- 基本 DMA 控制器与系统的连接方式有两种方式:一种是公用的 DMA 请求方式,另一种是独立的 DMA 请求方式。
# 选择型和多路型 DMA 控制器
- 选择型 DMA 控制器:物理上可以连接多个设备,逻辑上只允许连接一个设备,即某一段时间内只能为一个设备服务。
- 多路型 DMA 控制器:允许各设备以字节为单位交叉传送,或以数据块为单位成组传送。
# 比较
# DMA 与中断的相同点
- 能响应随机请求;可并行操作
# DMA 与中断的不同点
- 中断:用程序实现中、低速 I/O 传送;能处理复杂事态;一条指令结束时响应请求。
- DMA:用硬件实现高速、简单 I/O 传送;一个总线周期结束响应请求。
# 通道方式
# 通道的基本概念
- 通道是一个特殊功能的处理器,它有自己的指令和程序专门负责数据输入输出的传输控制,而 CPU 将 “传输控制” 的功能下放给通道后只负责 “数据处理” 功能。
- 通道处理机虽然不是一台具有完整指令系统的处理机,但是可以把它看作是一台能够执行有限输入输出指令,并且能够被多台外围设备共享的小型 DMA 专用处理机。
# 通道的类型
- 字节多路通道
- 用于多台低速或中速的外围设备
- 采用分时方式工作
- 选择通道
- 用于高速外围设备
- 工作方式:一旦选中某一设备,通道就进入 “忙” 状态,直到该设备的数据传输工作全部结束为止。
- 数组多路通道
- 字节多路通道和选择通道的结合
# 通道的功能
- 接受 CPU 的指令。
- 读取并执行通道程序。
- 控制数据传送。
- 读取外设的状态信息,提供给 CPU。
- 发出中断请求。
# 外围处理机方式
- 外围处理机是通道的进一步发展,其独立于主机工作,结构更接近一般的处理机(PC)。
- 外围处理机分担中央处理机的输入输出任务,又称输入输出处理机、I/O 处理机等,缩写为 IOP 或 PPU。
- 外围处理机主要用在除 IBM 公司以外的其他计算机公司研制的巨型、大型计算机系统中,甚至在有些中小型及微型计算机系统中也有输入输出处理机。
# 产生 IOP 的原因
- 通道处理机实际上并不能看成是独立的处理机,因为它的指令 (通道指令) 系统很简单,只有面向外围设备的控制和数据传送的基本指令,而且没有大容量的存储器。在数据的输入输出过程中,通道处理机还需要由 CPU 来承担许多工作。