嵌入式学习笔记01:DSP、MCU、MPU、SOC、FPGA、ARM等概念

一、哈佛结构和冯·诺依曼结构的区别

转自“顺其自然~”博客,链接:https://blog.csdn.net/fuhanghang/article/details/84064530

1、哈佛结构

嵌入式学习笔记01:DSP、MCU、MPU、SOC、FPGA、ARM等概念_第1张图片
  哈佛结构(Harvard architecture)是一种将程序指令储存和数据储存分开的存储器结构。中央处理器首先到程序指令储存器中读取程序指令内容,解码后得到数据地址,再到相应的数据储存器中读取数据,并进行下一步的操作(通常是执行)。程序指令储存和数据储存分开,数据和指令的储存可以同时进行,可以使指令和数据有不同的数据宽度,如Microchip公司的PIC16芯片的程序指令是14位宽度,而数据是8位宽度。

  哈佛结构的微处理器通常具有较高的执行效率。其程序指令和数据指令分开组织和储存的,执行时可以预先读取下一条指令。

  目前使用哈佛结构的中央处理器和微控制器有很多,除了上面提到的Microchip公司的PIC系列芯片,还有摩托罗拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和安谋公司的ARM9、ARM10和ARM11。大多数DSP是哈佛结构的。

2、冯·诺伊曼结构

嵌入式学习笔记01:DSP、MCU、MPU、SOC、FPGA、ARM等概念_第2张图片
  冯.诺伊曼结构(von Neumann architecture),也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的电脑设计概念结构。该结构隐约指导了将储存装置与中央处理器分开的概念,因此依该结构设计出的计算机又称储存程式型电脑

  最早的计算机器仅内涵固定用途的程式。现代的某些计算机依然维持这样的设计方式,通常是为了简化或教育目的。例如一个计算器仅有固定的数学计算程式,它不能拿来当作文书处理软件,更不能拿来玩游戏。若想要改变此机器的程式,你必须更改线路、更改结构甚至重新设计此机器。当然最早的计算机并没有设计的那个可编程化。当时所谓的“重写程式”很可能指的是纸笔设计程式步骤,接着制订工程细节,再施工将机器的电路配线或结构改变。

  而储存程式型电脑的概念改变了这一切。借由创造一组指令集结构,并将所谓的运算转化成一串程式指令的执行细节,让此机器更有弹性。借着将指令当成一种特别型态的静态资料,一台储存程式型电脑可轻易改变其程式,并在程控下改变其运算内容。冯·诺伊曼结构与储存程式型电脑是互相通用的名词,其用法将于下述。而哈佛结构则是一种将程式资料与普通资料分开储存的设计概念,但是它并未完全突破冯.诺伊曼架构。

  储存程式型概念也可让程式执行时自我修改程式的运算内容。本概念的设计动机之一就是可让程式自行增加内容或改变程式指令的内存位置,因为早期的设计都要使用者手动修改。但随着索引暂存器与间接位置存取变成硬件结构的必备机制后,本功能就不如以往重要了。而程式自我修改这项特色也被现代程式设计所弃扬,因为它会造成理解与除错的难度,且现代中央处理器的管线与快取机制会让此功能效率降低。

  从整体而言,将指令当成资料的概念使得组合语言、编译器与其他自动编程工具得以实现;可以用这些“自动编程的程式”,以人类较易理解的方式编写程式;从局部来看,强调I/O的机器,例如Bitblt,想要修改画面上的图样,以往是认为若没有客制化硬件就办不到。但之后显示这些功能可以借由“执行中编译”技术而有效达到。
此结构当然有所缺陷,除了下列将述的冯·诺伊曼瓶颈之外,修改程式很可能是非常具伤害性的,无论无意或设计错误。在一个简单的储存程式型电脑上,一个设计不良的程式可能会伤害自己、其他程式甚或是操作系统,导致当机。缓冲区溢位就是一个典型例子。而创造或更改其他程式的能力也导致了恶意软件的出现。利用缓冲区溢位,一个恶意程式可以覆盖呼叫堆栈(Call stack)并覆写程式码,并且修改其他程式档案以造成连锁破坏。内存保护机制及其他形式的存取控制可以保护意外或恶意的程式码更动。大多数CPU和GPU是冯诺依曼结构的。

二、CPU、DSP、MPU、MCU、SOC、FPGA、ARM等概念

