本文从ARM的发展历史着手,以S3C2440为例与51单片机进行对比分析,详细解析了ARM架构。架构
先来谈一下ARM的发展史:1978年12月5日,物理学家Hermann Hauser和工程师Chris Curry,在英国剑桥创办了CPU公司(Cambridge Processing Unit),主要业务是为当地市场供应电子设备。1979年,CPU公司更名为Acorn计算机公司。编码
80年代中期,Acorn的一个小团队要为他们的下一代计算机挑选合适的处理器,根据他们提供的技术需求,在当时的市场上没法找到合适的处理器,因而Acorn决定本身设计一个处理器。一个小团队仅仅用了18个月就完成了从设计到实现的全过程,这是一台RISC指令集的计算机,叫作Acorn RISC Machine(简称ARM)。后来Acorn公司没落了,而处理器设计部门被分了出来,组成了一家新公司。设计
ARM公司主要设计ARM系列AISC处理器内核,它不生产芯片,只提供IP核。先以一个例子解释一下架构、核、处理器和芯片:S3C2440,这是一款SoC芯片,注意,它不是cpu,2440和咱们熟知的51单片机有点相似,都属于嵌入式,嵌入式的发展到目前经历了三个阶段,分别是SCM、MCU、SoC。51属于SCM或MCU,而2440就属于SoC了,先来看看51单片机的内部结构调试
其内部结构能够简单的分红两部分:cpu和外设。再来看2440的:code
中间的那个arm920t就是它的处理器,处理器和核在我看来在这里是一个概念,只不过一个是硬概念,一个是软概念。这里的920t就既是处理器又是核。而三星作的就是除了这个cpu外其余的东西。blog
那架构呢?再来看一张图。ip
其中左侧的就是架构,右侧的是处理器,也能够叫核。arm首个最成功的cpu是ARM7TDMI,是基于ARMv4的。ARM架构包含了下述RISC特性:内存
读取/储存 架构产品
不支援地址不对齐内存存取(ARMv6内核现已支援)it
正交指令集(任意存取指令能够任意的寻址方式存取数据Orthogonal instruction set)
大量的16 × 32-bit 寄存器阵列(register file)
固定的32 bits 操做码(opcode)长度,下降编码数量所产生的耗费,减轻解码和流水线化的负担。
大多均为一个CPU周期执行。
不一样版本的架构会有所调整。
和三星相同的其余和arm合做的各大厂商一般会把它的CPU和各种外围IP都放到一块儿,而后本身拿着图纸去流片,生产出来的也是一个正方形,下面有不少引脚,这个东西不只包含了CPU,还包含了其余的控制器,这个东西就叫作SOC(system on chip)。从英文来看,所谓的四核SOC什么的,本意就不是单指CPU,而是四核系统。
因此目前各大厂商所作的事情,就是买来ARM的受权,获得ARM处理器的源代码,然后本身搞一些外围IP(或者买或者本身设计),组成一个SOC后,去流片。不一样的SOC,架构不一样(就是CPU如何和IP联系起来,有的以总线为核心,有的以DDR为核心),因此,海思是拥有自主产权的SOC架构。但是,不管任何厂商,再怎么折腾,都没有怎么动过CPU,ARM核心就好好的呆在那里,那就是中央处理器。
目前ARM的产品天梯:
ARM命名规则:
第一个数字:系列名称:eg.ARM七、ARM9
第二个数字:Memory system
2:带有MMU
4:带有MPU
6:无MMU与MPU
第三个数字:Memory size
0:标准Cache(4-128k)
2:减少的Cache
6:可变的Cache
第四个字符:T:表示支持Thumb指令集
D:表示支持片上调试(Debug)
M:表示内嵌硬件乘法器(Multiplier)
I :支持片上断点和调试点
E:表示支持加强型DSP功能
J :表示支持Jazelle技术,即Java加速器
S:表示全合成式