本文从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的:

  

  中间的那个arm920t就是它的处理器,处理器和核在我看来在这里是一个概念,只不过一个是硬概念,一个是软概念。这里的920t就既是处理器又是核。而三星做的就是除了这个cpu外其他的东西。

  那架构呢?再来看一张图。

  

  其中左侧的就是架构,右侧的是处理器,也可以叫核。arm首个最成功的cpu是ARM7TDMI,是基于ARMv4的。ARM架构包含了下述RISC特性:

  读取/储存 架构

  不支援地址不对齐内存存取(ARMv6内核现已支援)

  正交指令集(任意存取指令可以任意的寻址方式存取数据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.ARM7、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:表示全合成式

最新文章

  1. Media Queries使用方法
  2. centos6.x开机卡死
  3. 个人纪录(初)----Ueditor文本编辑器的引用
  4. [原创]自定义BaseAcitivity的实现,统一activity的UI风格样式
  5. shell 块注释
  6. HDU3466Proud Merchants(贪心&背包)
  7. web页面布局思想
  8. C# Ini文件操作
  9. PHP 错误提示
  10. SqlBulkCopy使用介绍以及注意事项
  11. JAVA的class打包成dll
  12. 容斥原理及SQL in关键字在EF中的应用
  13. jenkins容器权限被被拒绝
  14. kindeditor扩展粘贴图片功能&修改图片上传路径并通过webapi上传图片到图片服务器
  15. Call From master/192.168.128.135 to master:8485 failed on connection exception: java.net.ConnectException: Connection refused
  16. MySQL触发器在建立时,报语法错的问题
  17. jq 通配符,模糊查询
  18. DRF 中使用 级验科技滑动验证
  19. 解决ubuntu中arm-linux-gcc not found
  20. 再次提供一个纯粹通过pl/sql解析json的方法。

热门文章

  1. 12月5日内容总结——JS基础知识及变量常量、基本数据类型、运算符、流程控制、函数、内置对象
  2. 9月21日内容总结——计算机基础知识、typora软件的安装与软件内的部分markdown语法
  3. 9月28日——while循环知识补充、for循环、break及continue生效范围和range方法的介绍
  4. P27_wxss - 全局样式和局部样式
  5. 安卓逆向 创建自己一个SO库
  6. C#/JS 压缩到指定大小的图片 (内存不足问题修改)
  7. PostgreSQL中的row_number() 与distinct用法说明
  8. PostgreSQL函数如何返回数据集
  9. 添加weui-miniprogram
  10. [引擎开发] 深入GPU和渲染优化(基础篇)