参考资料:

  1. 百度知道 “stm32和cortex m3是什么关系”:https://zhidao.baidu.com/question/178510430.html
  2. 知乎“DSP与MCU与ARM与FPGA有什么区别?”:https://www.zhihu.com/question/278500219/answer/405183375
  3. CSDN“MCU 和 SOC 的区别”:https://blog.csdn.net/qq_34930488/article/details/101054341?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0.no_search_link&spm=1001.2101.3001.4242.1
    4.博客园“ARM cortex三个版本A,R, M之间区别”:https://www.cnblogs.com/hjbf/p/13298964.html

1、CPU(Central Processing Unit)

CPU叫中央处理器,是计算机的核心,其中可以执行指令,可以进行算数和逻辑运算。CPU的种类很多,很多,不同半导体公司有不同的CPU,Intel设计和制造的是一种CPU,英国ARM公司设计的是另一种CPU。设计重点在运算速度追求快,指令效率高。

冯.诺依曼提出的计算机结构是:
计算机=CPU+M+IO+程序。M是存储器,IO是各种输入输出接口。

2、DSP(Digital Signal Process)

DSP叫数字信号处理器。DSP是TI德克萨斯仪器公司设计的一种CPU,其机器指令对数字信号中的卷积、傅里叶变换、乘法、除法等运算很快,最早使用跳转预测,很适合数字信号方面的运算,所以叫数字信号处理器,实际上,它是一种特殊的CPU。

3、MPU (Micro Processor Unit)

MPU叫微处理器(不是微控制器),通常代表一个功能强大的CPU(暂且理解为增强版的CPU吧),但不是为任何已有的特定计算目的而设计的芯片。这种芯片往往是个人计算机和高端工作站的核心CPU。Intel X86,ARM的一些Cortex-A芯片如飞思卡尔i.MX6、全志A20、TI AM335X等都属于MPU。

4、MCU (Micro Control Unit)

MCU叫微控制器,是指随着大规模集成电路的出现及其发展,将计算机的CPU、RAM、ROM、定时计数器和多种I/O接口集成在一片芯片上,形成芯片级的芯片。即MCU=CPU+M+IO(其中的M可以在片外扩展,IO也可以在片外扩展)。比如51,AVR、STM32这些芯片,内部除了CPU外还有RAM、ROM,可以直接加简单的外围器件(电阻,电容)就可以运行代码了。而如x86、ARM这些MPU就不能直接运行代码了,它只不过是增强版的CPU,所以得添加RAM,ROM。

这里解释一下STM32和ARM公司Cortex-M内核之间的关系

Cortex-M3处理器内核是单片机的中央处理单元(CPU)。完整的基于CM3的MCU还需要很多其它组件。在芯片制造商得到CM3处理器内核的使用授权后,**它们就可以把CM3内核用在自己的硅片设计中,添加存储器,外设,I/O以及其它功能块。**不同厂家设计出的单片机会有不同的配置,包括存储器容量、类型、外设等都各具特色。如果想要了解某个具体型号的处理器,还需查阅相关厂家提供的文档。STM32就是意法半导体厂商采用采用CM3内核设计的MCU芯片。

5、SOC(System on Chip)

SOC指的是片上系统,MCU只是芯片级的芯片,而SOC是系统级的芯片,它既MCU(51,avr)那样有内置RAM、ROM同时又像MPU那样强大,不单单是放简单的代码,可以放系统级的代码,也就是说可以运行操作系统(将就认为是MCU集成化与MPU强处理力各优点二合一)。

6、FPGA(Field-programmable gate array)

FPGA叫场可编程门阵列,还有一种CPLD叫复杂可编程逻辑器件,你想象其中有很多,很多零散的与,或,非门电路块,你可以通过编程(或画电路图)把它们连接起来,可以连接组成很复杂的组合逻辑,也可以连接组成很复杂的时序逻辑,以至于可以内部放一个CPU,MCU的硬件。硬件实现逻辑,一定很快。

7、ARM(Advanced RISC Machine,一家公司)

ARM一般指英国ARM公司设计的CPU的IP核(知识产权核),很多芯片厂家基于ARM的CPU的IP核,设计了自己家的MCU、MPU、SOC等(某些ARM芯片中也嵌入了数字信号处理功能)。

ARM内核分为三个版本A,R,M:

1,A系列:顶级主控,在人机互动要求较高的场合,比如pda,手机,平板电脑, GPS等。a系列类似于cpu,与arm9和arm11相对应,都是可以跑操作系统的。linux等。

2,R系列:实时高性能处理器,主要应用在对实时性要求高的场合, 硬盘控制器,车载控制产品。

3,M系列:通用低端,工业,消费电子领域微控制器, 不能跑操作系统(只能跑ucos2),偏向于控制方面,说白了就是一个高级的单片机。

你可能感兴趣的:(mcu,arm,单片机)