先来谈一下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单片机的内部结构
ARM9 系列微处理器在高性能和低功耗特性方面提供最佳的性能。具有以下特点:
- 5 级整数流水线,指令执行效率更高。
- 提供 1.1MIPS/MHz 的哈佛结构。
- 支持 32 位 ARM 指令集和 16 位 Thumb 指令集。
- 支持 32 位的高速 AMBA总线接口。
- 全性能的 MMU,支持 Windows CE、Linux、Palm OS等多种主流嵌入式操作系统。
- MPU支持实时操作系统。
- 支持数据 Cache 和指令Cache,具有更高的指令和数据处理能力。
ARM9 系列微处理器主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数字摄像机等。
ARM9 系列微处理器包含 ARM920T、ARM922T和 ARM940T 三种类型,以适用于不同的应用场合。
ARM9E系列
ARM9E 系列微处理器为可综合处理器,使用单一的处理器内核提供了微控制器、DSP、Java
应用系统的解决方案,极大的减少了芯片的面积和系统的复杂程度。ARM9E 系列微处理器提供了
增强的 DSP 处理能力,很适合于那些需要同时使用 DSP 和微控制器的应用场合。
ARM9E 系列微处理器的主要特点如下:
- 支持 DSP 指令集,适合于需要高速数字信号处理的场合。
- 5 级整数流水线,指令执行效率更高。
- 支持 32 位 ARM 指令集和 16 位 Thumb 指令集。
- 支持 32 位的高速 AMBA总线接口。
- 支持 VFP9 浮点处理协处理器。
- 全性能的 MMU,支持 Windows CE、Linux、Palm OS等多种主流嵌入式操作系统。
- MPU支持实时操作系统。
- 支持数据 Cache 和指令Cache,具有更高的指令和数据处理能力。
- 主频最高可达 300MIPS。
ARM9 系列微处理器主要应用于下一代无线设备、数字消费品、成像设备、工业控制、存储设备和网络设备等领域。
ARM9E 系列微处理器包含 ARM926EJ-S、ARM946E-S 和 ARM966E-S 三种类型,以适用于不同的应用场合。
ARM920T的结构与特性
三星S3C2440A芯片自称处理器,但其实它是采用了ARM公司设计的ARM920T CPU加上一些其他组件,然后把它们封装在一起形成的一个多功能芯片。这里关注的是ARM920T CPU,下面就去看一看它的内部结构。
mini2440开发板采用了S3C2440A芯片,而S3C2440A芯片又采用了ARM公司设计的ARM920T CPU。上次研究了计算平台—mini2440开发板。发现上面有个叫S3C2440A的黑盒子,并打开了它,发现它里面又有许多黑盒子,并且对其中一些黑盒子做了简要的介绍,如图3-1所示。另外,为了便于阅读,把2-4的图又搬过来,笔者觉得虽然增加篇幅,但是节省了回去翻书的时间。
图就是S3C2440A这个黑盒子内部结构图,其实早已看过,不过上次我们没有继续拆开它里面的黑盒子。其中有个非常重要的黑盒子—ARM920T,它才是这次要关注的重点,下面打开它,看看它里面又有什么,如图3-2所示。
ARM920T里面的黑盒子以及功能单元如下:
1)JTAG:一种调试或者测试芯片的接口,可以通过JTAG接口访问CPU的内部寄存器和挂在总线上的设备,如Flash、RAM等,我们不必过多关注。
2)ARM9TMDI:它才是真正运行程序的。
3)指令、数据MMU:包括两个C13一起处理内存地址映射的。
4)指令、数据Cache:包括写回PATAG RAM、写缓冲,一起完成高速缓存的功能。
5)CP15:这里是用于控制MMU和Cache的,还可以控制别的器件,不同的系统配置下是不同的。
6)外部协处理器接口:ARM920T可以加入多达15个协处理器,如增加一个浮点运算处理器等。
7)AMBA总线接口:ARM920T内部就是通过它和外部内存及其他设备通信的。
不过不需要把所有的东西都弄得一清二楚。我们主要关注4个部分:①CPU内核:和ARM920T内部的其他部件一起工作,用来运行程序。包括操作系统内核和应用程序。②MMU:映射内存,主要用于实现虚拟内存,什么是虚拟内存后面会介绍的。③Cache:缓存内存中的指令和数据,它比内存小很多但快很多,把内存中的一部分内容放在Cache里面,这样可以加快程序的运行速度,后面也会详细介绍的。④CP15:它在ARM920T内部称为协处理器,在这里是专门用于控制MMU和Cache的。可以看到ARM920T还能通过外部协处理器接口增加其他协处理器。
CPU内核对应于图3-2中的ARM9TMDI。操作系统和应用程序都需要它执行,所以我们写操作系统内核之前,必须先仔细了解它,以及ARM920T的其他组件。后面会重点研究ARM920T的程序员模型,即指令集、工作模式、寄存器等。
MMU对应于图3-2中的指令MMU、数据MMU。为什么有两个MMU,通常情况下一个MMU不就够了吗?是的,大部分CPU确实只有一个MMU,然而这里有两个,这是因为ARM920T内部采用了哈佛架构。哈佛架构是一种将程序指令存储和数据存储分开的存储器架构。是一种并行体系架构,指令和数据可以独立存取,这样就大大提高了程序的运行性能。
Cache对应于图3-2中的指令Cache、数据Cache,同样也是因为哈佛架构才会有两个Cache。它们都是16KB。关于Cache的工作机制,后面会专门介绍,现在只要知道它是用来缓存内存中的数据的,速度比内存快很多。
CP15对应于图3-2中的CP15,称为协处理器。在ARM920T中,CP15控制着MMU和Cache,比如我们要打开或者关闭MMU、改变地址映射关系、打开或者关闭Cache、锁定Cache中的内容、使Cache中的数据变为无效等。这些功能都将通过操作CP15协处理器而达到。
总结:
1.用一张图来表示
参考博客
[1] ARM9TDMI百科
[2] arm920t架构cpu详解