1 处理器:微控制器 VS 微处理器
- 微控制器:CPU + 片内内存 + 片内外设
- 微处理器:CPU
注意:
微控制器具有成本低、功耗低等有点,常用于嵌入式系统设计。
对于软件工程师而言,微控制器和微处理器没有任何区别。
2 SoC和CPU的区别
2.1 SoC和CPU
SoC = System on Chip。
芯片的发展方向:从CPU到SoC。
现在已经没有纯粹的CPU了,都是SoC。
ARM出卖的内核其实就是CPU(当然还需要总线),各种外设是半导体厂商自己添加的。
2.2 外设(Peripheral)
外设就是外部设备。
SoC中外设大部分都跑进去了,网卡、音频编解码等个别还经常在外面。
芯片设计的趋势是更大集成度,近年甚至将音视频编解码、DDR都集成进SoC内做成所谓单芯片解决方案,如海思Hi3518E。
裸机学习其实就是学习SoC的内核(CPU,表现为汇编指令集)和各种外设(如串口)。
3 地址总线和数据总线
3.1 CPU和总线示意图
3.2 地址总线和数据总线
CPU通过地址总线寻址,然后通过数据总线与外部设备互换信息。
地址总线的位数决定CPU寻址范围;数据总线的位数决定CPU单次通信能交换的信息数量;
总线的速度决定CPU和外设互换信息的速度。
注意
CPU的地址总线位数和数据总线可以不同(典型代表就是51单片机),但是一般都相同。
CPU的位数指的是数据总线的位数。
32位CPU寻址的范围是4G,所以最多支持4G内存;
数据总线是32位的,所以内存是32位的好,所以编程最好用int···
4 CISC和RISC的区别
4.1 CISC
complex instruction set computer复杂指令集CPU。
CISC体系的设计理念是用最少的指令来完成任务(譬如计算乘法只需要一条MUL指令即可),因此CISC的CPU本身设计复杂、工艺复杂,但好处是编译器好设计。CISC出现较早,至今Intel还一直采用CISC设计。
4.2 RISC
Reduced Instruction-Set Computer精简指令集CPU。
RISC的设计理念是让软件来完成具体的任务,CPU本身仅提供基本功能指令集。因此RISC CPU的指令集中只有很少的指令,这种设计相对于CISC,CPU的设计和工艺简单了,但是编译器的设计变难了。
4.3 CPU设计方式发展
早期简单CPU,指令和功能都很有限。
CISC年代 —— CPU功能扩展依赖于指令集的扩展,实质是CPU内部组合逻辑电路的扩展。
RISC年代 —— CPU仅提供基础功能指令(譬如内存与寄存器通信指令,基本运算与判断指令等),功能扩展由使用CPU的人利用基础架构来灵活实现。
4.4 CISC和RISC指令数对比
一般典型CISC CPU指令在300条左右。
ARM CPU常用指令30条左右。
4.5 发展趋势
没有纯粹的RISC或CISC,发展方向是RISC与CISC结合,形成一种介于2者之间的CPU类型。
5 冯诺依曼结构和哈佛结构
5.1 程序和数据
程序运行时两大核心元素:程序 + 数据。
程序是我们写好的源代码经过编译、汇编之后得到的机器码,这些机器码可以拿给CPU去解码执行,CPU不会也不应该去修改程序,所以程序是只读的。
数据是程序运行过程中定义和产生的变量的值,是可以读写的,程序运行实际就是为了改变数据的值。
5.2 冯诺依曼结构和哈佛结构
程序和数据都放在内存中,且不彼此分离的结构称为冯诺依曼结构。譬如Intel的CPU均采用冯诺依曼结构。
程序和数据分开独立放在不同的内存块中,彼此完全分离的结构称为哈佛结构。譬如大部分的单片机(MCS51、ARM9等)均采用哈佛结构。
优劣对比
冯诺依曼结构中程序和数据不区分的放在一起,因此安全和稳定性是个问题,好处是处理起来简单。
哈佛结构中程序(一般放在ROM、flash中)和数据(一般放在RAM中)独立分开存放,因此好处是安全和稳定性高,缺点是软件处理复杂一些(需要统一规划链接地址等)。