CPU设计与结构

冯诺依曼架构


冯诺依曼架构主要特点

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执行程序:

  1. CPU只能执行机器码
  2. 高级语言程序需要编译生成机器码才能执行
  3. CPU所有执行指令都来自存储器
  4. 指令中包含操作和数据
  5. 执行过各需要借助CPU内的寄存器
  6. CPU内部的PC寄存器的特殊作用

条件判断指令处理

为什么以ARM内核作为学习参考:

1.简洁的指令集

2.广泛应用

3.低功耗设计

4.开放的资源

5.系统支持

6.软硬件生态

CPU的循环处理

影响循环处理的部分因素:

  1. 数据依赖性
  2. 分支预测
  3. 寄存器分配

条件循环指令处理

  1. 跳转指令其实就是改变PC寄存器(R15)
  2. 如果要带条件就看CPSR寄存器的NZCV
  3. 条件执行的区域取决于CPSR的条件变化
  4. 指令的条件码根据不同的数据的比较选择

函数调用的底层处理

没有参数的调用与返回

  1. bl 指令同时影响两个寄存器pc(r15) 和 lr(r14)
  2. mov r15,r14 指令将把lr里保存的指令地址恢复到pc中,实现函数返回

函数参数传递

  1. 少于等于三个参数时,直接使用r0,r1,r2存放第 一、第二、第三个参数。
  2. 再多的参数通过保存到栈空间,使用时从栈空间 取出

函数返回数据处理

有返回值,通过r0寄存器传递

寄存器中的数据保存

  1. 为了避免影响,在函数内使用的寄存器,使用前要先保存,使用后返回前要恢复
  2. 如果函数内还要调用函数,要先对lr进行保存, 然后再使用bl 跳转,第二级调用返回后先恢复lr, 再进行第一级调用的返回

数据保存到内存

  1. 先要知道保存到内存的位置(即地址)
  2. 使用STR可以把寄存器的数据保存到指定内存
  3. 使用LDR可以将指定内存中的数据读到寄存器

函数内变量的处理

函数内的常规操作流程

①如果需要,保存必要的寄存器内容
②操作sp,分配需要的内容空间
③运行函数相关功能
④释放分配的空间
⑤恢复保存过的寄存器的值,并使程序返回

栈所分配的空间局部有效

不可以在退出后继续使用,对应的存储空间后续会有别的函数使用

局部变量在函数返回后无法使用

全局变量的特点

①全局变量的定义DCD或DCB

②全局变量的内容会一直存在

③全局变量所有函数都可以访问

④全局变量太多了不方便管理

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