2020-编译原理-Crash Course Computer Science
Crash Course Computer Science
1. 第五讲:算数逻辑单元-ALU
- 计算机目标是计算,有意义的处理数字。
- ALU负责完成计算,基本其他所有的部件都会用到它。
- Eg.ALU Intel 74181:1970年发布时,是第一个封装在单个芯片内的完整的ALU,只可以进行4位计算
- ALU:使用AND、OR、NOT和XOR逻辑门
- 1个算术单元:负责所有数字操作,例如增量计算
- 1个逻辑单元:计算AND、OR或NOT操作
1.1. 算术单元
1.1.1. 半加器
- XOR可以作为一位加法器
- 1+1是特殊的
- 我们使用AND来进行检查进位
- 得到两个门的电路是半加器
1.1.2. 全加器
- 增加一个输入(进位)
1.1.3. 制作:8位行波加法器
- overflow:最后一位溢出
1.1.4. 超前进位加法器
1.1.5. ALU可以做基本操作
1.2. 逻辑单元
检查是否为全0
1.3. ALU的代表
2. 寄存器&内存
- RAM:随机存储器,在有电的时候存储信息
- 持久存储,电源关闭,数据也不会丢失
2.1. 存储1位的单元
- 永久记录1
- 锁存:可以读写
2.2. 门锁
2.3. 多位存储
- 寄存器位宽:可以存储多长数据
- 存储256位只需要513根线
- 使用矩阵,网格存储所有的锁存器,使用仅需要打开对应的行线和列线(使用AND门),允许我们使用一根数据线进行相应操作。
- 一共只需要35根线:
- 一根数据线
- 一根允许写入线
- 一根允许读取线
- 16行线和16列线
- 多路复用器:确定行和列的位置
- 我们使用1-16多路复用器,一个多路复用器给行,一个给列
2.4. 内存特性
- 内存可以任意访问存储位置.
3. CPU
- 指令指示计算机执行相应操作。
- 微体系结构
- 指令表
3.1. CPU执行指令
- 取指令阶段
- 解码阶段:根据指令表,用电路来检查操作码
- 执行阶段:最后将指令地址寄存器+1
- 执行下一条指令
讲解了一个加法过程:Control Unit有一个寄存器先存储结果,避免ALU无限加。
- 时钟来推进操作
- 时钟速度:CPU取指令->解码->执行的速度,动态调整频率(时钟频率)
4. 指令和程序
- 因为可编程,所有CPU是强大的,可以被软件控制的。
- 将之前的部分翻译成更容易理解的语言。
- JUMP指令会结合flag位
- HALT使用区分数据和指令的命令
- 软件实现了硬件不能实现的部分,比如除法。
- 为了可以访问更多的操作码
- 更多位来表示操作码,比如32位或64位。
- 可变长操作码
2020-编译原理-Crash Course Computer Science
https://spricoder.github.io/2021/01/16/2020-Compilation-Principle/2020-Compilation-Principle-Crash%20Course%20Computer%20Science/