第1章
- 计算机性能指标
- 机器字长——计算机一次整数运算能够处理的二进制数据的位数
- 主频、时钟周期
- CPI(每条指令周期数)——Clock cycle Per Instruction
- MIPS(每秒执行多少百万条定点指令数)——Million Instructions Per Second
- FLOPS(每秒执行浮点操作的次数)
- 传统冯诺依曼体系是单指令流和单数据流系统
- 计算机功能部件
- 主存储器
- MAR(地址寄存器),其位数对应存储单元的个数
- MDR(数据寄存器),其位数和存储字长相等
- 控制器
- IR(指令寄存器),存放当前指令
- PC(程序计数器),存放当前欲执行指令的地址
- CU(控制单元)
- 运算器
- 核心是ALU(算术逻辑单元),包含ACC(累加器),IX(变址寄存器),BR(基址寄存器)…
- 主存储器
- 计算机能够直接执行的语言是:机器语言
- 用助记符编写的语言是:汇编语言
- 把汇编语言源程序转变为机器语言的过程称为:汇编
第2章
- 进制的转换
- 校验码
- 奇偶校验码
- 只能发现数据代码中奇数位出错情况,但不能纠正错误
- 海明码
- 能够自动指出因为错误并纠错
- n+k <= 2^k-1,其中n:信息位位数,k:校验位位数
- 校验位分布在2^(i-1)位置上,即(1,2,4,8…)
- 校验位(P1,P2,P3…)的计算
- 将数据位编成二进制,P1对应个位为1的数据位值的异或,P1对应十位为1的数据位值的异或…
- 校验原理
- 将整个海明码的每一位编成响应二进制数,对个位为1的海明码值求异或…,如果最终每一位对应的异或值都为0,则代表没有出错
- 循环冗余校验码(CRC)
- 原信息码补0,0的个数为多项式最高次数的值
- 补完0之后对多项式系数构成的二进制做除法取余
- 余数加至原信息码后面构成循环冗余码
- 奇偶校验码
- 定点数的表示
- 原码(8位表示范围-127~127,存在+0和-0)
- 反码(8位表示范围-127~127,存在+0和-0)
- 补码(8位表示范围-128~127,0有唯一补码)
- 移码——补码符号位取反(8位表示范围-128~127),移码直观上反应真值大小
- 双符号位加减运算
- 00,结果为正数,无溢出
- 01,正溢出
- 10,负溢出
- 11,结果为负数,无溢出
- 原码一位乘法
- 符号位和数值位分开
- 对应位为1则累加|x|,移位。对应位为0,则累加0,移位。
- 补码一位乘法(Booth算法)
- 符号位参与运算
- 乘数末尾补0,根据最后两位的值来判断操作
- 00——右移一位
- 01——累加[x]补,右移一位
- 10——累加[-x]补,右移一位
- 11——右移一位
- 补码转化为真值
- 浮点数的表示
- IEEE754标准
- 单精度(32位):1位符号位(s)+8位阶码(E)+23位尾数(M)
- E = 指数(e) + 127
- 1.M(隐藏为1的尾数)
- 加减法
- 0操作数检查
- 对阶——小阶向大阶对齐
- 尾数求和
- 规格化
- IEEE754标准
第3章
- 在计算机中的层次
- 主存(内存)
- 辅存(外存)
- 高速缓冲存储器(cache)
- cache——主存:解决速度问题,数据调动由硬件完成,对程序员透明
- 主存——辅存:解决容量问题,数据调动由硬件和操作系统完成,对应用程序员透明
- 存储器的分类
- 存储介质
- 磁表面(磁带,磁盘)
- 磁芯半导体
- 光存储器(光盘)
- 存取方式
- 随机存储器
- 顺序存储器(磁带)
- 直接存储器(磁盘)——介于两者之间
- 内容的可保存性
- ROM(只读存储器)
- RAM(随机读写存储器)
- 存储介质
- 存储器的性能指标
- 存储容量、单位成本、存储速度
- 存储速度
- 存取时间——启动一次存储器操作到完成该操作所经历的时间,分为读出时间和写入时间
- 存取周期——进行一次完整的读写操作所需的时间。即连续两次独立地访问存储器之间所需的最小时间间隔
- 通常:存储周期 > 存取时间,原因是在读写操作之后有一段恢复内部状态的复原时间
- 主存带宽——数据传输率
- SRAM
- 地址线 (字数)
- 数据线 (位数)
- 读写控制线
- DRAM
- 刷新方式
- 集中式刷新,利用一个固定的时间,对存储器的所有行进行逐一再生,这期间停止对存储器的读写操作
- 分散式刷新,没有死区
- 存储器容量的扩充
- 刷新方式
- ROM
- 掩模ROM
- 可编程ROM(PROM,EPROM,E2PROM)
- FLASH存储器
- 是在EPROM上发展而来
- 并行存储器
- 双端口存储器
- 左右两个独立的端口,具有相互独立的地址线、数据线和读写控制线
- 当两个端口的地址不相同时,两个端口进行读写操作一定不会发生冲突
- 使用同一个地址单元时,会造成冲突
- 多模块交叉存储器
- 高位交叉编址仍是顺序存储器
- 低位交叉编址则是交叉存储器
- 顺序方式:t = mT
- 交叉方式:t = T + (m-1)τ (其中T=mτ)
- 模块数必须大于等于m
- 双端口存储器
- cache
- cache命中率(h)
- cache访问时间(Tc)
- 访问效率(e=Tc/Ta)
- 平均访问时间(Ta)
- 主存和cache的地址映射
- 由于cache容量很小,需要将主存地址定位到cache中
- 全相联——可以装入cache中的任意位置
- 地址结构:主存字块标记+字块内标记
- 直接映射——主存数据块只能装入cache中的唯一位置。
- j = i % N (j:cache块号,i:主存块号,N:cache总块数)
- 地址结构:主存字块标记+cache字块标记+字块内地址
- 组相联——组间直接映射,组内全相联
- 地址结构:主存字块标记+组号+字块内地址
- cache中主存块的替换算法
- LRU(最近最少使用)
- LFU(最不经常使用)
- 随机替换
- cache的写操作策略
- 写回法——CPU写命中cache时,只修改cache的内容,此行被换出时才写回主存
- 全写法——CPU写命中时,cache和主存同时发生写修改
- 写一次法——第一次写命中时同时写入主存
- 虚拟存储器
- 逻辑地址和物理地址
- 页式虚拟存储
- 虚拟空间和主存空间被划分成同样大小的页
- 页表——存放虚页号和实页号的对照表,一般放在内存中
- 查页表,需要访问一次主存
- 段式虚拟存储
- 段是按程序的逻辑结构来划分的,段的长度不一致
- 段号+段内地址
- 段页式虚拟存储
- 分段,每段在划分为相同大小的页
- 段号+段内页号+页内地址
- TLB(快表)——经常需要访问的页对应的页表放在高速缓冲器中
- Page(慢表)——放在主存中的页表
- TLB是Page的一个很小的副本
- TLB命中,Page一定命中
- Page不命中,cache和主存也不命中
第4章
指令格式
- 操作码
- 地址码
- 指令的长度——一条指令中包含二进制代码的位数
- 指令字长=操作码长度+地址码长度
- 机器字长——计算机能够直接处理的二进制数据的位数,决定了计算机的精度。通常和主存单元的位数一致
- 单字长指令:指令长度=1*机器字长
- 双字长指令:指令长度=2*机器字长
- 零地址指令、一地址指令、二地址指令、三地址指令、四地址指令
- 二地址指令根据操作数的物理位置
- 存储器——存储器(SS)
- 寄存器——寄存器(RR)
- 寄存器——存储器(RS)
- 若指令字长32位,操作码8位,一个地址字段占24位,则指令操作数的直接寻址范围为2^24=16M
- 指令周期——执行一条指令所需要的时间
寻址方式
- 指令的寻址方式
- 顺序寻址——使用程序计数器PC来计数
- 跳跃寻址
- 数据的寻址方式
- 隐含寻址——累加器ACC对单地址指令来说是隐含地址
- 立即数寻址——指令执行时间最短
- 直接寻址——形式地址A就是操作数的真实地址,即EA=A
- 间接寻址——指令的地址字段给出的是操作数有效地址所在存储单元的地址,即EA=(A)
- 寄存器寻址——在指令字中直接给出操作数所在寄存器的编号,EA=Ri
- 寄存器间接寻址——寄存器Ri中给出的是操作数所在主存单元的地址,EA=(Ri)
- 偏移寻址
- 相对寻址——PC的内容加上指令中形式地址A形成操作数的有效地址,EA=(PC)+A
- 基址寻址——基址寄存器BR的内容加上形式地址A形成操作数的有效地址,EA=(BR)+A
- 变址寻址——变址寄存器IX的内容加上形式地址A形成操作数的有效地址,EA=(IX)+A
- 堆栈寻址
CISC和RISC
- 复杂指令系统计算机CISC
- 指令数目多
- 指令长度不一致、格式多、寻址方式不一致
- 使用频率相差较大
- 执行时间相差较大
- 控制器大多采用微程序控制
- 精简指令系统计算机RISC
- 选取高频率使用的一些简单指令
- 长度固定、格式少、寻址方式少
- 只有load/store指令访存,其余指令在寄存器之间进行
- CPU通用寄存器相当多
- 以硬布线控制为主、组合逻辑控制
- 采用指令流水线技术,大多在一个时钟周期内完成
第5章
- CPU功能
- 指令控制
- 操作控制
- 时间控制
- 数据加工
- 中断处理
- CPU组成
- 运算器
- ALU、通用寄存器、数据缓冲寄存器、PSW
- 控制器
- PC、IR、MAR、MDR、指令译码器
- 运算器
- 主要寄存器
- DR(数据缓冲寄存器)——暂时存放ALU运算结果
- IR(指令寄存器)——保存当前正在执行的一条指令
- PC(程序计数器)——保存下一条要执行的指令
- AR(数据地址寄存器)——保存所访问数据cache存储器中单元的地址
- 通用寄存器
- PSW(状态字寄存器)——各种条件代码(进位标志、溢出标志)
- 数据通路
- 数据在功能部件之间传送的路径称为数据通路
- 数据通路基本结构
- CPU内部单总线
- CPU内部三总线
- 专用数据通路方式
- 指令周期
- 构成:取指周期+间址周期+执行周期+中断周期,4个过程都有访存操作,目的不同
- 取指:取指令
- 间址:取有效地址
- 执行:取操作数
- 中断:保存程序断点
- 指令周期 > 机器周期 > 时钟周期(节拍T)
- 时钟周期是CPU操作的最基本单位
- 各指令的指令周期(MOV,LAD,ADD,STO,JMP)
- 构成:取指周期+间址周期+执行周期+中断周期,4个过程都有访存操作,目的不同
- 控制方式
- 控制器的控制方式——控制不同操作序列时序信号的方法
- 同步控制
- 异步控制
- 联合控制
- 控制器
- 硬布线控制器,又称组合逻辑控制器,由复杂的组合逻辑门电路和触发器构成
- 速度相对较快,原因是微程序控制每条微指令需要从控存中读取一次,影响速度,硬布线主要取决于电路延迟
- 微程序控制器
- 微命令——控制部件通过控制线向执行部件发送各种控制命令
- 微操作——执行部件接收微命令后进行的操作
- 微操作在执行部件中是最基本的操作
- 相容性——同一个CPU周期内能够并行执行
- 相斥性——不能并行执行
- 微指令——在一个CPU周期内,实现一定操作功能的微命令的组合,构成一条微指令
- 微程序——一条机器指令由多条微指令组成的序列来实现
- 微程序控制器原理图
- 控制存储器——用来存放实现全部指令系统的微程序
- 微指令寄存器
- 地址转移逻辑
- 微指令周期——读出微指令的时间加上执行该条微指令的时间
- 为了保证整个机器控制信号的同步,可以将微指令周期设计成CPU周期时间相等
- 机器指令和微指令的关系
- 一条及其指令对应一个微程序,微程序由若干微指令序列构成
- 机器指令与内存存储器相关,微指令和控制存储器相关
- 硬布线控制器,又称组合逻辑控制器,由复杂的组合逻辑门电路和触发器构成
- 微程序设计是利用软件方法来设计硬件的一门技术
- 目标
- 缩短微指令的长度
- 减小控制存储器的容量
- 提高微程序运行速度
- 有利于对微指令的修改
- 提高微程序设计的灵活性
- 微指令编码
- 直接表示法
- 控制字段中的每一位表示一个微命令
- 优点:简单直观、便于直接用于控制
- 缺点:指令较长,是控制存储器容量较大
- 编码表示法
- 把互斥性微命令编为一组
- 对微命令进行编码,流出一个代码表示本段不发出微命令
- 增设微命令译码器
- 混合表示法
- 直接表示法
- 微指令的地址形成方法
- 初始微地址的形成
- 根据机器指令的操作码形成
- 后继微地址的形成
- 计数器方式,直接由微指令的下地址字段给出
- 简单、功能较弱、速度慢
- 多路转移方式
- 灵活、速度快、设计较为复杂
- 计数器方式,直接由微指令的下地址字段给出
- 初始微地址的形成
- 微指令格式
- 水平型微指令
- 一次能定义并执行多个并行操作微命令的微指令
- 控制字段+判别测试字段+下地址
- 垂直型
- 微指令中设置微操作码字段,采用微操作码编译法,由微操作码规定微指令的功能
- 两者的比较
- 水平型微指令并行操作能力强,效率高,灵活性强
- 水平型微指令执行一条指令的时间短
- 水平型微指令解释的指令的微程序,有微指令字较长而微程序较短的特点
- 垂直型微指令则相反,微指令字较短而微程序长
- 水平型微指令
- 目标
- 流水线
- 线性流水线的时钟周期:τ=max{τi}+τl(其中τi表示过程段Si所需时间,τl表示延时)
- k级过程段完成n个任务,流水线处理所需时钟周期数:T=k+(n-1)。而串行则需要时钟周期数:T=n*k
- 分类
- 指令流水线
- 算术流水线
- 处理机流水线
- 流水线中的主要问题
- 资源相关——争用同一个功能部件所发生的冲突
- 数据相关——一条指令必须等另一条指令执行完才能执行
- 控制相关——由转移指令引起(执行转移指令后,可能顺序执行下一条,也可能转移到新的目标地址)
- 延迟转移法
- 转移预测法
第6章
- 总线
- 总线是一组能为多个部件分时共享的公共信息传送线路
- 分时——同一时刻只允许有一个部件向总线发送信息
- 共享——某一时刻可以有多个部件从总线上接收信息
- 总线分类
- 片内总线(内部总线)——CPU内部连接各个寄存器和运算器的总线
- 系统总线——计算机系统内各部件(CPU,主存)之间连接的总线
- 数据总线,双向传输
- 地址总线,单向传输
- 控制总线
- I/O总线——低速I/O设备之间互相连接的总线
- 总线结构
- 单总线——争用唯一的总线,但不是只有一根
- 双(多)总线——将低速的I/O设备从单总线上分离出来,实现I/O总线
- 总线性能指标
- 总线带宽——总线本身所能达到的最高传输速率
- 总线频率——
- 总线宽度——总线上能够同时传输的数据位数,通常指数据总线的根数
- 总线仲裁
- 集中式仲裁
- 链式查询方式
- 离总线仲裁器最近的设备具有最高优先级、优先级固定
- 对电路故障很敏感
- 3根(总线请求1,总线忙1,总线允许1)
- 计数器定时查询方式
- log2(n)+2
- 计数器可以从0开始,也可以从上一次的终点开始,循环方法,此时设备使用总线的优先级相等
- 独立请求方式
- 2n+1(总线请求n,总线允许n,总线忙1)
- 响应速度快
- 链式查询方式
- 分布式仲裁
- 每个潜在的主模块都有自己的仲裁号和仲裁器
- 集中式仲裁
- 总线操作和定时
- 总线的一次信息传送过程:5个步骤
- 请求总线
- 总线仲裁
- 寻址
- 信息传送
- 状态返回
- 同步定时——系统使用同一的时钟信号来协调发送和接收双方的传送定时关系。
- 传送速度快
- 适用于总线长度较短及部件的存取时间比较接近的系统
- 异步定时
- 没有统一的时钟
- 依靠传送双方的握手来实现定时控制
- 总线长度可变,能保证速度相差很大的部件之间进行信息交换
- 请求和回答信号的互锁
- 不互锁
- 半互锁
- 全互锁
- 总线的一次信息传送过程:5个步骤
- 总线标准
- ISA
- PCI
- USB
- SCSI
- SATA
第7章
- 存储区域
- 磁盘有若干个记录面,每个记录面分为若干磁道,每条磁道分为若干扇区(块),块是磁盘读写的最小单位。
- 记录面数
- 柱面数
- 扇区数
- 磁道的编址从外向内依次编址
- 性能指标
- 磁盘容量
- 存储密度
- 道密度
- 位密度
- 面密度=位密度*道密度
- 平均存取时间
- T=平均找道时间+平均等待时间(1/2r)+数据传送时间(b/rN),其中r:磁盘旋转率,N:每道字节数,b:传送的字节数
- 数据传输率
- Dr=nN,其中n:磁盘旋转率,N:每条磁道容量的字节数
- Dr=D*v,D:位密度,v:磁盘旋转的线速度
- 同一柱面不需要重新找道,节省时间
- 显示设备
- 分辨率——显示器所能显示的像素个数
- 灰度级——显示的像素点的亮暗差别
- 视频存储器(显存):容量M=分辨率r * 灰度级C
第8章
- 信息交换方式
- 程序查询方式
- 程序中断方式
- 直接访问内存方式(DMA)
- 仍然考虑中断响应
- DMA控制器从CPU完全接管对总线的控制,数据交换不经过CPU,直接在内存和外围设备之间进行
- 通道方式
- CPU把部分权利下放给通道
- 通道是一个具有特殊功能的处理器
- 优先权高于CPU
- 中断方式
- 程序中断是指在计算机在执行现有程序的过程中,出现异常情况或特殊请求,CPU暂时中止现行程序,转而去处理这些请求,处理完毕后自动返回到断点处继续执行原有程序
- CPU响应中断的条件
- 有中断请求
- CPU允许中断及开中断
- 一条指令执行完毕执行
- 中断向量
- 每个中断程序都有一个入口地址,CPU必须找到这个入口地址,即中断向量
- 中断向量地址——入口地址的地址
- 每个中断程序都有一个入口地址,CPU必须找到这个入口地址,即中断向量
- 中断隐指令(硬件自动完成)
- 关中断
- 保存断点
- 引出中断服务程序
- 中断服务程序完成
- 保护现场和屏蔽字
- 开中断
- 恢复现场和屏蔽字
- 中断返回
- 中断额外开销时间=中断系统响应时间+软件额外开销
- 最短中断时间间隔=响应时间+中断服务程序时间
- CPI执行轨迹图,参考例题
- DMA
- 数据传送不经CPU
- DMA控制器——对数据传输过程中进行控制的硬件
- 主要功能
- 接收外设发出的DMA请求,并向CPU发出总线请求
- CPU响应后,DMA控制器接管总线控制权
- DMA控制器对内存寻址,执行数据传送的操作
- 向CPU报告DMA操作的结束
- DMA传送方式
- 停止CPU访问主存
- DMA和CPU交替访存
- 周期挪用
- 选择型DMA——在某段时间内只能为一个设备服务
- 多路型DMA——能同时为多个慢速外围设备服务
- 中断和DMA的区别
- DMA除了预处理和后处理,其他时候不占用CPU资源
- 对中断请求的响应发生在每条指令执行完毕时,对DMA请求的响应可以发生在每个机器周期(取指周期、间指周期…)结束时,只要CPU不占用总线就可以
- DMA请求的优先权高于中断请求
- 通道方式
- 选择通道——一段时间只能一个设备工作
- 最大数据传输率:F=max(fi)
- 多路通道
- 数组多路通道——一段时间内能交替执行多个设备,高速设备。但只允许一个设备进行传输型操作
- F=max(fi)
- 字节多路通道——主要用于连接大量低速设备,允许多个设备进行传输型操作
- F=f1+f2+…
- 选择通道——一段时间只能一个设备工作