首先,“嵌入式”这是个概念,没有准确的定义。但是主要思想是一样的,
就是相比较PC机台式电脑
这种通用系统来说,嵌入式系统是个系统可裁剪(基于OS(winCE、linux、vxworks等)
),结构精简,在硬件和软件上都只保留需要的部分,而将不需要的部分裁去,实时性要求高???。所以嵌入式系统一般都具有便携、低功耗、性能单一等特性。如示波器,手机,平板电脑,全自动洗衣机,路由器、数码相机,这些设备中,虽然看不到台式机的存在,但是都有一个或多个嵌入式系统在工作。
然后,
MCU、DSP、FPGA这些都属于嵌入式系统的范畴,是为了实现某一目的而使用的工具。
MCU经过这么多年的发展,早已不单单只有冯诺依曼/普林斯顿结构的51了,性能也已得到了很大的提升。因为MCU必须顺序执行程序,所以适于做控制,较多地应用于工业。
而ARM本是一家专门设计MCU的公司,由于技术先进加上策略得当,这两年独霸单片机市场
。ARM的单片机有很多种类,从低端M0(小家电)到高端A8、A9(手机、平板电脑)都很吃香,所以也不是ARM的单片机不一定上操作系统。
单片机和DSP都有自己的精简指令集???,不加操作系统也可以跑。
DSP叫做数字信号处理器digital signal processor,它的结构与MCU不同,加快了运算速度(由于硬件乘法器和哈弗总线),突出了运算能力。可以把它看成一个超级快的MCU。低端的DSP,如C2000系列,主要是用在电机控制上,不过TI公司好像称其为DSC(数字信号控制器)一个介于MCU和DSP之间的东西。高端的DSP,如C5000/C6000系列,一般都是做视频图像处理和通信设备这些需要大量运算的地方。
为什么DSP硬件乘法器和哈弗总线运算速度快?
数据说明:
FPGA叫做现场可编程逻辑阵列,本身没有什么功能,就像一张白纸,想要它有什么功能完全靠编程人员设计。如果你够NB,你可以把它变成MCU,也可以变成DSP。由于MCU和DSP的内部结构都是设计好的,所以只能通过软件编程来进行顺序处理,而FPGA则可以并行处理和顺序处理???所以比较而言速度最快。
fpga以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。
为什么MCU、DSP和FPGA会同时存在?
因为MCU、DSP的内部结构都是由IC设计人员精心设计的,在完成相同功能时功耗和价钱都比FPGA要低的多。而且FPGA的开发本身就比较复杂,完成相同功能耗费的人力财力也要多。所以三者之间各有各的长处,各有各的用武之地。但是目前三者之间已经有融合的态势,ARM的M4系列里多加了一个精简的DSP核,TI的达芬奇系列本身就是ARM+DSP结构,ALTERA和XINLIX新推出的FPGA都包含了ARM的核在里面。所以三者之间的关系是越来越像三基 {MOD}的三个圆了。
一句话以蔽之“你中有我,我中有你”。
单片机通指8位、16位、32位CPU含常用外围设备如RAM、Timer、AD、UART等通信接口的控制器MCU,一般主频在100M以下,有几十个厂家生产,型号数万种。
通常无操作系统,用于简单的控制,如电梯,空调等。
80x86是intel公司的微处理器系列。
价格:Intel 奔腾 G4560报价500人民币;英特尔(Intel) i5 8400 酷睿六核报价1800人民币。
晶体管数量:8086有29K个晶体管;Pentium有3.1M个晶体管;Corei7有1.3亿个晶体管。
寄存器数量:8086有8个16位通用寄存器。后来扩展,8个32位的寄存器
The 80386 contains a total of sixteen registers that are of interest to the applications programmer. these registers may be grouped into these basic categories:
1. General registers. These eight 32-bit general-purpose registers are used primarily to contain operands for arithmetic and logical operations.
2. Segment registers. These special-purpose registers permit systems software designers to choose either a flat or segmented model of memory organization. These six registers determine, at any given time, which segments of memory are currently addressable.
3. Status and instruction registers. These special-purpose registers are used to record and alter certain aspects of the 80386 processor state.
在80x86 CPU中进行的所有计算几乎都和寄存器有关。例如,将两个变量相加,把它们的和存入第3个变量中,必须先将其中一个变量装入一个寄存器中,并将第2个操作数和寄存器的值相加,然后将寄存器中的值存入目的变量。寄存器在每次计算中都充当媒介。因此,在80x86汇编语言程序中寄存器是非常重要的。
逻辑运算单元:注意到x86上也有很多硬件运算资源(FPGA的主要资源),如
ALU???
内存:“PC系列微机内存在性质上不完全一致”,80286有24根地址线,内存为2^24=16MB,80386有32根地址线,内存为2^32=4096MB,
CPU由运算器(ALU)、控制器(CU)和内部寄存器(R)三部分组成?
https://blog.csdn.net/the_scent_of_th_soul/article/details/51925440
控制器是全机的指挥中心,它负责把指令逐条从存储器中取出,经译码分析后向全机发出取数、执行、存数等控制命令,以完成程序所要求的功能。控制器包括以下几个部分:
a.指令寄存器IR:用来存放从存储器取出的将要执行的指令码。
b.指令译码器ID:对指令寄存器IR中的指令操作码字段进行译码,以确定该指令执行什么操作。指令通常由操作码和操作数两部分组成。操作码表示该指令完成的操作,操作数表示参加操作的数本身或操作数所在地址。
c.可编程逻辑阵列PLA:用于产生取指令和执行指令所需要的各种微操作控制信号,并经过控制总线CB送往有关部件,使计算机完成相应的操作。
---------------------
PC三种总线:
地址总线AB:在对存储器或I/O端口进行访问时,传送由CPU提供的要访问的存储单元或I/O端口的地址信息。AB是单向总线。
一个CPU有N根地址线,则可以说这个CPU的地址总线宽度为N,这样的CPU可以寻找2的N次方个内存单元。
数据总线DB:CPU与内存或其他器件之间的数据传送是通过数据总线来完成的,数据总线的宽度决定了CPU和外界的数据传送速度。8根数据总线一次可传送一个字节。8088CPU的数据总线宽度为8,8086CPU的数据总线宽度为16。例如,CPU想向内存中写入数据89D8。 因为8088要分两次传送,第一次传送D8,第二次传送89。8086可一次性将数据传入内存。DB是双向总线
控制总线CB:控制总线是一些不同的控制线的集合。有多少根控制总线就意味着CPU提供了对外部器件的多少种控制,控制总线的宽度决定了CPU对外部器件的控制能力。
“
主存(内存)是x86CPU外的存储区域,
堆栈是在主存(内存)中开辟的一片数据存储区”
推论:寄存器是CPU中的资源,没有地址??
“在x86列机中, 8086只有20根地址线, 直接寻址能力为2^20B=1MB, 物理地址编号从0~0FFFFF H。CPU与存储器交换信息必须使用20位的物理地址。 但是,8086 内部却是16位结构, 它里面与地址有关的寄存器全部都是16 位的,因此,它只能进行 16位地址运算, 表示16位地址, 寻找操作数的范围最多也只能是64KB。 为了能表示20位物理地址,8086 的设计人员提出了将主存分段使用的方案: 将 1MB 的存储器按64KB分段, 设置 4 个段寄存器保存当前可使用段的段首址。访问存储单元时,CPU选择某一适当的段寄存器,与本段中某一待访问存储单元的偏移地址相加, 则得到该单元的20位物理地址。寻找操作数的范围就可达到 1MB。
随着x86系列机的发展, 特别是32位CPU的推出, 它已能全面支持32位的数据、指令和寻址方式, 可访问 4GB 的存储空间。 但为了与8086兼容, 一直保留了主存的分段使用技术, 段寄存器也由4个增加至 6个并提供了实方式。”
DSP
DSP(digital signal processor)是一种独特的微处理器,有自己的完整指令系统,是以数字信号来处理大量信息的器件。其最大特点是内部有专用的
硬件乘法器和
哈佛总线结构对大量的数字信号处理的速度快。一个数字信号处理器在一块不大的芯片内包括有控制单元、运算单元、各种寄存器以及一定数量的存储单元等等,在其外围还可以连接若干存储器,并可以与一定数量的外部设备互相通信,有软、硬件的全面功能,本身就是一个微型计算机。DSP采用的是
哈佛设计,即
数据总线和地址总线分开,使程序和数据分别存储在两个分开的空间,允许取指令和执行指令完全重叠。也就是说在执行上一条指令的同时就可取出下一条指令,并进行译码,这大大的提高了微处理器的速度。另外还允许在程序空间和数据空间之间进行传输,因为增加了器件的灵活性。其工作原理是
接收模拟信号,转换为0或1的数字信号,再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,。它的强大数据处理能力和高运行速度,是最值得称道的两大特 {MOD}。由于它运算能力很强,速度很快,体积很小,而且采用软件编程具有高度的灵活性,因此为从事各种复杂的应用提供了一条有效途径。根据数字信号处理的要求,DSP芯片一般具有如下主要特点:
(1)在一个指令周期内可完成一次乘法和一次加法;(2)程序和数据空间分开,可以同时访问指令和数据;(3)片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问;(4)具有低开销或无开销循环及跳转的硬件支持;(5)快速的中断处理和硬件I/O支持;(6)具有在单周期内操作的多个硬件地址产生器;(7)可以并行执行多个操作;(8)支持流水线操作,使取指、译码和执行等操作可以重叠执行。
下图为DSP芯片典型结构,以及典型定点型乘法器data path
关键部件:
乘法器、ALU、(移位)寄存器
注意DSP功能划分,其CPU中不包含存储和总线,core是什么???
典型DSP的CPU参数(TI公司):
典型DSP芯片参数:
DSP存储:
存储空间使用权限:
DSP芯片兼容、一致性问题:同厂商产品可能兼容。
FPGA
其他公司(Xilinx和Altera)FPGA芯片不同型号资源:
其中,基本单元分别为CLB(configurable logic block)和EAB(embedded array block)
在FPGA芯片上搭建一个处理器:《Advanced FPGA Design - Architecture, Implementation, and Optimization-IEEE (2007)》17章
FPGA是(Field ProgrammableGate Array)现场可编程门阵列的缩写,它是在PAL、GAL、PLD等可编程器件的基础上进一步发展的产物,是专用集成电路(ASIC)中集成度最高的一种。FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括
可配置逻辑模块CLB(ConfigurableLogic Block)、输出输入模块IOB(InputOutput Block)和内部连线(Interconnect)三个部分。用户可对FPGA内部的逻辑模块和I/O模块重新配置,以实现用户的逻辑。它还具有静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改。作为专用集成电路(ASIC)领域中的一种半定制电路,FPGA既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。可以毫不夸张的讲,FPGA能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路,都可以用FPGA来实现。FPGA如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法,或是硬件描述语言自由的设计一个数字系统。通过软件仿真,我们可以事先验证设计的正确性。在PCB完成以后,还可以利用FPGA的在线修改能力,随时修改设计而不必改动硬件电路。使用FPGA来开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA 编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。目前FPGA的品种很多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等。
2006年工艺达到65nm。
FPGA以并行运算为主,
以硬件描述语言(Verilog 或 VHDL)来实现;相比于PC或单片机(无论是冯诺依曼结构还是哈佛结构)的顺序操作有很大区别。
FPGA与指令集微处理器的区别:《Reconfigurable computing_ the theory and practice of FPGA-based computation(2007)》19章
FPGA通常与定制ASIC形成对比:
但是,如果由于应用要求或其他因素的变化而要求使用可编程解决方案,则必须仔细研究应用程序,以确定是否可以使用可编程处理器微处理器或DSP满足性能要求。可编程处理器的代码开发比FPGA或ASIC所需的工作量要小得多,因为用C语言或Java语言开发的软件比用Verilog或VHDL编写并行描述要少得多。
此外,可编程处理器的编码和调试环境要比它们的HDL对应环境丰富得多。微处理器通常也比FPGA便宜得多。如果微处理器能够满足应用要求(性能、功率等),它几乎总是最好的选择。
一般来说,fpgas非常适合于要求极高性能和可重编程性的应用,用于与许多其他设备(所谓的胶逻辑)通信的接口组件,以及用于实现批量硬件系统,使其规模经济可行。它们不太适合将以尽可能大的产量生产的产品,也不适合必须以尽可能小的功率运行的系统。
ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,一个英国的芯片设计公司,但是不生产芯片。只卖知识产权。设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。ARM架构是面向低预算市场设计的第一款RISC微处理器,基本是32位单片机的行业标准,它提供一系列
内核、体系扩展、微处理器和系统芯片方案,四个功能模块可供生产厂商根据不同用户的要求来配置生产。由于所有产品均采用一个通用的软件体系,所以相同的软件可在所有产品中运行。目前ARM在手持设备市场占有90%以上的份额,可以有效地缩短应用程序开发与测试的时间,也降低了研发费用。ARM是32位的单片机,其内部硬件资源的性能较高,可以加载操作系统成为其主要特点,有了操作系统,就可以像pc机那样多任务实时处理,就是同一时间内能完成多个任务,而且不会互相影响。
例如:iPhone 5s,CPU是
A7
寄存器有6000多位(31个64位寄存器,加上32个128位寄存器)
iPhone 5s的内存是1GB,约为80亿位(bit)。这意味着,高性能、高成本、高耗电的设计可以用在寄存器上,反正只有6000多位,而不能用在内存上。因为每个位的成本和能耗只要增加一点点,就会被放大80亿倍。
单片机(以51为例)
“51单片机是对所有兼容Intel 8031
指令系统的
单片机的统称。该系列单片机的始祖是
Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是
ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。”
ROM、RAM、flash、时钟晶振、接口资源
“”
区别:
ARM具有比较强的事务管理功能,可以用来跑界面以及应用程序等,其优势主要体现在控制方面;ARM是32位的单片机,其内部硬件资源的性能较高,可以加载操作系统成为其主要特点,有了操作系统,就可以像pc机那样多任务实时处理,就是同一时间内能完成多个任务,而且不会互相影响。
DSP主要是用来计算的,比如进行加密解密、调制解调等,优势是强大的数据处理能力和较高的运行速度;
FPGA可以用VHDL或verilog HDL来编程,灵活性强,由于能够进行编程、除错、再编程和重复操作,因此可以充分地进行设计开发和验证。当电路有少量改动时,更能显示出FPGA的优势,其现场编程能力可以延长产品在市场上的寿命,而这种能力可以用来进行系统升级或除错。
DSP VS FPGA
DSP是通用的信号处理器,用软件实现数据处理;FPGA用硬件实现数据处理。DSP成本低,算法灵活,功能性强,而FPGA的实时性好,成本较高,FPGA适合于控制功能算法简单且含有大量重复计算的工程使用,DSP适合于控制功能复杂且含有大量计算任务的工程应用。
DSP是软件实现算法,FPGA是硬件实现算法,所以FPGA的处理速度会更高;FPGA比DSP快的一个重要原因是FPGA可以实现并行运算,而DSP由于硬件结构条件限制,主要还是依靠软件来提取指令执行,理解为还是串行执行的【大嘴说说:DSP所谓的并行执行主要还是得自己开通软件流水,或者说是自己写并行代码,而非硬件结构本身】。
集成电路设计等级:
参考文献:
1、《80x86汇编语言程序设计教程(清华黑皮版)》;
2、[80X86汇编语言程序设计].王元珍.文字版
3、《DSP-Processor-Fundamentals-Architectures-and-Features》
4、《深入理解计算机系统》第三版 第四章
5、《新概念51单片机C语言教程.入门、提高、开发》
6、《DOS原理与结构》
7、《INTEL 80386 PROGRAMMER'S REFERENCE MANUAL 1986》
8、《Dsp-Digital-Signal-Processing-With-Fpga》
9、《DSP-Processor-Fundamentals-Architectures-and-Features》
10、《Advanced FPGA Design - Architecture, Implementation, and Optimization-IEEE (2007)》
11、《Reconfigurable computing_ the theory and practice of FPGA-based computation(2007)》
价格rmb
速度指标(MIPS百万条指令每秒,晶振频率)
寄存器
存储器
应用
特 {MOD}
功耗/芯片寿命
80x86
PC
冯诺依曼结构
ARM
主频百M~几G
手机、平板电脑
哈佛总线
比x86功耗低
DSP
50~200MIPS
图像处理
8051
1~10MIPS
工业控制
FPGA
flash,EEPROM
原型设计,相对ASIC价格低
FPGA对半导体产业最大的贡献创立了无生产线(Fabless)模式
FPGA功耗高/CPLD相对功耗低
MIPS计算公式:
如果说的是CPU、GPU这样的芯片,
寿命其实是非常长的,但它也不是一个可以永久工作的芯片,因为即使是在正常使用中,CPU中的电子通过动能不断冲击着电路中的金属原子,这个过程中会导致其一小部分脱离,也就是常说的“电子迁移”。尽管很长一段时间来看这种影响很微小,但是随着CPU工作时间的增长,电子迁移就会开始导致电路变形,发生短路漏电和干扰等现象,再接下来可能就会导致CPU运算出错、功能异常进而彻底报销。电子迁移现象会随着CPU工作频率和工作温度的提高更加严重,也就是说为了CPU的寿命和稳定,厂商一般不推荐用户对CPU芯片大幅度超频,
超频所带来的频率增加和温度提高都会折损CPU的寿命。对于品质合格的CPU芯片来说8-10年。
如果说是
SSD上用的闪存芯片,那就有相对有限的寿命了,闪存芯片主要分为SLC、MLC和TLC三种,SLC寿命最长,速度最快,但是成本最高,TLC则相反。闪存的寿命磨损就在于闪存单元的写入-擦除,一般来说,SLC闪存可进行100000次写入-擦除循环,MLC可进行10000次左右。不要觉得可怕,得益于越来越先进的主控芯片,日常使用下正常的闪存芯片没那么容易用坏,即使是TLC闪存,寿命达到8年以上也没有问题,使用几年后一般都会掉速,不过实际影响并不大。其实相比闪存芯片,SSD上的主控反而更有可能先坏掉。所以我们不用太在意闪存芯片的寿命,一般在你换下一个SSD或者手机时,它就直接淘汰掉了。不过对于7*24小时工作的服务器来说,非常不建议用SSD,因为在这种高强度工作环境下的闪存芯片寿命会大打折扣,即使是机械硬盘,用个两三年挂掉的几率也很高。
至于电脑上的内存芯片(
RAM),由于其电容存储机制,只要是正常没有缺陷的芯片,寿命非常长,要不然绝大多数内存条都是终身保,只要不是不当超频,静电损坏,人为破坏,正常的内存寿命几乎不用担心。
其实相比电脑各类芯片的寿命,我们更应该关心主板和显卡上电容电感的寿命,电源的品质和整体散热水平,这些往往才是影响电脑寿命的关键。