基础
计算机基本组成
-
计算机系统包括:计算机硬件和计算机软件
-
软件:应用软件、系统软件(操作系统、语言处理程序、数据库管理系统等)
- 硬件:主机(CPU=运算器+控制器、内存=cache+主存)、外设(外存、IO设备)
- cache的作用:解决CPU与内存的速度不匹配问题
- 存储器:内存快小,外存慢大,cpu不能直接访问外存
- 存储器层次:二级(内存;外存),三级(cache、主存;辅存)
- 冯诺依曼计算机的五大功能部件
- 运算器、控制器、存储器、I/O设备
- 冯诺依曼计算机的特点
- 将指令和数据,不加区别地混合存储在同一存储器
- 区别于哈佛计算机(将指令和数据完全分开存储)
技术指标
1. 字长
- 字长:运算器中一次运算的位数,如32bit、64bit等
- 字长=寄存器长度=运算位数
- 字长越长,则计算精度越高
2. 速度
- clk:运行一段程序需要的==总==时钟数,分为机器周期和时钟周期
- 一个机器周期可以等于多个时钟周期
- 注意:以下所指的clk都指时钟周期
-
inst:运行一段程序需要的==总==指令数
-
主频f:一秒的周期数
- 主频=clk/t
- 单位:Hz、MHz、GHz
- CPI(clk per inst):一条指令的周期数
-
CPI = clk/inst
-
时钟周期T:一个clk的时间
-
时钟周期T=1/f
-
单位:us、ns
-
CPU执行时间:n条指令的总时间
-
CPU执行时间 = clk * T = (inst * CPI) * T
-
MIPS(million inst per sec):一秒的百万指令数
- MIPS = (inst / 10e6) / t = f(MHz) / CPI
- MFLOPS(million floating operation per sec):一秒的百万浮点指令数
-
几乎同上,只是inst数换成浮点操作的inst数
-
吞吐量:一段时间内处理的“信息量”
- 单位:Byte/s(不是bit/s)
- 响应时间
3. 主存性能
-
容量
-
K($=2^{10}\approx10^3$)
-
M($=2^{20}\approx10^6$)
-
G($=2^{30}\approx10^9$)
T($=2^{40}\approx10^{12}$)
-
带宽:单位时间内从主存中读出的二进制“信息量”
-
单位:Byte/s
总线
- 定义:是构成计算机系统的互联机构,是多个系统功能部件之间进行信息传送的公共通路
- 作用:计算机在系统功能部件之间实现地址、数据、控制信息的交换,并在争用资源的基础上进行工作
- 特性
- 机械/物理特性:根数、插头、引脚
- 功能特性:传输地址、数据、控制信号
- 电气特性:传输方向和有效电平范围
- 时间特性:信号的时序关系
- 分类
- 片内总线:CPU内,连接寄存器、运算器等结构的总线
- 系统总线:计算机内,连接CPU、主存、IO接口等结构的总线
- 分为:数据总线、地址总线、控制总线(传输控制信号和时序信号)
- 通信总线:计算机之间或其他设备的总线
- 总线结构:单总线(绿)、双总线(绿+白)、三总线(绿+白+黄)
- 多总线的目的:虽然总线利用率变低,但设备的吞吐量变高了

1. 概述
- 宽度
- 带宽(数据传输率):
- 带宽=传输Byte数/t = 数据总线宽度 / CPU执行时间
- 如果数据总线为32bit,则一次数据传输为32b=4B,不是2^32bit
- 单位:Byte/s
2. 仲裁(判优)
-
分类:集中式(设置一个仲裁器)、分布式(由总线各个部件或设备来决定)
-
集中式仲裁的优先方式:链式查询、计数器定时、独立请求
-
链式查询
-

