基础

计算机基本组成

  • 计算机系统包括:计算机硬件和计算机软件

  • 软件:应用软件系统软件操作系统、语言处理程序、数据库管理系统等)

  • 硬件:主机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接口等结构的总线
    • 分为:数据总线、地址总线、控制总线(传输控制信号和时序信号
  • 通信总线:计算机之间或其他设备的总线
  • 总线结构:单总线(绿)、双总线(绿+白)、三总线(绿+白+黄)
  • 多总线的目的:虽然总线利用率变低,但设备的吞吐量变高

image-20250620213247665

1. 概述

  • 宽度
  • 带宽(数据传输率):
  • 带宽=传输Byte数/t = 数据总线宽度 / CPU执行时间
    • 如果数据总线为32bit,则一次数据传输为32b=4B,不是2^32bit
  • 单位:Byte/s

2. 仲裁(判优)

  • 分类:集中式(设置一个仲裁器)、分布式(由总线各个部件或设备来决定)

  • 集中式仲裁的优先方式:链式查询、计数器定时、独立请求

  • 链式查询

  • image-20250621142144784

  • 步骤

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

  • 计数器定时

  • image-20250621142757413

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

  • 独立请求

  • image-20250621143859590

  • 步骤
    • 首先设备将$BR_i$置高,然后仲裁器将对应序号加入排队器中
    • 每一次仲裁器从排队器中取出一个序号,并置BG为高,对应设备获得总线
  • 排队器的优先级:根据设备优先来指定排队电路
  • 优缺点:响应时间快,最动态优先级;线数最多,电路最复杂

3. 总线通信(即确定时序/定时)

  • 分类:同步、异步、半同步、周期分裂
  • 同步总线:有总线时钟(由最慢的设备产生),周期长度固定
  • 适用于设备速度差不多的情况
  • 异步总线:无总线时钟(由握手协议确定时序),周期长度不固定
  • 握手分类:不互锁(自动撤销valid)、半互锁(ready置高再撤销valid)、全互锁(ready置高再撤销valid,valid撤销后再撤销ready)
  • image-20250621145023438
  • 半同步:有总线时钟(由最慢的设备产生),有wait线(由握手协议产生),周期不固定

存储器

1. 存储器层次结构

  • 存储器的矛盾:容量大、速度快、成本低的矛盾
  • 解决矛盾:采用多级存储器体系结构
  • 两级存储:内存(cpu可直接访问)+外存(cpu不可直接访问)
  • 内存的特点是:容量小、速度快、成本高
  • 三级存储:内存(cache+主存)+外存(辅存)
  • cache的目的:提升访问主存的速度,解决cpu和主存的速度匹配问题
  • 存储系统层次
  • image-20250621161553466

2. 主存概念

  • 单元:存储器的一行
  • 按字节编址的存储单元:一行存储一个字节
  • 按字编址的存储单元:一行存储一个字

3. 主存性能指标

  • 存储容量:KMGT(以2为基),可表示为行(存储单元数)*列(存储单元大小)
  • 存取时间:一次读/写操作的时间
  • 存取周期:连续读写过程中,一次完整的存取操作的时间
  • 存取周期=连续两次存取的最小时间间隔=存取时间+恢复时间
  • 所以,存取周期>存取时间
  • 存储带宽:单位时间存储器存取的信息量

4. 半导体存储芯片

  • RAM:掉电丢失,可读可写,速度快
  • ROM:掉电不丢失,ROM只读,速度慢
  • PROM、EPROM、EPPROM:可编程写入
  • Flash:可随机写入

  • SRAM:二维表,分为行地址译码和列地址译码,一个存储位元=一个触发器(1bit)。

  • DRAM:同上,行/列地址分时复用,只有一个译码器,存储位元需要刷新(由计数器控制),一个存储位元=一个电容(1bit)
  • DRAM刷新的原因:DRAM的电容会衰减,需要定时恢复补充
  • 刷新方式:集中式、分散式、异步式
    • 集中式:多次读写时间+集中恢复时间(死区)
    • 分散式:单次读写时间+单次恢复时间
    • 异步式:折中方案

5. 存储扩展

6. 提高访存速度

  • 芯片技术:协议(突发传输),芯片(SDRAM技术、CDRAM技术)
  • 结构技术:空间并行(双端口存储器),时间并行(多体交叉存储器)
  • 系统结构技术:分层存储结构(Cache、虚拟存储器)

  • 双端口存储器:使用左右两套读写电路,内部有一个仲裁器

  • 多体交叉存储器:将连续的数据存放在不同的存储体中,这样读数据时,可以由多个存储体同时输出
  • image-20250621164724461
  • 然而实际上,存储体无法做到同时输出,因为每个存储体启动需要时间
    • 因此存取周期为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接口
  • image-20250621214551825
  • 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
  • image-20250621230512665
  • 规格化浮点数(假设为单精度)的真值表示为:$(-1)^S\times(1.M)\times2^{(E-127)}$

2. 定点数计算

  • 补码加减法

  • [X+Y]补=[X]补+[Y]补

  • [X-Y]补=[X]补-[Y]补=[X]补+[-Y]补(将减法变为加法)

  • 溢出检测:设置两个符号位

  • 原码->变形原码->变形补码:正数两个符号位为0,负数两个符号位为1

  • image-20250621232648004

  • 原码乘法(使用异或)

  • 符号位计算:符号位异或

  • 非符号位计算:绝对值异或
    • 比如: image-20250621234337049
  • 符号位和非符号位组合

3. 浮点数计算

  • 单精度规格化浮点数的加减法:略

指令系统

1. 指令

  • 指令格式:[操作码,地址码]
  • 操作码
  • 分类:固定长度,可变长度
  • 可变长度:image-20250621234839444
  • 地址码:操作数或地址(寄存器编号,外设端口地址,内存地址)
  • 分类:单地址、二地址、三地址、四地址
  • 单地址:[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
  • 指令周期的概念:执行一条指令的时间。分为:取指周期、间址周期、执行周期、中断周期
  • 影响流水线性能的三个因素:结构相关、数据相关、控制相关

  • 常见的控制方式

  • 同步控制:定长机器周期;不定长机器周期;中央控制和局部控制结合
  • 异步控制
  • 联合控制
  • 人工控制
  • 安排微节拍时的注意事项
  • 某些微操作的次序不能改变
  • 如果被控制对象不同,则尽量安排在同一个节拍中执行
  • 如果执行时间不长,则尽量安排在同一个节拍中执行,且允许有先后次序