MCU和MPU
1. 是什么
CPU(Central Processing Unit,中央处理器)发展出来三个分枝,一个是DSP(Digital Signal Processing/Processor,数字信号处理),另外两个是MCU(Micro Control Unit,微控制器单元)和MPU(Micro Processor Unit,微处理器单元)。
*********************单片机属于微控制器,也就是MCU********************************
*******************像ARM9,ARM11,A8,A9就是MPU*******************************
2. 异同
嵌入式MCU单片机集成了嵌入式系统工作所需的逻辑计算内核cpu,存储数据/代码的RAM,EEPROM和Flash,内部互联总线—Crossbar、AMBA(APB、AHB以及AXI bus),定时器资源、中断控制器(INTC,通用GPIO,ADC、DAC和ACMP,段码LCD控制器、TFT LCD控制器,通信接口/控制器—IIC、SPI、USART、CAN等;
当然,MPU中也会集成很多嵌入式系统工作所需的大部分片上外设,但因为其计算单元CPU内核运行速度非常快,所以其一般不会再片内集成系统工作所需的RAM和Flash存储器,而是集成SDR/DDR2/3/4等外部SRAM扩展接口和NAND/NOR Flash扩展接口,用户设计基于MPU的硬件系统时还需选择合适的SRAM和外部Flash才可以保证系统正常工作。
相比较于MCU来说MPU多了两个部件, CACHE与MMU。
CACHE和MMU
1. 是什么
CACHE:高速缓存,是硬件。
MMU:memory management unit,称为内存管理单元,是硬件。
物理地址:(英语:physical address),也叫实地址(real address)、二进制地址(binary address),它是在地址总线上,以电子形式存在的,使得数据总线可以访问主存的某个特定存储单元的内存地址。
虚拟地址:虚拟地址是相对于物理地址来说的。虚拟地址的提出,主要是为了解决在操作系统中,多线程内存地址重复,大进程在小内存运行等问题 , 在32位系统中,虚拟地址空间中有4G,在操作系统中程序中使用的都是虚拟地址
2. 特点,功能
2.1 Cache
Cache存储器:电脑中为高速缓冲存储器,是位于CPU和主存储器DRAM(Dynamic Random Access Memory)之间,规模较小,但速度很高的存储器,通常由SRAM(Static Random Access Memory静态存储器)组成。
就是因为处理器速度相对于内存速度,差距太大,所以就引入了CACHE。
而cache经常与写缓冲器(write buffer)一起使用,使用writer buffer的目的是,将处理器和cache从较慢的对主存的写操作中脱离出来。
当CPU 要访问 cache 时, CPU 送来主存地址,放到主存地址寄存器中。然后通过地址变换部件把主存地址中的块号 B 变成 cache 的块号b,并放到 cache 地址寄存器当中。同时将主存地址中的块内地址 W 直接作为 cache 的块内地址 w装入到 cache 地址寄存器中。如果地址变换成功(通常称为 cache 命中),就用得到的 cache 地址去访问 cache,从 cache 中取出数据送到 CPU 中。如果地址变换不成功,则产生 cache 失效信息,并且接着使用主存地址直接去访问主存储器 。
工作原理:
1.程序要读取内存中地址A数据,然后程序首先以地址A查找Cache,一开始Cache无数据,导致“cache miss”。
2.程序以地址A查找内存,读取数据后,把数据填入cache,称为”cache fill“。
3.程序再次读取内存中A地址数据,这次直接以地址A查找cache,读取数据后直接返回给CPU,不用再去操作内存。
4.重复步骤1,周而复始,直到把cache填满(cache容量一般很小)。此时CPU再访问,就要发生cache替换,即把一些数据替换出去,填充新数据。
2.2 MMC
单片机里没有‘虚拟地址’这个概念,而是‘物理地址’,而在ARM领域,Linux编程的时候,就会涉及到‘虚拟地址’,经过MMU以后才是物理地址。
简单说MMC的作用有两点,地址翻译和内存保护。
具体参考:大神的博文
文档介绍:MMC原理