-
步骤
- 首先设备将BR置高,然后仲裁器会将BG线置高。
- 如果前序设备不占用总线(不阻塞BG链的传递),则设备会识别到BG为高,否则识别到低。
- 若BR和BG都为高,则设备获得总线,并置BS为高
-
优缺点:线数少、容易扩充设备;电路故障敏感、优先级固定
-
计数器定时
-

- 步骤
- 首先设备将BR置高,然后仲裁器将计数器的值(从0开始递增),通过设备地址线,发给所有设备
- 若设备接收到的地址和自己的序号一致,则获得总线,置BS为高
- 然后仲裁器将计数器设置到新值(不一定是+1,也不一定是初始值)
- 若所有设备都不响应,则仲裁器将计数器+1,重新发送地址。
- 计数器的值
- 若响应后设置为0,则优先次序和链式查询一致
- 若响应后设置为计数+1,则每个设备优先级相等
- 用程序来设置值
-
优缺点:较动态优先级;线数较多
-
独立请求
-

- 步骤
- 首先设备将$BR_i$置高,然后仲裁器将对应序号加入排队器中
- 每一次仲裁器从排队器中取出一个序号,并置BG为高,对应设备获得总线
- 排队器的优先级:根据设备优先来指定排队电路
- 优缺点:响应时间快,最动态优先级;线数最多,电路最复杂
3. 总线通信(即确定时序/定时)
- 分类:同步、异步、半同步、周期分裂
- 同步总线:有总线时钟(由最慢的设备产生),周期长度固定
- 适用于设备速度差不多的情况
- 异步总线:无总线时钟(由握手协议确定时序),周期长度不固定
- 握手分类:不互锁(自动撤销valid)、半互锁(ready置高再撤销valid)、全互锁(ready置高再撤销valid,valid撤销后再撤销ready)

- 半同步:有总线时钟(由最慢的设备产生),有wait线(由握手协议产生),周期不固定
存储器
1. 存储器层次结构
- 存储器的矛盾:容量大、速度快、成本低的矛盾
- 解决矛盾:采用多级存储器体系结构
- 两级存储:内存(cpu可直接访问)+外存(cpu不可直接访问)
- 内存的特点是:容量小、速度快、成本高
- 三级存储:内存(cache+主存)+外存(辅存)
- cache的目的:提升访问主存的速度,解决cpu和主存的速度匹配问题
- 存储系统层次

2. 主存概念
- 单元:存储器的一行
- 按字节编址的存储单元:一行存储一个字节
- 按字编址的存储单元:一行存储一个字
3. 主存性能指标
- 存储容量:KMGT(以2为基),可表示为行(存储单元数)*列(存储单元大小)
- 存取时间:一次读/写操作的时间
- 存取周期:连续读写过程中,一次完整的存取操作的时间
- 存取周期=连续两次存取的最小时间间隔=存取时间+恢复时间
- 所以,存取周期>存取时间
- 存储带宽:单位时间存储器存取的信息量
4. 半导体存储芯片
- RAM:掉电丢失,可读可写,速度快
- ROM:掉电不丢失,ROM只读,速度慢
- PROM、EPROM、EPPROM:可编程写入
-
Flash:可随机写入
-
SRAM:二维表,分为行地址译码和列地址译码,一个存储位元=一个触发器(1bit)。
- DRAM:同上,行/列地址分时复用,只有一个译码器,存储位元需要刷新(由计数器控制),一个存储位元=一个电容(1bit)
- DRAM刷新的原因:DRAM的电容会衰减,需要定时恢复补充
- 刷新方式:集中式、分散式、异步式
- 集中式:多次读写时间+集中恢复时间(死区)
- 分散式:单次读写时间+单次恢复时间
- 异步式:折中方案
5. 存储扩展
6. 提高访存速度
- 芯片技术:协议(突发传输),芯片(SDRAM技术、CDRAM技术)
- 结构技术:空间并行(双端口存储器),时间并行(多体交叉存储器)
-
系统结构技术:分层存储结构(Cache、虚拟存储器)
-
双端口存储器:使用左右两套读写电路,内部有一个仲裁器
- 多体交叉存储器:将连续的数据存放在不同的存储体中,这样读数据时,可以由多个存储体同时输出

