知识点
第一章
-国外计算机发展
1.电子管计算机(1946—1958 年)
2.晶体管计算机(1958—1964 年)
3.集成电路计算机(1964—1971 年)
4.超大规模集成电路计算机(1971 年至今)
第二章
一、机器码基本概念
用二进制的0/1表示符号位(0表正、1表负)+数值位的编码形式,称为机器码(机器数),常用定点数机器码包括:原码、反码、补码。
二、原码
1. 编码规则
- 正数:符号位为
0,数值位与真值的数值位一致; - 负数:符号位为
1,数值位与真值的数值位一致。
2. 定点数原码公式
- 定点小数(形式:(x_0x_1x_2\cdots x_n),(x_0)为符号位):
[
[x]_{\text{原}} = \begin{cases}
x & 0\leq x < 1 \
1+|x| & -1 < x \leq 0
\end{cases}
] - 定点整数(形式:(x_0x_1x_2\cdots x_n),(x_0)为符号位):
[
[x]_{\text{原}} = \begin{cases}
x & 0\leq x < 2^n \
2^n+|x| & -2^n < x \leq 0
\end{cases}
]
3. 0的表示
原码中0有两个编码:([+0]{\text{原}}=0000\cdots0),([-0]{\text{原}}=1000\cdots0)。
4. 特点
- 优点:表示直观,仅需符号位加数值绝对值;
- 缺点:存在两个“机器0”,加减法运算复杂(需判断符号、比较大小),仅用于浮点数尾码。
三、反码(又称1的补码)
1. 编码规则
- 符号位与原码一致(0表正、1表负);
- 正数:反码与原码完全相同;
- 负数:反码的数值位是真值数值位逐位取反。
示例
- (x=+0.1101),([x]_{\text{反}}=0.1101);
- (x=-0.1111),([x]_{\text{反}}=1.0000)。
四、补码(又称2的补码)
1. 模的概念
模(模数)是数值计量系统的范围(记为(\text{mod }M)),超过模的部分会自动舍弃。
- 例:时钟模为12,(16 \equiv 4\ (\text{mod }12));(-8 \equiv +4\ (\text{mod }12))(即-8的补码是4)。
2. 定点小数补码定义
形式:(x_0x_1x_2\cdots x_n)((x_0)为符号位),模为2,公式:
[
[x]_{\text{补}} = \begin{cases}
x & 0\leq x < 1 \
2+|x| & -1 \leq x < 0
\end{cases}
]
3. 负数补码的简便求法
- 反码法:符号位为1,数值位取反后末位加1。
例:(x=-1000),先取反得10111,加1后([x]_{\text{补}}=11000)。 - 扫描法:符号位为1,对数值位从右到左扫描,右起第一个1及右边的0保持不变,其余位取反。
例:(x=-1000),数值位从右找第一个1(对应“1000”的最后一位1),左边位取反,得([x]_{\text{补}}=11000)。
4. 补码求真值
- 符号位为0:真值为正,数值位不变;
- 符号位为1:真值为负,数值位用反码法/扫描法还原(取反+1,或扫描取反)。
四、补码(又称2的补码)
3. 负数补码的简便求法
(1)反码法
- 规则:符号位固定为1,数值位先对真值的数值位逐位取反,再对结果末位加1。
- 步骤示例:
已知 (x=-1000)(整数):
① 真值数值位:1000;
② 逐位取反:0111;
③ 末位加1:0111 + 1 = 1000;
④ 加上符号位1,得 ([x]_{\text{补}}=11000)。
(2)扫描法
- 规则:符号位固定为1,对真值的数值位从右到左扫描,找到右起第一个“1”,该“1”及它右边的0保持不变,其余位(左边部分)逐位取反。
- 步骤示例:
已知 (x=-1000)(整数):
① 真值数值位:1000;
② 从右扫描,找到第一个“1”(即数值位的最后一位1);
③ 该“1”及右边的0(此处无0)保持不变,左边位(前三位)取反:1000的前三位是“100”,取反为“011”;
④ 组合后数值位为“1000”,加上符号位1,得 ([x]_{\text{补}}=11000)。
第三章
一、溢出的概念
因计算机字长固定,数据表示范围有限,运算结果超出对应数据类型的表示范围时,称为溢出。
- 正溢(正向溢/上溢):两个正数相加,结果符号位为负(或正数结果的绝对值超范围);
- 负溢(负向溢/下溢):两个负数相加,结果符号位为正(或负数结果的绝对值超范围)。
二、溢出检测方法
1. 符号位一致性检测法
- 适用场景:仅同符号数相加时可能溢出。
- 核心逻辑:“正正得负”“负负得正”时判定溢出。
- 逻辑表达式((X_f/Y_f)为操作数符号位,(S_f)为结果符号位,(V=1)表示溢出):
- 加法:(V = X_f Y_f \overline{S_f} + \overline{X_f} \overline{Y_f} S_f)
- 减法:需用([-y]_{\text{补}})的符号位参与,表达式为(V = X_f \overline{Y_f} S_f + \overline{X_f} Y_f \overline{S_f})
2. 进位一致性检测法
- 核心依据:最高数据位的进位((C_d))与符号位的进位((C_f))是否一致。
- 逻辑:(C_d \neq C_f)时判定溢出;(C_d = C_f)时无溢出。
3. 变形补码(双符号位补码)检测法
- 变形补码规则:用两位符号位表示符号,正数为“00”、负数为“11”(第1符号位是真实符号)。
- 溢出判断:
- 结果符号位为“01”→ 上溢(正向溢);
- 结果符号位为“10”→ 下溢(负向溢);
- 结果符号位为“00/11”→ 无溢出。
- 逻辑表达式:(V = S_{f1} \oplus S_{f2})((S_{f1}/S_{f2})为结果的两位符号位,异或为1则溢出)。
要不要我帮你整理成溢出检测方法的对比表格,更直观区分三种方法的逻辑和特点?
第四章
→ 表示数据“1”;
- 电容无电荷 → 表示数据“0”。
二、单管DRAM的工作原理(读操作流程)
读操作需经历5个步骤,且读/写操作可同步实现行刷新:
- 预充操作:预充电路将位线预充至(V_{CC}/2),加速后续读取过程;
- 访问操作:行选通信号使MOS管导通,存储电容与位线寄生电容进行电荷重分配,通过位线电压差区分“1”(略高于(V_{CC}/2))和“0”(略低于(V_{CC}/2));
- 信号检测:读出放大电路(跷跷板电路)将微弱电压差放大为稳定的“1”(高电平)/“0”(低电平);
- 数据恢复:位线高电平给存储电容充电,恢复其电荷(避免数据丢失),同时完成同一行的刷新;
- 数据输出:列选通信号使位线上的稳定数据输出到外部。
三、DRAM的刷新(因电容电荷会泄漏,需定期补充)
1. 核心概念
- 最大刷新周期:电容电荷泄漏前必须完成刷新的时间(常见2ms、4ms、8ms);
- 刷新逻辑:按“行”刷新,刷新地址由刷新地址计数器生成(如256行对应8位计数器)。
2. 三种刷新方式(解决CPU访问与刷新的争用问题)
| 刷新方式 | 操作逻辑 | 优点 | 缺点 |
|---|---|---|---|
| 集中刷新 | 2ms内前3872个周期做读写/保持,最后128个周期集中刷新所有行 | 读写过程不受刷新干扰,速度快 | 存在“死区”(128个周期内CPU无法访问) |
| 分散刷新 | 存储周期拆分为“读写段+刷新段”(总周期1μs),每128个周期刷新整个存储器 | 无“死区” | 刷新频繁,降低系统整体速度 |
| 异步刷新 | 将2ms拆为128个15.5μs段,每段最后0.5μs刷新1行 | 兼顾时间利用与系统速度,效率高 | - |
四、DRAM与SRAM的核心区别
| 对比维度 | SRAM | DRAM |
|---|---|---|
| 单元结构 | 6个MOS管/单元 | 1个MOS管+1个存储电容/单元 |
| 存储原理 | 依赖MOS管导通/截止 | 依赖电容电荷状态 |
| 刷新需求 | 无需刷新 | 需定期刷新(电容电荷泄漏) |
| 读写速度 | 快 | 慢(电容充放电耗时) |
| 存储密度 | 低 | 高 |
| 功耗 | 高 | 低 |
| 成本 | 高 | 低 |
| 典型用途 | 高速缓存(Cache) | 计算机主存 |
第五章 指令系统
一、指令寻址方式
用于确定下一条要执行的指令地址,分为2种:
-
顺序寻址
- 逻辑:程序指令按顺序存于主存,通过程序计数器(PC)自动递增获取下一条指令地址(如32位机中
PC = PC + 4,“4”是指令字节长度)。 - 适用场景:无分支的顺序执行程序。
- 逻辑:程序指令按顺序存于主存,通过程序计数器(PC)自动递增获取下一条指令地址(如32位机中
-
跳跃寻址
- 逻辑:程序分支/转移时,PC值由指令的地址字段直接设定(而非PC递增),改变执行顺序。
- 适用场景:条件转移、无条件转移指令(如JMP指令)。
二、操作数寻址方式
用于确定操作数的有效地址(EA),常见类型如下:
| 寻址方式 | 核心逻辑(有效地址EA) | 特点 & 适用场景 | 示例(x86) |
|---|---|---|---|
| 立即寻址 | 操作数=形式地址D(S=D) |
取数快;操作数范围受D位宽限制;用于赋初值 | MOV EAX, 2008H(给EAX赋2008H) |
| 直接寻址 | EA=D(D是主存地址) |
地址直观;寻址范围受D限制、灵活性差 | MOV EAX, [2008H](取2008H主存单元内容到EAX) |
| 寄存器寻址 | EA=D(D是寄存器编号) |
无需访存、速度快;地址码短;寄存器数量有限 | MOV EAX, ECX(取ECX内容到EAX) |
| 间接寻址 | EA=(D)(D是主存单元,其内容是操作数的EA) |
寻址范围大、灵活;需两次访存,速度慢 | MOV EAX, @2008H(取2008H单元指向的主存内容) |
| 寄存器间接寻址 | EA=R[D](D是寄存器编号,寄存器内容是主存地址) |
仅需一次访存,比间接寻址快;扩展寻址范围 | MOV AL, [EBX](取EBX指向的主存内容到AL) |
| 相对寻址 | EA=PC + D(PC是下一条指令地址) |
程序可“浮动”(与指令相对位置固定);用于分支转移 | 分支指令中通过PC+偏移量定位目标地址 |
| 变址寻址 | EA=变址寄存器内容 + D |
变址寄存器可变、D是基准;用于数组/线性表的批量访问 | 循环访问数组时,通过变址寄存器递增遍历元素 |
| 基址寻址 | EA=基址寄存器内容 + D |
基址寄存器固定、D可变;用于程序重定位、扩展寻址范围;面向系统 | 多道程序中,通过基址寄存器实现虚拟地址→物理地址 |
| 堆栈寻址(补充) | EA=栈顶指针(SP) |
操作数存于堆栈,自动管理地址;用于子程序调用、中断、数据暂存 | PUSH EAX(EAX内容压栈)、POP EBX(栈顶内容弹到EBX) |
要不要我帮你整理成操作数寻址方式的速记卡片,方便你快速区分每种方式的核心特点?
第六章 中央处理器
1. 程序计数器(Program Counter,PC)
- 别名:Intel x86系列中称为指令指针寄存器(Instruction Pointer,IP)
- 核心功能:保存下一条待执行指令的字节地址
- 关键特点:
- 位宽与主存地址总线位宽一致;
- 程序顺序执行时,PC值通过“当前PC值 + 当前指令字节长度”更新(由加法器实现);
- 程序分支/跳转时,PC值由分支指令提供的目标地址直接改写,实现执行流程切换。
2. 存储器地址寄存器(Memory Address Register,AR)
- 别名:简称地址寄存器
- 核心功能:暂存CPU访问主存时的单元地址(取指令、读写数据前,需将目标地址送入AR)
- 关键特点:
- 位宽与主存地址总线位宽一致;
- 并非CPU必备组件,部分计算机可直接将地址加载到地址总线完成访存。
3. 存储器数据寄存器(Memory Data Register,DR)
- 别名:简称数据寄存器
- 核心功能:作为CPU与主存的缓冲部件,存放从主存读出的数据,或待写入主存的数据
- 关键特点:
- 数据位宽与机器字长相同;
- 可兼作运算器(ALU)的操作数、运算结果/中间结果暂存器,减少主存访问次数;
- 并非CPU必备组件,具体依赖CPU硬件结构。
4. 指令寄存器(Instruction Register,IR)
- 核心功能:保存当前正在执行的指令
- 关键特点:
- 位宽与指令字长度一致;
- 指令字会送入指令译码器(ID)解析为指令译码信号,其地址码部分会生成目标地址/数据,配合控制部件完成指令执行。
这些寄存器是CPU实现“取指-译码-执行”指令周期的核心支撑,负责衔接主存、运算部件与控制逻辑的信息流转。
第七章
微程序基本
作业重点
第二章 第3题
第四章 第1.2题 平均访问时间,效率
第五章 第1
第六章 第1