冯诺依曼架构
冯诺依曼架构主要特点
1.以运算单元为中心
2.采用存储程序原理
3.存储器是按地址访问、线性编址的空间
4.控制流由指令流产生
5.指令由操作码和地址码组成
6.数据以二进制编码
冯诺依曼架构
五大组成部分:运算器,控制器,存储器,
输入设备,输出设备
采用二进制表示数据
能自动从存储器中取出指令,处理后执行
现代CPU特点及执行程序
现代CPU特点
1. 多核和多线程
2. 高频率和高性能
3. 能效优化
4. 高级缓存系统
5. 向量化和SIMD指令、虚拟化支持
6. 安全性和可靠性
7. 集成和片上系统(SoC)
现代CPU
结构复杂
制造难度大
运算能力强
应用广泛
计算机的六大类指令:
MOV A,B 赋值
LOAD A,B 装载
STORE A,B 存储
ADD A,B 加和
TEST A 测试
BEQ Z 跳转
CPU执行程序:
- CPU只能执行机器码
- 高级语言程序需要编译生成机器码才能执行
- CPU所有执行指令都来自存储器
- 指令中包含操作和数据
- 执行过各需要借助CPU内的寄存器
- CPU内部的PC寄存器的特殊作用
条件判断指令处理
为什么以ARM内核作为学习参考:
1.简洁的指令集
2.广泛应用
3.低功耗设计
4.开放的资源
5.系统支持
6.软硬件生态
CPU的循环处理
影响循环处理的部分因素:
- 数据依赖性
- 分支预测
- 寄存器分配
条件循环指令处理
- 跳转指令其实就是改变PC寄存器(R15)
- 如果要带条件就看CPSR寄存器的NZCV
- 条件执行的区域取决于CPSR的条件变化
- 指令的条件码根据不同的数据的比较选择
函数调用的底层处理
没有参数的调用与返回
- bl 指令同时影响两个寄存器pc(r15) 和 lr(r14)
- mov r15,r14 指令将把lr里保存的指令地址恢复到pc中,实现函数返回
函数参数传递
- 少于等于三个参数时,直接使用r0,r1,r2存放第 一、第二、第三个参数。
- 再多的参数通过保存到栈空间,使用时从栈空间 取出
函数返回数据处理
有返回值,通过r0寄存器传递
寄存器中的数据保存
- 为了避免影响,在函数内使用的寄存器,使用前要先保存,使用后返回前要恢复
- 如果函数内还要调用函数,要先对lr进行保存, 然后再使用bl 跳转,第二级调用返回后先恢复lr, 再进行第一级调用的返回
数据保存到内存
- 先要知道保存到内存的位置(即地址)
- 使用STR可以把寄存器的数据保存到指定内存
- 使用LDR可以将指定内存中的数据读到寄存器
函数内变量的处理
函数内的常规操作流程
①如果需要,保存必要的寄存器内容
②操作sp,分配需要的内容空间
③运行函数相关功能
④释放分配的空间
⑤恢复保存过的寄存器的值,并使程序返回
栈所分配的空间局部有效
不可以在退出后继续使用,对应的存储空间后续会有别的函数使用
局部变量在函数返回后无法使用
全局变量的特点
①全局变量的定义DCD或DCB
②全局变量的内容会一直存在
③全局变量所有函数都可以访问
④全局变量太多了不方便管理