作为一个入门嵌入式行业的新手,总会对各种各样的名词产生疑惑,混淆很多不同的概念。
举个例子,光是人尽皆知的处理器,都会发展成MCU,MPU,DSP,SOC这些芯片类别。最近在学习ARM,那么首当其冲的三个个疑惑就是:
-
什么是CUP架构。
-
ARM作为一个处理器的架构与其他架构有什么区别
-
为什么大家都选择ARM作为嵌入式处理器?
1、 什么是处理器架构
- 处理器架构总会让我这种小白和计算机体系结构搞迷糊,把ARM、X86、MIPS和冯诺伊曼,哈佛结构混为一谈。事实上计算机体系结构我们在大学时就已经有过很详尽的介绍,哈佛结构和冯诺依曼结构我们也有比较清晰的认识,二者的区别主要是在于数据是分开存储还是共用一个储存器。
- 但是反观处理器架构,我们就没有如此清晰的认识,在大学,我们的计组原理是基于MIPS来学习的,在了解较少时,很容易就会觉得所有的处理器都会和MIPS的结构长一个样,事实似乎也的确如此,处理器执行一条指令总会执行三个动作,取指,分析,执行。这是一个几乎不变的策略,无论是哈佛结构也好,冯氏结构也好,总会执行这三个步骤。而所说的处理器体系不同主要是在取指,分析,执行的这三个阶段的具体实现策略的不同,例如分析和执行的阶段,ARM公司有自己的RISC指令集,而X86是采用传统的CISC指令集,也就是说,对于一个操作,二者的机器码是不同的。
- 想象一下,如果要设计出一个处理器,最主要最首先的任务就是有自己的指令集,来规范这个处理器的标准操作,而处理器的架构简而言之,就是一堆电路,用来去完成相应的指令操作。
2、 ARM作为一个处理器的架构与其他的处理器架构有什么区别
- 首先我们知道了各个厂商的指令集是不一样的,那为什么不能有统一的,标准的,规范的指令集来对所有的处理器架构进行整合呢?
- 首先对CISC和RISC体系结构做一个简单的比较。传统的CISC结构有其固有的缺点,即随着计算机技术的不断发展,复杂的指令集不断引入,为了支持这些复杂的指令,计算机的结构势必会变得越来越复杂,然而,在CISC指令集中,其使用频率却相差悬殊,80%是重复使用20%的指令,而另外的80%的指令只占20%,这显然是不合理的。所以,1979年美国加州大学伯克利分校提出了RISC的概念,即精简指令集。RISC并非只是简单的去减少指令,而是着重去使计算机更加简单合理高效的提高运算速度。
- 所以各个厂商在设计之初,就分为了CISC和RISC两大阵营,而例如ARM和MIPS都属于RISC,但两者又更有不同,各有优点和使用优势,所以相共存到现在都是市场的选择。其次,根据芯片的应用范围不同,不可能有完全统一的指令集使所有芯片兼容,例如DSP和MCU两种芯片的指令集大部分不可兼容。而且还有一点原因是,各家厂商的指令集不断发展更新换代,也成为了一支一支不可撼动的技术体系,融合与整合也变得十分不可能。
3、 ARM为什么被大家选择作为嵌入式处理器呢
- ARM之所以被市场认同并广泛作为嵌入式处理器的选择最主要是英文其低成本,低功耗的两个特性十分满足嵌入式开发的需要。是嵌入式领域公认的在领域内领先的32位嵌入式RISC微处理器结构。到目前为止,ARM体系结构发展并定义了八种不同的版本。需要提到的是例如ARM7和ARM9,ARM7使用冯诺依曼结构,而ARM9使用哈佛结构,这些结构上的差异除了性能以外都是对程序员不可见的。
-
总而言之,不同的处理器之间都只有一个功能,完成固定的任务集,而不同的是这个任务集的数量和复杂度,以及完成任务的方式。我们不仅可以从不同种类的芯片中看到此现象,例如DSP芯片,和普通的MCU芯片比较,同是完成一个乘法任务,经过特殊设计的DSP芯片可以在一个流水线周期内完成,而MCU则不行。这种现象甚至还可以在同一体系的处理器中看到,例如ARM7是3级流水线技术,而ARM9是五级流水线技术。这对于汇编程序员来讲,都是不可见的。