ComputerSystems
大约 2 分钟
ComputerSystems
目录
汇编原理
汇编原理
举例
制定一些简单指令
指令 | 代码 | 功能 |
---|---|---|
LOAD_A | 0000 | 将指定内存地址数据加载至寄存器A |
LOAD_B | 0001 | 将指定内存地址数据加载至寄存器B |
ADD | 0100 | 将指定两个寄存器数据相加 |
STORE_A | 1000 | 将寄存器数据存储至制定内存地址 |
汇编代码
LOAD_A 7 0000 0111
LOAD_B 8 0001 1000
ADD A B 0100 0001
STORE_A 15 1000 1111
内存状态
冯诺依曼架构计算机(存储程序计算机),指令和数据都放在内存中
地址 | 内容 | 二进制地址 |
---|---|---|
0 | LOAD_A 7 | 0000 |
1 | LOAD_B 8 | 0001 |
2 | ADD A B | 0010 |
3 | STORE_A F | 0011 |
4 | ||
5 | ||
6 | ||
7 | 8 | 0111 |
8 | 6 | 1000 |
…… | ||
F | (14) | 1111 |
步骤
指令流水线
整体步骤:取指 -> 解码 -> 执行(循环)。有的CPU的流水线可能不止三级
分步步骤(补充:每一行指令完成后IC自动+1,下表中不再赘述这点)
IC | 取指令 | 解码 | 执行 |
---|---|---|---|
0,CPU初始化完成后置为0 | 控制单元到内存地址为0的位置取指令 | 0000 0111 | 执行加载指令,地址中的内容 (8) 到寄存器A |
1 | LOAD_B 8 | 0001 1000 | 执行加载指令,地址中的内容 (6) 到寄存器B |
2 | ADD A B | 0100 0001 | 6和8送往ALU的两端,产生结果14后存回寄存器A |
3 | STORE_A F | 1000 1111 | 执行存储指令,将寄存器A的内容存向指定地址 |
指令集架构
历史扩展
x86
指令集架构起初都是CPU的制造厂商制定的,经典的是Intel提出的x86 Intel制定指令集、设计CPU电路、制造CPU均能自己
公版ARM
后来英国ARM公司推出ARM指令集架构 但是ARM不制造CPU,授权产商可以根据他们提供的电路执行制造CPU。
定制ARM
有能力生产CPU的产商:化为、低通、挨炮、三桑等公司 他们会根据自己的需求,改进公版的设计,集成更多模块(如5G基带、图像处理模块等),产出:麒麟、骁龙、A系列、猎户座等产品
SoC
这些集成度很高的产品,称为SoC,超出了传统CPU的定义 像台积电这种产商专注于这些产品的代工 Intel、AMD等产生也在x86架构中集成GPU或IO模块,向着SoC的方向发展。CPU和SoC的界限逐渐变得模糊
RISC-V开源指令集 前面的都是要钱的,这个可以使用该指令集自行设计电路,不需要钱 但如果使用RISC-V官方给出的具体电路设计,这个是要钱的
历史原理
bug计算机缺陷、patch补丁 的由来
- 逻辑电路:开关机
- 机器语言:高低电压 + 打孔纸带
- 汇编语言:用单词来代替一串01序列
- 高级语言