- 然而实际上,存储体无法做到同时输出,因为每个存储体启动需要时间
- 因此存取周期为T=启动时间$\tau$+输出时间
- 为了改进,采用流水线式运行
- 流水线式:上一个存储器先启动,后输出数据,而下一个存储器在它的输出时间中启动。
- 计算时间:如图
7. Cache
1. 概念
- 访存局部性:CPU的一种访存特性,对存储空间的90%的访问局限于存储空间的10%的区域中。
- Cache的基本原理(以写透写不分配为例):CPU读取内存时,发出读内存地址到Cache和内存,若Cache命中,则直接从Cache中读出给CPU;若未命中,则把数据从主存发送给CPU,并同时发送给Cache。
2. 映射方式
- 全相联映射:主存的块可以复制到Cache的任意一行
- 直接映射:主存的块可以复制到Cache的固定一行
- 用模运算决定复制到哪一行
- 组相联映射:主存的块可以复制到Cache的固定一组,然后可以复制到组内的任意一行
- 用模运算决定复制到哪一组
3.替换方式
- 分类:FIFO、LRU、Random
4. 技术指标
- 命中率$H=\frac{N_c}{N}=\frac{N_c}{N_c+N_m}$
- 平均访问时间T=$H\times t_c+(1-H)t_m=\frac{t_c}{e}$
- 访问效率e=$\frac{t_c}{T}=\frac{1}{r+(1-r)h}$
- 其中,$r=\frac{t_m}{t_c}$
8. 虚存
- 略
输入输出设备
- 外设:除了CPU和内存的其他设备,比如外存、I/O设备。
- IO接口

- IO接口与外设的传输方式:无条件收发数据(简单/极低速设备);异步定时(中低速设备);同步定时(高速设备)
- IO接口与主机的传输方式:
- 轮询
- 中断
- DMA(直接内存存取方式)
- 通道
- 处理机
1. DMA
- DMA是一个特殊功能的控制器,完全由硬件执行IO交换,适用于简单大批量的数据传送。
- 方向:内存<->DMA<->IO设备
- CPU和DMA的优先级:DMA总是较高
- 传送方式
- 成组连续传送==DMA占用率最多==
- DMA发出请求,CPU接收后让出总线,DMA完全占用总线,直到整个块传送结束才归还总线。
- (控制简单,CPU利用率低)
- 周期窃取==DMA占用率最少==
- DMA发出请求,CPU接收后让出总线,DMA每次占用总线几个周期,然后归还总线。反复进行请求和归还,直到数据传输结束。
- (CPU利用率高,DMA利用率低)
- 透明DMA==DMA占用率适中==
- DMA发出请求,CPU接收后让出总线,然后DMA和CPU每次都只使用一个周期,直到数据传输结束。
- (CPU和DMA的利用率都高,实现复杂)
2. 通道
- 通道是一个特殊功能的控制器
-
CPU有专门的通道指令,可以控制更多的外设。CPU和通道分时使用主存,CPU完全摆脱IO设备负担。
-
通道类型
- 选择通道(高速)
- 单位:数据块
- 对一个高速设备进行传输和控制
- 数组多路通道(高速)
- 单位:数据块
- 对一个高速设备进行传输;对多个高速设备进行控制(多道程序)
- 字节多路通道(低速)
- 单位:字节
- 对多个低速设备进行传输
编码
- 原反补移:略
- 0在补码和移码的表示方式唯一,其他码中有正负两种表达方式
1. 定点数与浮点数
- 定点数格式(小数点固定位置)
- 纯小数:符号位.数值 (比如1.011表示-0.011)
- 纯整数:符号位 数值.(比如1011.表示-11)
- IEEE754浮点数格式(小数点不固定位置)
- 数学表示:将十进制小数变为二进制小数$(-1)^s\times m\times r^e$
- 机器表示:[符号位(1bit),阶码(8bit/11bit),尾数(23bit/52bit)]
- 符号位S:看s
- 阶码E:看e,单精度为e+127;双精度为e+1023
- 尾数M:看m,省略小数点前面的部分
- 上面三部分填充至对应位数
- 例子:(5.3)D->(101.11)B->1.0111x2^2(这里其实用了规格化)
- 此时,S=0,R=2,E=2+127,M=0111
- 所以机器表示为[0,1000_0001,0111_0000_000]
- 浮点数规格化:限制尾数的小数点左边总是1

- 规格化浮点数(假设为单精度)的真值表示为:$(-1)^S\times(1.M)\times2^{(E-127)}$
2. 定点数计算
-
补码加减法
-
[X+Y]补=[X]补+[Y]补
-
[X-Y]补=[X]补-[Y]补=[X]补+[-Y]补(将减法变为加法)
-
溢出检测:设置两个符号位
-
原码->变形原码->变形补码:正数两个符号位为0,负数两个符号位为1
-

-
原码乘法(使用异或)
-
符号位计算:符号位异或
- 非符号位计算:绝对值异或
- 比如:

- 比如:
- 符号位和非符号位组合
3. 浮点数计算
- 单精度规格化浮点数的加减法:略
指令系统
1. 指令
- 指令格式:[操作码,地址码]
- 操作码
- 分类:固定长度,可变长度
- 可变长度:

- 地址码:操作数或地址(寄存器编号,外设端口地址,内存地址)
- 分类:单地址、二地址、三地址、四地址
- 单地址:[OP,S]
- 二地址:[OP,S1,T]
- SS型最慢,RR型最快,因此主要使用RS和RR
- 三地址:[OP,S1,S2,T]
- 四地址:[OP,S1,S2,T,NPC]
- 由指令中的NPC手动给出下一条指令的地址
- 指令字长分类:单字长、半字长、多字长;等长、非等长
寻址方式
-
指令寻址
-
顺序方式:计算出SNPC
-
跳跃方式:计算出DNPC,可以实现条件转移和无条件转移
-
数据寻址(数据不在内存中)
- 隐含寻址:操作数在专用寄存器
- 立即寻址:操作数直接写在指令中
- 寄存器寻址:操作数在通用寄存器
- 堆栈寻址:操作数在堆栈中
- 数据寻址(数据在内存中)
- 直接寻址[MEM]:操作数的内存地址=内存存放的值
- 注意:ACC=有效地址EA=MEM,操作数=[MEM],以下同理
- 寄存器间接寻址[Reg]:操作数的内存地址=寄存器存放的值
- 间接寻址[[MEM]]:操作数的内存地址=内存存放的值,还需要访存一次,才能找到操作数
- 偏移寻址[Reg+Offset]:操作数的内存地址=寄存器存放的值+偏移地址,还需要访存一次,才能找到操作数
- 分类:相对寻址(相对于PC),基址寻址(相对于Rb),变址寻址(相对于Rx)
CPU结构和功能
结构与功能
- 结构
- 运算器:ACC(累加器)、MQ(乘商寄存器)、X(操作数寄存器)、ALU(算术逻辑单元)
- 控制器:CU(控制单元)、IR(指令寄存器)、PC(程序计数器)
- 寄存器:分布再控制器、运算器、控制器中
- 片内总线
- 功能:略
- 周期:指令周期、机器周期、时钟周期
- 指令周期:取指周期(取指令)+间址周期(取访存的有效地址)+执行周期(取操作数)+中断周期(保存程序断点)
优化技术
- 流水线的技术指标
- 吞吐率=inst/time
- 加速比=流水线吞吐率/非流水线吞吐率
- 效率
- 指令流程图
- 时空图
简答题
第一章
- 计算机层次结构:高级语言机器->汇编语言机器->机器语言机器
- 计算机组成原理和体系结构的区别
- 体系结构:程序员能看见的,计算机系统的概念性结构和功能
- 组成原理:如何实现体系结构中的结构和功能
- 冯诺依曼机的特点:5个设备、4个指令、1个运算器
第二章
-
计算机发展史:电子管-晶体管-集成电路
-
总线概念和分类
- 概念:连接计算机系统中多个部件的一组公共通信线路,传输信息的公共通道。
- 分类:片内、系统(CPU、主存、IO设备之间的信息传输线)、通信
- 总线性能指标
- 总线宽度、总线带宽、总线复用、时钟同步异步、信号线数
- 为什么要建立总线标准
- 是计算机系统的统一规范,核心目的是解决硬件兼容性、系统扩展性、产业协作等问题。
- 总线控制分类(总线判优、通信控制)
- 判优:集中式(链式、计数器定时、独立请求);分布式
- 通信控制:同步、异步(不互锁、半互锁、全互锁)、半同步、分离式
第三章
- 存储器分类:介质分;存取分;作用分。
- 存储器层次结构
- 主存和缓存:缓解CPU与主存之间的速度不一致的问题
- 主存和辅存:缓解存储系统的容量问题
- 缓存的概念和目的
- 避免CPU和IO设备的争抢
- 访存局部性(指令和数据不是随机存储,而是相对聚集)
- 替换策略
- FIFO、Random:没有用到局部性,不提升命中率;实现简单
- LRU:用到局部性,提升命中率;实现复杂
第四章
- IO与主机的联系方式
- IO设备编址:统一,不统一
- 设备寻址
- 数据传送方式:并行,串行
- 时序联络方式:直接响应,异步使用应答信号,同步使用同步时钟
- 连接方式:辐射式,总线式
- IO与主机的信息交换方式
- IO接口的功能、组成、分类
- 组成:设备选择线、状态线、命令线、数据线
- 功能:选址功能,反映IO工作状态,传送命令,传送数据
- 分类:并行/串行;可编程/不可编程;通用/专用;程序型/DMA型
第五章
- 中断向量地址:定位中断向量表的地址,用于定位中断类型
- 中断服务程序入口地址:定位中断处理程序的起始地址
- 中断服务程序入口地址如何寻找:硬件向量,软件查询
- 中断判优逻辑实现:硬件排队、软件排队
第七章
- 寻址的种类
-
堆栈寻址的概念
- 要求计算机需要有堆栈,分为软堆栈和硬堆栈。以软堆栈为例,可用SP指出栈顶地址,也可用CPU的一个或两个寄存器作为SP,操作数只能通过SP指示的单元中进行存取。
- RISC和CISC的概念和区别
- RISC:使用简化指令集,使每条指令的执行周期更短、逻辑更简单
- CISC:使用复杂指令集,试图用一条指令完成复杂操作
- RISC优点:充分利用VLSI芯片面积;提高运算速度;便于设计,提高可靠性;有效支持高级语言
第八章
- CPU功能:取指令、分析指令、执行指令
- CPU寄存器组成
- 用户可见寄存器:通用寄存器、数据寄存器、地址寄存器、条形码寄存器
- 控制和状态寄存器:MAR、MDR、PC、IR
- 指令周期的概念:执行一条指令的时间。分为:取指周期、间址周期、执行周期、中断周期
-
影响流水线性能的三个因素:结构相关、数据相关、控制相关
-
常见的控制方式
- 同步控制:定长机器周期;不定长机器周期;中央控制和局部控制结合
- 异步控制
- 联合控制
- 人工控制
- 安排微节拍时的注意事项
- 某些微操作的次序不能改变
- 如果被控制对象不同,则尽量安排在同一个节拍中执行
- 如果执行时间不长,则尽量安排在同一个节拍中执行,且允许有先后次序